支持用户设置

适用范围:yesVisual Studio noVisual Studio for Mac noVisual 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 会将其传递给 ExportSettingsImportSettings 方法。 这两种方法的所有实现都应验证其 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 ,它与类别名称相同。