我在我的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类,该类可用于读取操作和写入操作。我们可以使用这两种方法来获取所有只读和可写设置。 –