支持用户设置

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组合categoryNamecategoryName_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,它与类别名称相同。