다음을 통해 공유


연습: 사용자 설정 시작 페이지에서 자동화를 사용 하 여 저장

자동화 모델의 시작 페이지에서 액세스할 수 있습니다 및 사용자 설정을 유지 하는 데 자동화 모델을 사용할 수 있습니다. 이 연습을 수행 하 여 사용자가 단추를 클릭 한 다음 시작 페이지를 로드할 때마다 해당 설정을 검색 하는 경우 설정을 레지스트리에 저장 하는 컨트롤을 만들 수 있습니다. 시작 페이지 프로젝트 템플릿을 사용자 정의할 수 있는 사용자 정의 컨트롤을 포함 하 고 해당 컨트롤의 기본 시작 페이지 XAML를 호출 하기 때문에 시작 페이지 자체를 수정할 필요가 없습니다.

이 연습에서 인스턴스화된 설정 저장소의 인스턴스 수는 IVsWritableSettingsStore 인터페이스를 읽고 호출 되는 경우 다음 레지스트리 위치에 기록: HKCU\Software\Microsoft\VisualStudio\10.0\CollectionName

Visual Studio 실험 인스턴스를 실행 하는 경우 설정 저장소 읽기 및 hkcu\software\microsoft\visualstudio\10.0exp\를 쓰기CollectionName.

설정을 유지 하는 방법에 대 한 자세한 내용은 지 속성 및 Visual Studio IDE 상태 또는 상태 지 속성에 대 한 지원. 자동화 모델에 대 한 자세한 내용은 참조 하십시오. Visual Studio 환경 확장 또는 자동화 어셈블리 및 DTE2 개체 참조.

사전 요구 사항

이 연습을 완료 하려면 설치 해야 해당 Visual Studio 2010 SDK. 또한 시작 페이지 프로젝트 서식 파일을 설치 해야 합니다.

참고

Visual Studio SDK에 대 한 자세한 내용은 참조 하십시오. Visual Studio 개요를 확장합니다..Visual Studio SDK를 다운로드 하려면를 참조 하십시오 Visual Studio 확장성 개발자 센터 MSDN 웹 사이트에서.

사용 하 여 시작 페이지 프로젝트 서식 파일을 다운로드할 수 있습니다 확장 관리자.

프로젝트 설정

이 연습에서는 프로젝트를 구성 하려면

  1. 설명에 따라 시작 페이지 프로젝트 템플릿을 사용 하 여 시작 페이지 프로젝트 만들기 시작 페이지. SaveMySettings 프로젝트 이름입니다.

  2. 솔루션 탐색기, StartPageControl 프로젝트에 다음과 같은 어셈블리 참조를 추가 합니다.

    • EnvDTE EnvDTE80

    • Microsoft.VisualStudio.OLE.Interop

    • Microsoft.VisualStudio.Shell.Interop.10.0

    EnvDTE 및 EnvDTE80 어셈블리 자동화 개체 모델을 제공 합니다. Interop 어셈블리 Visual Studio 셸의 특정 개체에 액세스를 제공합니다.

  3. Mycontrol.xaml를 엽니다.

  4. 최상위 수준에서 XAML 창에서 UserControl 요소 정의 네임 스페이스 선언 후 다음 이벤트 선언을 추가 합니다.

    Loaded="OnLoaded"
    
  5. 디자인 창에서 컨트롤의 기본 영역을 클릭 한 다음 DELETE 키를 누릅니다.

    이 제거는 Border 와 요소와 나뭇잎의 최상위의 모든 것 Grid 요소입니다.

  6. 도구 상자, 드래그를 StackPanel 컨트롤이 자동으로 눈금입니다.

  7. 이제 드래그를 TextBlocka TextBox, 하는 단추는 StackPanel.

  8. 추가 X:name 에 대 한 특성의 TextBox, 하는 Click 이벤트에 대 한는 Button, 다음 예제에서와 같이.

    <StackPanel Width="300" HorizontalAlignment="Center" VerticalAlignment="Center">
        <TextBlock Width="140" FontSize="14">Enter your setting</TextBlock>
        <TextBox x:Name="txtblk" Margin="0, 5, 0, 10" Width="140" />
        <Button Click="Button_Click" Width="100">Save My Setting</Button>
    </StackPanel>
    

사용자 정의 컨트롤 구현

