Share via


Visual Studio 사용자 프롬프트 만들기

사용자 프롬프트는 사용자에게 선택하라는 메시지를 표시하는 간단한 UI 메커니즘입니다. 사용자에게 메시지, 선택 항목에 대한 1~3개의 단추, 해제 단추가 있는 대화 상자를 만들라는 메시지를 표시합니다.

참고 항목

사용자에게 메시지를 표시하는 데 사용되는 정확한 UI는 사용자 피드백 또는 기타 요인에 따라 향후 버전에서 변경될 수 있습니다.

일반적인 예는 확인/취소 프롬프트를 사용하여 확인을 요청하거나 사용자에게 작은 옵션 집합(3개 이하)을 선택하도록 요청하는 것입니다.

사용자는 항상 선택하지 않고 프롬프트를 해제할 수 있습니다.

사용자에게 제공되는 선택 항목은 형식 매개 변수에 정의된 TResult 형식의 값을 반환하도록 매핑됩니다.

사용자 프롬프트의 일부

Screenshot showing the parts of a user prompt.

  1. 메시지
  2. 선택 단추
  3. 해제 단추

시작하기

시작하려면 이 시작 섹션에서 프로젝트 만들기 섹션을 따릅니다.

사용자 프롬프트 작업

이 가이드에서는 사용자 프롬프트를 사용하기 위한 다음 시나리오를 설명합니다.

사용자 프롬프트 표시

새 확장성 모델을 사용하여 사용자 프롬프트를 만드는 것은 ShellExtensibility 도우미에서 이 ShowPromptAsync 메서드를 호출 하고 옵션을 전달하는 것만큼 간단합니다.

ShellExtensibility.ShowPromptAsync<TResult>()

ShowPromptAsync 메서드는 다음 세 개의 매개 변수를 사용합니다.

매개 변수 Type 필수 설명
message string 프롬프트에 대한 메시지의 텍스트입니다.
options PromptOptions<TResult> 값을 반환하도록 매핑하여 사용자 선택을 정의합니다.
cancellationToken CancellationToken 비동기 작업에 대한 CancellationToken 입니다. 트리거되면 프롬프트가 강제로 닫힙니다.

예시

다음 코드는 Command 간단한 메시지와 확인 단추가 있는 사용자 프롬프트를 보여 줍니다.

public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken cancellationToken)
{
    await this.Extensibility.Shell().ShowPromptAsync("This is a user prompt.", PromptOptions.OK, cancellationToken))
}

기본 제공 옵션 사용

미리 정의된 PromptOptions 여러 집합은 SDK에서 사용할 수 있습니다.

OK

선택 항목 기본값 Return Value
"확인" true
해제됨 false

OKCancel

선택 항목 기본값 Return Value
"확인" true
"취소" 아니요 false
해제됨 false

RetryCancel

선택 항목 기본값 Return Value
"재시도" true
"취소" 아니요 false
해제됨 false

예시

Screenshot showing a user prompt with OK.

단일 "확인" 선택 항목으로 프롬프트를 만듭니다.

public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken ct)
{
    // Asking the user to confirm an operation.
    if (!await this.Extensibility.Shell().ShowPromptAsync("Continue with executing the command?", PromptOptions.OKCancel, ct))
    {
      return;
    }
    
    ...
}

사용자가 "확인"을 클릭하면 ShowPromptAsync 대기하면 반환 true 됩니다. 사용자가 해제 단추를 클릭하면 반환됩니다 false.

기본 제공 옵션의 기본 선택 항목을 "취소"로 변경

public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken ct)
{
  // Asking the user to confirm an operation.
  if (!await this.Extensibility.Shell().ShowPromptAsync("Continue with executing the command?", PromptOptions.OKCancel.WithCancelAsDefault(), ct))
  {
    return;
  }
  
  ...
}

사용자 지정 옵션을 사용하여 프롬프트 만들기

Screenshot showing a custom user prompt.

기본 제공 옵션 외에도 사용자에게 제공되는 선택 항목과 각각에 매핑된 반환 값을 사용자 지정할 수 있습니다.

정의된 PromptOptions집합을 사용하는 대신 새 인스턴스 PromptOptions<TResult> 를 만들어서 전달합니다 ShowPromptAsync.

예시

먼저 반환 값을 정의하는 값 형식을 만듭니다.

public enum TokenThemeResult
{
  None,
  Solarized,
  OneDark,
  GruvBox,
}

그런 다음 인스턴스를 PromptOptions<TResult> 만들고 필수 message 및 인수와 cancellationToken 함께 전달 ShowPromptAsync 합니다.

public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken ct)
{
  // Custom prompt
  var themeResult = await this.Extensibility.Shell().ShowPromptAsync(
    "Which theme should be used for the generated output?",
    new PromptOptions<TokenThemeResult>
    {
      Choices =
      {
        { "Solarized Is Awesome", TokenThemeResult.Solarized },
        { "OneDark Is The Best", TokenThemeResult.OneDark },
        { "GruvBox Is Groovy", TokenThemeResult.GruvBox },
      },
      DismissedReturns = TokenThemeResult.None,
      DefaultChoiceIndex = 2,
    },
    ct);

  Debug.WriteLine($"Selected Token Theme: {themeResult}");
}

컬렉션은 Choices 열거형의 값에 TokenThemeResult 사용자 선택 항목을 매핑합니다. DismissedReturns 는 사용자가 해제 단추를 클릭하면 반환되는 값을 설정합니다. DefaultChoiceIndex 는 기본 선택을 정의하는 컬렉션의 Choices 인덱스(0부터 시작)입니다.

다음 단계

다음 샘플에서는 사용자 프롬프트를 사용하는 방법을 보여 줍니다.