다음을 통해 공유


옵션 및 옵션 페이지

도구 메뉴에서 옵션을 클릭하면 옵션 대화 상자가 열립니다. 이 대화 상자의 옵션을 통칭하여 옵션 페이지라고 합니다. 탐색 창의 트리 컨트롤에는 옵션 범주가 포함되어 있으며 모든 범주에는 옵션 페이지가 있습니다. 페이지를 선택하면 해당 옵션이 오른쪽 창에 표시됩니다. 이러한 페이지를 사용하면 VSPackage 상태를 결정하는 옵션의 값을 변경할 수 있습니다.

옵션 페이지 지원

Package 클래스에서는 옵션 페이지와 옵션 범주를 만들 수 있습니다. DialogPage 클래스는 옵션 페이지를 구현합니다.

DialogPage의 기본 구현은 속성의 제네릭 그리드에 있는 사용자에게 공용 속성을 제공합니다. 페이지에서 다양한 메서드를 재정의하여 고유한 UI(사용자 인터페이스)가 있는 사용자 지정 옵션 페이지를 만들어 이 동작을 사용자 지정할 수 있습니다. 자세한 내용은 옵션 페이지 만들기를 참조하세요.

DialogPage 클래스는 옵션 페이지와 사용자 설정에 지속성을 제공하는 IProfileManager를 구현합니다. 속성이 문자열로 변환될 수 있는 경우 LoadSettingsFromStorageSaveSettingsToStorage 메서드 기본 구현은 속성 변경 사항을 레지스트리의 사용자 섹션에 유지합니다.

옵션 페이지 레지스트리 경로

기본적으로 옵션 페이지에서 관리하는 속성의 레지스트리 경로는 UserRegistryRoot, DialogPage 단어 및 옵션 페이지 클래스의 형식 이름의 조합으로 결정됩니다. 예를 들어 옵션 페이지 클래스는 다음과 같이 정의될 수 있습니다.

namespace Company.OptionsPage
{
    public class OptionsPageGeneral : DialogPage
    {
    }
}

UserRegistryRoot가 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp이면 속성 이름과 값 쌍은 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp\DialogPage\Company.OptionsPage.OptionsPageGeneral의 하위 키입니다.

옵션 페이지 자체의 레지스트리 경로는 ApplicationRegistryRoot, 단어, ToolsOptionsPages, 옵션 페이지 범주와 이름의 조합으로 결정됩니다. 예를 들어 사용자 지정 옵션 페이지에 범주인 내 옵션 페이지가 있고 ApplicationRegistryRoot가 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp이면 옵션 페이지에 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\ToolsOptionsPages\My Option Pages\Custom 레지스트리 키가 있습니다.

도구/옵션 페이지 특성 및 레이아웃

ProvideOptionPageAttribute 특성은 옵션 대화 상자의 탐색 트리에서 사용자 지정 옵션 페이지를 범주로 그룹화합니다. ProvideOptionPageAttribute 특성은 인터페이스를 제공하는 VSPackage와 옵션 페이지를 연결합니다. 다음과 같은 코드 조각을 생각해 봅시다.

[ProvideOptionPage(typeof(OptionsPageGeneral),"My Option Pages", "General", 101, 106, true)]
[ProvideOptionPage(typeof(OptionsPageCustom), "My Option Pages", "Custom", 101, 107, true)]
[Guid("B0002DC2-56EE-4931-93F7-70D6E9863940")]
public class MyPackage : Package

그러면 MyPackage에서 OptionsPageGeneral 및 OptionsPageCustom이라는 옵션 페이지 두 개를 제공합니다. 옵션 대화 상자에서 두 옵션 페이지 모두 각각 내 옵션 페이지 범주에 일반사용자 지정으로 표시됩니다.

옵션 특성 및 레이아웃

페이지에서 제공하는 UI(사용자 인터페이스)는 사용자 지정 옵션 페이지의 옵션 모양을 결정합니다. 제네릭 옵션 페이지의 옵션에 대한 레이아웃, 레이블 지정 및 설명은 다음 특성에 따라 결정됩니다.

  • CategoryAttribute는 옵션 범주를 결정합니다.

  • DisplayNameAttribute는 옵션 표시 이름을 결정합니다.

  • DescriptionAttribute는 옵션 설명을 결정합니다.

    참고 항목

    해당하는 특성인 SRCategory, LocDisplayName 및 SRDescription은 지역화에 문자열 리소스를 사용하며 관리되는 프로젝트 샘플에서 정의됩니다.

    다음과 같은 코드 조각을 생각해 봅시다.

    [Category("My Options")]
    [DisplayName("Integer Option")]
    [Description("My integer option")]
    public int OptionInteger { get; set; }
    

OptionInteger 옵션은 옵션 페이지에 내 옵션 범주의 정수 옵션으로 나타납니다. 이 옵션을 선택하면 설명 상자에 내 정수 옵션이 설명으로 나타납니다.

다른 VSPackage에서 옵션 페이지에 액세스

옵션 페이지를 호스트하고 관리하는 VSPackage는 자동화 모델을 사용하여 프로그래밍 방식으로 다른 VSPackage에서 액세스할 수 있습니다. 예를 들어 다음 코드에서 VSPackage는 옵션 페이지를 호스트하는 것으로 등록됩니다.

[ProvideOptionPage(typeof(MyOptionPage), "My Category", "My Grid Page", 0, 0, true)]
[Guid("6bb6942e-014c-489e-a612-a935680f703d")]
public sealed class MyToolsOptions : Package

다음 코드 조각은 MyOptionPage에서 OptionInteger 값을 가져옵니다.

DTE dte = (DTE)GetService(typeof(DTE));
EnvDTE.Properties props = dte.get_Properties("My Category", "My Grid Page");
int n = (int)props.Item("OptionInteger").Value;

ProvideOptionPageAttribute 특성에서 옵션 페이지를 등록하면 특성의 SupportsAutomation 인수가 true이면 페이지가 AutomationProperties 키 아래에 등록됩니다. 자동화는 이 레지스트리 항목을 검사하여 연결된 VSPackage를 찾은 다음, 호스트된 옵션 페이지(이 경우 내 그리드 페이지)를 통해 속성에 액세스합니다.

자동화 속성의 레지스트리 경로는 ApplicationRegistryRoot, 단어, AutomationProperties, 옵션 페이지 범주와 이름의 조합으로 결정됩니다. 예를 들어 옵션 페이지에 내 범주, 내 그리드 페이지 이름 및 ApplicationRegistryRoot(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp)가 있으면 자동화 속성에는 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\AutomationProperties\My Category\My Grid Page 레지스트리 키가 있습니다.

참고 항목

정식 이름인 My Category.My Grid Page는 이 키의 이름 하위 키 값입니다.