寫入使用者設定存放區
發行︰ 2016年2月
如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件。
使用者設定為可寫入的設定,像是在工具 / 選項對話方塊中,屬性] 視窗中,並確定其他對話方塊。 Visual Studio 擴充功能可以使用這些儲存小量的資料。 本逐步解說示範如何加入 [記事本] Visual Studio 外部工具為讀取和寫入使用者設定存放區。
備份您的使用者設定
您必須能夠重設的外部工具設定,以便您可以偵錯,並重複此程序。 若要這樣做,您必須儲存原始設定,因此您可以視需要予以還原。
開啟 Regedit.exe。
瀏覽至 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0Exp\External 工具\。
注意
請確定您正在查看該索引鍵包含 \14.0Exp\ 和不 \14.0\。 當您執行的 Visual Studio 的實驗執行個體時,您的使用者設定是在登錄區 「&14;.0Exp 」。
\External Tools\ 子機碼,以滑鼠右鍵按一下,然後按一下 [匯出。 請確定選取分支已選取。
儲存產生的外部 Tools.reg 檔案。
稍後,當您想要重設為外部工具設定,選取 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0Exp\External 工具的登錄機碼,然後按一下 [刪除快顯功能表上。
當確認機碼刪除對話方塊出現時,按一下是。
以滑鼠右鍵按一下您稍早儲存的外部 Tools.reg 檔案中,按一下開啟,然後按一下 [登錄編輯程式。
寫入使用者設定存放區
建立名為 UserSettingsStoreExtension VSIX 專案,並新增名為 UserSettingsStoreCommand 自訂命令。 如需如何建立自訂命令的詳細資訊,請參閱建立擴充功能的功能表命令
在 UserSettingsStoreCommand.cs,新增下列 using 陳述式︰
using System.Collections.Generic; using Microsoft.VisualStudio.Settings; using Microsoft.VisualStudio.Shell.Settings;
在 MenuItemCallback,刪除方法的主體,並取得的使用者設定存放區,,如下所示︰
private void MenuItemCallback(object sender, EventArgs e) { SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider); WritableSettingsStore userSettingsStore = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings); }
現在找出 [記事本] 是否已設為 [外部工具。 您必須逐一查看所有外部的工具,來判斷是否 ToolCmd 設定 「 記事本 」,如下所示︰
private void MenuItemCallback(object sender, EventArgs e) { SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider); WritableSettingsStore userSettingsStore = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings); // Find out whether Notepad is already an External Tool. int toolCount = userSettingsStore.GetInt32("External Tools", "ToolNumKeys"); bool hasNotepad = false; CompareInfo Compare = CultureInfo.InvariantCulture.CompareInfo; for (int i = 0; i < toolCount; i++) { if (Compare.IndexOf(userSettingsStore.GetString("External Tools", "ToolCmd" + i), "Notepad", CompareOptions.IgnoreCase) >= 0) { hasNotepad = true; break; } } }
如果尚未設定成外部工具 [記事本],請以下列方式設定︰
private void MenuItemCallback(object sender, EventArgs e) { SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider); WritableSettingsStore userSettingsStore = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings); // Find out whether Notepad is already installed. int toolCount = userSettingsStore.GetInt32("External Tools", "ToolNumKeys"); bool hasNotepad = false; CompareInfo Compare = CultureInfo.InvariantCulture.CompareInfo; for (int i = 0; i < toolCount; i++) { if (Compare.IndexOf(userSettingsStore.GetString("External Tools", "ToolCmd" + i), "Notepad", CompareOptions.IgnoreCase) >= 0) { hasNotepad = true; break; } } string message = (hasNotepad) ? "Notepad already installed" : "Installing Notepad"; if (!hasNotepad) { userSettingsStore.SetString("External Tools", "ToolTitle" + toolCount, "&Notepad"); userSettingsStore.SetString("External Tools", "ToolCmd" + toolCount, "C:\\Windows\\notepad.exe"); userSettingsStore.SetString("External Tools", "ToolArg" + toolCount, ""); userSettingsStore.SetString("External Tools", "ToolDir" + toolCount, "$(ProjectDir)"); userSettingsStore.SetString("External Tools", "ToolSourceKey" + toolCount, ""); userSettingsStore.SetUInt32("External Tools", "ToolOpt" + toolCount, 0x00000011); userSettingsStore.SetInt32("External Tools", "ToolNumKeys", toolCount + 1); } }
測試程式碼。 請記住,它會將新增 「 記事本 」 外部工具,因此您必須回復登錄第二次執行之前。
建置程式碼,並開始偵錯。
在工具] 功能表上,按一下 [叫用 UserSettingsStoreCommand。 這會將 [記事本] 來新增工具功能表。
現在您應該會看到 [記事本] 的工具 / 選項] 功能表,並按一下記事本應該啟動記事本的執行個體。