我在我的Visual Studio擴展中使用SettingsManager
來存儲用戶設置。SettingsManager.GetWritableSettingsStore可用於在Visual Studio Extension中導入/導出?
SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider.GlobalProvider);
var store = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings);
我有一個自定義的WPF選項頁面as described in this post。我也想爲我設置擴展了導入/導出設置到工作,所以我跟着Creating an Options Page和Creating a Settings Category頁面,把它添加到我的包屬性:
[ProvideProfile(typeof(OptionsDialogPage), "Unit Test Boilerplate Generator", "Unit Test Boilerplate Generator Settings", 106, 107, true, DescriptionResourceID = 108)]
[ProvideOptionPage(typeof(OptionsDialogPage), "Unit Test Boilerplate Generator", "Templates", 101, 109, supportsAutomation: true)]
我成功地得到了它的出現導入/導出設置下的標題,但導出後沒有任何存儲在SettingsManager
中的數據顯示。我正在查看ProvideProfile
和ProvideOptionPage
下的選項並嘗試設置SupportsProfiles = true
,但這並沒有幫助。
我該如何掛鉤這兩個系統?
(編輯)我跑進程監視器,發現設置管理鑰匙在這裏(CollectionPath UnitTestBoilerplateGenerator):
\REGISTRY\A\{08894cfc-f3a9-f49b-133e-3453dfe7a27d}\Software\Microsoft\VisualStudio\15.0_a703f143Exp\UnitTestBoilerplateGenerator\Template_VisualStudio_Moq_File
而且內置存儲在這裏(例如,從另一個分機)選項:
\REGISTRY\A\{22e40365-b8e3-e9b2-1315-55021a1e4c3d}\Software\Microsoft\VisualStudio\15.0_a703f143\ApplicationPrivateSettings\Xavalon\XamlStyler\Core\Options\StylerOptions\NoNewLineElement
因此,它們好像存儲在不同的區域。有沒有辦法以編程方式編寫這些內置選項或將自定義CollectionPath包含在導入/導出中?
您是否嘗試過ExternalSettingsManager(https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.settings.externalsettingsmanager.aspx)?通過使用此類,您可以搜索不同範圍內的屬性和集合。它包含對SettingsStore類和WritableSettingsStore類的引用,以進一步處理作用域中的屬性和集合。 –
@ Wendy-MSFT它看起來像這是你有一個單獨的應用程序外殼時使用。您將調用哪種方法來獲取由導入/導出備份的設置? – RandomEngy
GetReadOnlySettingsStore爲請求的作用域提供SettingsStore類,該類可用於只讀操作,GetWritableSettingsStore爲請求的作用域提供WritableSettingsStore類,該類可用於讀取操作和寫入操作。我們可以使用這兩種方法來獲取所有隻讀和可寫設置。 –