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