建議使用 Visual Studio 2017

逐步解說︰ 在起始頁面上儲存使用者設定

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

您可以保存使用者設定起始頁。 按照本逐步解說,您可以建立當使用者按一下按鈕時,並接著會擷取該設定,每次啟動 頁面載入時,設定儲存至登錄的控制項。 起始頁專案範本包含可自訂的使用者控制項,以及預設啟動頁面 XAML 呼叫該控制項,因為您沒有修改 [啟動] 頁面本身。

本逐步解說中具現化的設定存放區是執行個體IVsWritableSettingsStore介面,以便讀取和寫入呼叫時的下列登錄位置︰ HKCU\Software\Microsoft\VisualStudio\14.0\集合名稱

當正在執行中的 Visual Studio 的實驗執行個體時,設定存放區來讀取和寫入 HKCU\Software\Microsoft\VisualStudio\14.0Exp\集合名稱。

如需如何保存設定的詳細資訊,請參閱擴充使用者設定和選項

System_CAPS_ICON_note.jpg 注意

若要依照本逐步解說執行作業,您必須安裝 Visual Studio SDK。 如需詳細資訊,請參閱Visual Studio SDK

您可以使用下載的入門 頁面上的專案範本擴充管理員

若要設定在這個逐步解說專案

  1. 中所述,使用入門 頁面上的專案範本,建立起始頁專案建立您自己起始頁。 將專案命名為SaveMySettings

  2. 方案總管 中,加入下列組件參考加入 StartPageControl 專案︰

    • EnvDTE

    • EnvDTE80

    • Microsoft.VisualStudio.OLE.Interop

    • Microsoft.VisualStudio.Shell.Interop.11.0

  3. 開啟 MyControl.xaml。

  4. 從 [XAML] 窗格中,在最上層UserControl項目定義之後,加入下列事件宣告的命名空間宣告。

    Loaded="OnLoaded"  
    
    
  5. 在 [設計] 窗格中,按一下控制項的主要區域,然後按 DELETE 鍵。

    這會移除框線項目和它,而且只有最上層的分葉中的所有方格項目。

  6. 工具箱,拖曳StackPanel方格控制項。

  7. 現在,請將TextBlock文字方塊,和一個按鈕StackPanel

  8. 新增X:name屬性文字方塊,和Click事件按鈕,如下列範例所示。

    <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屬性按鈕項目,然後再按一下 巡覽至事件處理常式

    這會開啟 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);  
    }  
    
    

    這會將文字方塊的內容寫入登錄中的 「 MySettings 」 集合中的 「 MySetting 」 欄位。 如果集合不存在,則會建立它。

  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. 「 貓 」 這個字取代成"Dog"這個字。 請勿按的按鈕。

  9. 關閉 [啟動] 頁面,然後再重新開啟它。

    "Dog"這個字應該顯示在文字方塊中,即使未儲存的設定。 這是因為 Visual Studio 將工具視窗保留在記憶體中,即使它們已關閉,直到關閉 Visual Studio 本身。

  10. 關閉 Visual Studio 的實驗執行個體。

  11. 按 F5 以重新開啟的實驗執行個體。

  12. 「 貓 」 這個字應該會顯示在文字方塊中。

您可以修改此使用者控制項,來儲存和擷取任何數目的自訂設定來取得及設定使用不同的值,從不同的事件處理常式SettingsStore屬性。 只要您使用不同propertyName參數,每次呼叫SetString,值不會覆寫另一個在登錄中。

EnvDTE80.DTE2
建立您自己的起始頁
將 Visual Studio 命令加入至 [開始] 頁面

顯示: