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