사용자 정의 컨트롤을 구현 하려면

  1. XAML 창에서 마우스 오른쪽 단추로 Click 의 특성의 Button 요소를 클릭 하 고 이벤트 처리기 탐색.

    Mycontrol.xaml.cs를 열고 스텁 처리기를 만들고 있는 Button_Click 이벤트.

  2. 다음 추가 using 파일 맨 문을.

    using EnvDTE80;
    using Microsoft.VisualStudio.Shell;
    using Microsoft.VisualStudio.Shell.Interop;
    using System.ComponentModel;
    
  3. 개인 추가 SettingsStore 속성을 다음과 같이 합니다.

    private IVsWritableSettingsStore _settingsStore = null;
    private IVsWritableSettingsStore SettingsStore
    {
        get
        {
            if (_settingsStore == null)
            {
                // Get a reference to the DTE from the DataContext. 
                var typeDescriptor = DataContext as ICustomTypeDescriptor;
                var propertyCollection = typeDescriptor.GetProperties();
                var dte = propertyCollection.Find("DTE", false).GetValue(
                    DataContext) as DTE2;
    
                // Get the settings manager from the DTE. 
                var serviceProvider = new ServiceProvider(
                    (Microsoft.VisualStudio.OLE.Interop.IServiceProvider)dte);
                var settingsManager = serviceProvider.GetService(
                    typeof(SVsSettingsManager)) as IVsSettingsManager;
    
                // Write the user settings to _settingsStore.
                settingsManager.GetWritableSettingsStore(
                    (uint)__VsSettingsScope.SettingsScope_UserSettings,
                    out _settingsStore);
            }
            return _settingsStore;
        }
    }
    

    이 속성에 대 한 참조를 먼저 가져옵니다는 DTE2 자동화 개체 모델을 포함 하는 인터페이스는 DataContext 사용자 컨트롤 및 다음 사용 하 여 인스턴스를 가져올 수 있는 DTE는 IVsSettingsManager 인터페이스입니다. 다음 해당 인스턴스를 사용 하 여 현재 사용자 설정을 반환 합니다.

  4. 에 있는 Button_Click 같이 이벤트 합니다.

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        int exists = 0;
        SettingsStore.CollectionExists("MySettings", out exists);
        if (exists != 1)
        {
            SettingsStore.CreateCollection("MySettings");
        }
        SettingsStore.SetString("MySettings", "MySetting", txtblk.Text);
    }
    

    "MySetting" 필드 "MySettings" 레지스트리에서 컬렉션에 텍스트 상자의 내용을 씁니다. 컬렉션에 없는 경우 새로 만들어집니다.

  5. 다음 처리기를 추가 OnLoaded 사용자 정의 컨트롤의 이벤트를 합니다.

    private void OnLoaded(Object sender, RoutedEventArgs e)
    {
        string value;
        SettingsStore.GetStringOrDefault(
            "MySettings", "MySetting", "", out value);
        txtblk.Text = value;
    }
    

    이 입력란의 텍스트를 "MySetting"의 현재 값을 설정합니다.

  6. 사용자 정의 컨트롤을 빌드합니다.

  7. 솔루션 탐색기에서 source.extension.vsixmanifest를 엽니다.

  8. 매니페스트 편집기에서 설정 제품 이름 내 설정 시작 페이지를 저장 합니다.

    표시 하는 것이 시작 페이지 설정의 시작 페이지를 사용자 지정옵션 대화 상자.

  9. Startpage.xaml를 빌드하십시오.

컨트롤 테스트

사용자 정의 컨트롤을 테스트하려면

  1. F5 키를 누릅니다.

    Visual Studio 실험 인스턴스를 엽니다.

  2. 인스턴스의 실험에 도구 메뉴를 클릭 옵션.

  3. 환경 노드를 클릭 시작, 다음에 시작 페이지 사용자 지정 목록에서 선택 [확장명]이 설치 저장 내 설정 시작 페이지.

    확인을 클릭합니다.

  4. 열려 있는 경우 선택한 다음 시작 페이지를 닫습니다 있는 보기 메뉴를 클릭 시작 페이지.

  5. 시작 페이지에서 다음을 클릭 하 여 MyControl 탭.

  6. 고양이 텍스트 상자에 입력 한 다음 저장 내 설정.

  7. 시작 페이지를 닫은 다음 다시 엽니다.

    텍스트 상자에 "고양이" 이라는 단어가 나타납니다.

  8. 단어 "고양이" "개" 라는 단어로 대체 합니다. 단추를 클릭 하지 마십시오.

  9. 시작 페이지를 닫은 다음 다시 엽니다.

    설정이 저장 되지 경우에 word "Dog" 텍스트 상자에 표시 합니다. Visual Studio 도구 windows 메모리에 유지 되기 때문에 Visual Studio 닫을 때까지, 닫혀 있는 경우에 발생 합니다.

  10. Visual Studio 실험 인스턴스를 닫습니다.

  11. F5 키를 눌러 실험 인스턴스를 다시 열 수 있습니다.

  12. 텍스트 상자에 "고양이" 이라는 단어가 나타납니다.

다음 단계

이 사용자 정의 컨트롤을 저장 하 고 다양 한 사용자 지정 설정 가져오고 설정 하는 다른 이벤트 처리기에서 서로 다른 값을 사용 하 여 검색을 수정할 수 있는 SettingsStore 속성입니다. 다른 사용으로 propertyName 매개 변수에 대 한 각 호출을 SetString, 값 서로 덮어쓰게 됩니다.

참고 항목

작업

시작 페이지

참조

DTE2

개념

시작 페이지에 Visual Studio 명령을 추가