VSPackage 可以定义一个或多个设置类别,这些类别是用户选择“工具”菜单上的“导入/导出设置”命令时保留的状态变量组。 若要启用此持久性,请使用 Visual Studio SDK 中的设置 API。
称为“自定义设置点”和 GUID 的注册表项定义 VSPackage 的设置类别。 VSPackage 可以支持多个设置类别,每个类别由自定义设置点定义。
基于互作程序集(使用 IVsUserSettings 接口)的设置实现应通过编辑注册表或使用注册器脚本(.rgs 文件)创建自定义设置点。 有关详细信息,请参阅 “创建注册器脚本”。
使用托管包框架(MPF)的代码应为每个自定义设置点在 VSPackage 中附加一个 ProvideProfileAttribute,以创建自定义设置点。
如果单个 VSPackage 支持多个自定义设置点,则每个自定义设置点由单独的类实现,每个自定义设置点都由类的唯一实例 ProvideProfileAttribute 注册。 实现设置的类可以支持多个设置类别。
自定义设置注册表条目详细信息
自定义设置点在以下位置的注册表项中创建:HKLM\Software\Microsoft\VisualStudio\<版本>\UserSettings\<CSPName>,其中<CSPName>是VSPackage支持的自定义设置点的名称,<版本>是Visual Studio的版本,例如8.0。
注释
在初始化 Visual Studio 集成开发环境(IDE)时,可以使用备用根路径覆盖 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\<Version> 的根路径。 有关详细信息,请参阅 命令行选项。
注册表项的结构如下所示:
HKLM\Software\Microsoft\VisualStudio\Version<\>UserSettings\
<CSPName
>= s '#12345'
软件包 = “{XXXXXX XXXX XXXX XXXX XXXXXXXXX}”
Category = '{YYYYYY YYYY YYYY YYYY YYYYYYYYY}'
ResourcePackage = "{ZZZZZZ ZZZZ ZZZZ ZZZZ ZZZZZZZZZ}"
AlternateParent = CategoryName
| Name | 类型 | Data | Description |
|---|---|---|---|
| (默认值) | REG_SZ | 自定义设置点的名称 | 密钥的名称 <CSPName>是自定义设置点的未本地化名称。对于基于 MPF 的实现,密钥的名称是通过将构造函数的 categoryName和objectName参数合并为categoryName_objectName来获取的。该键可以是空的,也可以包含附属 DLL 中本地化字符串的引用 ID。 此值从 objectNameResourceID 参数传递到 ProvideProfileAttribute 构造函数。 |
| Package | REG_SZ | GUID | 实现自定义设置点的 VSPackage 的 GUID。 基于 MPF 的ProvideProfileAttribute类的实现,通过使用包含 VSPackage 的 objectType构造函数参数和反射来获取这个值。 |
| 类别 | REG_SZ | GUID | 标识设置类别的 GUID。 对于基于互操作程序集的实现,此值可以是任意选择的 GUID,Visual Studio IDE 会将该 GUID 传递给 ExportSettings 和 ImportSettings 方法。 这两种方法的所有实现都应验证其 GUID 参数。 对于基于 MPF 的实现,此 GUID 由 Type 实现 Visual Studio 设置机制的类获取。 |
| ResourcePackage | REG_SZ | GUID | 可选。 包含本地化字符串的附属 DLL 的路径,如果实现的 VSPackage 不提供本地化字符串。 MPF 使用反射来获取正确的资源 VSPackage,因此该 ProvideProfileAttribute 类不设置此参数。 |
| AlternateParent | REG_SZ | 包含此自定义设置点的“工具选项”页下的文件夹的名称。 | 可选。 仅当设置实现支持使用 Visual Studio SDK 中的持久性机制的工具 选项 页而不是自动化模型中的机制保存状态时,才必须设置此值。 在这些情况下,AlternateParent 键中的值是用于标识特定 ToolsOptions 页面的 topictopic.sub-topic字符串部分。 例如,对于 ToolsOptions 页 "TextEditor.Basic" ,AlternateParent 的值将是 "TextEditor"。自定义设置点由 ProvideProfileAttribute 生成时,它与类别名称相同。 |