使用设置存储
有两种类型的设置存储:
配置设置是只读的 Visual Studio 和 VSPackage 设置。 Visual Studio 会将所有已知 .pkgdef 文件中的设置合并到此存储中。
用户设置,这些设置是可写的设置,例如在“选项”对话框中的页面上显示的设置、属性页和其他某些对话框。 Visual Studio 扩展可能会将这些扩展用于少量数据的本地存储。
本演练演示如何从配置设置存储中读取数据。 有关如何写入用户设置存储的说明,请参阅“写入用户设置应用商店”。
创建示例项目
本部分介绍如何使用菜单命令创建简单的扩展项目进行演示。
每个 Visual Studio 扩展都以包含扩展资产的 VSIX 部署项目开头。 创建名为
SettingsStoreExtension
的 Visual Studio VSIX 项目。 可以在 Visual C# /Extensibility 下的“新建项目”对话框中找到 VSIX 项目模板。现在,添加名为 设置StoreCommand 的自定义命令项模板。 在 “添加新项 ”对话框中,转到 Visual C# /Extensibility 并选择“ 自定义命令”。 在窗口底部的“名称”字段中,将命令文件名更改为 设置StoreCommand.cs。 有关如何创建自定义命令的详细信息,请参阅 使用菜单命令创建扩展
使用配置设置存储
本部分介绍如何检测和显示配置设置。
在 设置存储Command.cs 文件中,添加以下 using 指令:
using System.Collections.Generic; using Microsoft.VisualStudio.Settings; using Microsoft.VisualStudio.Shell.Settings; using System.Windows.Forms;
在
MenuItemCallback
中删除方法的正文,并添加以下行以获取配置设置存储:SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider); SettingsStore configurationSettingsStore = settingsManager.GetReadOnlySettingsStore(SettingsScope.Configuration);
ShellSettingsManager它是服务上的IVsSettingsManager托管帮助程序类。
现在了解是否已安装 Windows 电话 工具。 代码应如下所示:
private void MenuItemCallback(object sender, EventArgs e) { SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider); SettingsStore configurationSettingsStore = settingsManager.GetReadOnlySettingsStore(SettingsScope.Configuration); bool arePhoneToolsInstalled = configurationSettingsStore.CollectionExists(@"InstalledProducts\Microsoft Windows Phone Developer Tools"); string message = "Microsoft Windows Phone Developer Tools: " + arePhoneToolsInstalled; MessageBox.Show(message); }
测试代码。 生成项目并启动调试。
在实验实例的“工具”菜单上,单击“调用设置StoreCommand”。
应会看到一个消息框,显示 Microsoft Windows 电话开发人员工具:后跟 True 或 False。
Visual Studio 将设置存储在系统注册表中。
使用注册表编辑器验证配置设置
打开 Regedit.exe。
导航到 HKEY_CURRENT_U标准版R\Software\Microsoft\VisualStudio\14.0Exp_Config\InstalledProducts\。
注意
请确保查看包含 \14.0Exp_Config\ 而不是 \14.0_Config\ 的键。 运行 Visual Studio 的实验实例时,配置设置位于注册表配置单元“14.0Exp_Config”。
展开\已安装的产品\节点。 如果前面的步骤中的消息是 Microsoft Windows 电话 Developer Tools Installed: True,则 \Installed Products\ 应包含 Microsoft Windows 电话 Developer Tools 节点。 如果消息为 Microsoft Windows 电话 Developer Tools Installed: False,则 \Installed Products\ 不应包含 Microsoft Windows 电话 Developer Tools 节点。