演练:创建设置类别

在本演练中,您可以创建 Visual Studio 设置类别并使用它来保存值以及从设置文件还原值。 类是显示相关属性的一组,当 “自定义下落点”;即为导入和导出设置 " 向导的复选框。 若要启动向导, 工具 菜单上,单击 导入和导出设置。 设置保存或恢复为类别,并且,各个设置该向导未显示。 有关更多信息,请参见 在 Visual Studio 中自定义开发设置

托管包框架 (MPF)支持设置类别的创建用非常少附加的编码。 您创建 VSPackage 类别提供容器通过 subclassing Package 类。 您通过从派生来创建类别从 DialogPage 类。

备注

虽然 DialogPage 可以提供属性网格或自定义用户界面 (UI),设置管理器不使用任何。

若要开始本演练,必须先完成 演练:创建选项卡页的第一部分。 得到的可选特性网格可以检查和更改类别中的属性。 在保存在的属性类别设置文件后,将该文件以了解如何存储属性值。

系统必备

若要完成本演练,您必须安装 Visual Studio 2010 SDK。

备注

有关 Visual Studio SDK 的更多信息,请参见 扩展 Visual Studio 概述。若要查找有关中所列如何下载 Visual Studio SDK,请 Visual Studio Extensibility Developer Center 参见 MSDN 网站上。

Visual Studio 包 " 项目模板的位置

Visual Studio 包 " 项目模板可以在 新项目 对话框的三个不同位置找到:

  1. 在 Visual Basic 扩展性下。 该项的默认语言是 Visual Basic。

  2. 在 C# 扩展性下。 该项目的默认语言是 C#。

  3. 在其他项下键入扩展性。 该项的默认语言是 C++。

创建设置类别

使用 Visual Studio 包 " 项目模板,在本节中,将创建一组类别。 使用自定义下落点保存和还原设置类别的值。

创建设置类别

  1. 完成 演练:创建选项卡页的第一部分。

  2. 右击 MyToolsOptions 项目节点然后单击 设置为启动项目

  3. 打开 VSPackage.resx 文件并将这三个字符串资源:

    名称

    106

    我的类别

    107

    我的设置

    108

    OptionInteger 和 OptionFloat

    这将创建名为 categories “我的类别”的资源,对象 “我的设置”和类别图例 “OptionInteger 和 OptionFloat”。

    备注

    这三,只有类别名称不出现在导入和导出设置 " 向导。

  4. 打开在 MyToolsOptions 项目的文件 MyToolsOptionsPackage.cs 或 MyToolsOptionsPackage.vb 并添加 float 名为的属性 OptionFloat 到 OptionPageGrid 类,如下面的示例所示。

    Public Class OptionPageGrid
        Inherits DialogPage
        Private _optionInt As Integer = 256
        Private _optionFloat As Single = 3.14F
    
        <Category("My Options")>
        <Description("My integer option")>
        Public Property OptionInteger() As Integer 
            Get 
                Return _optionInt
            End Get 
            Set(ByVal value As Integer)
                _optionInt = value
            End Set 
        End Property
        <Category("My Options")>
        <Description("My float option")>
        Public Property OptionFloat() As Single 
            Get 
                Return _optionFloat
            End Get 
            Set(ByVal value As Single)
                _optionFloat = value
            End Set 
        End Property 
    End Class
    
    public class OptionPageGrid : DialogPage
    {
        private int _optionInt = 256;
        private float _optionFloat = 3.14F;
    
        [Category("My Options")]
        [Description("My integer option")]
        public int OptionInteger
        {
            get { return _optionInt; }
            set { _optionInt = value; }
        }
        [Category("My Options")]
        [Description("My float option")]
        public float OptionFloat
        {
            get { return _optionFloat; }
            set { _optionFloat = value; }
        }
    }
    

    备注

    名为 “我的类别” OptionPageGrid 类现在包含两个特性、 OptionInteger 和 OptionFloat。

  5. 添加 ProvideProfileAttributeMyToolsOptions 类并为其具有 “我的类别”,它 ObjectName “我的设置”,并将 IsToolsOptionPage 到 true. 设置 categoryResourceID、 objectNameResourceID 和 DescriptionResourceID 到已创建的相应字符串资源 ID 之前。

    <ProvideProfileAttribute(GetType(OptionPageGrid), "My Category", "My Settings", 106, 107, True, DescriptionResourceID:=108)>
    <Guid(GuidList.guidMyToolsOptionsPkgString)>
    Public NotInheritable Class MyToolsOptions
        Inherits Package
    
    [ProvideProfileAttribute(
       typeof(OptionPageGrid), "My Category", "My Settings",
       106, 107, true, DescriptionResourceID = 108)]
    [Guid(GuidList.guidMyToolsOptionsPkgString)]
    public sealed class MyToolsOptions : Package
    
  6. 生成项目并验证它在编译时不会出错。

检查系统注册表

在本节中,将检查 ProvideProfileAttribute做的系统注册表项。

检查系统注册表

  1. 启动项目按 F5 调试模式。

    这将启动 Visual Studio Exp 和写入 ProvideProfileAttribute 将参数传递到系统注册表。

    备注

    Visual Studio 的两个版本现在处于打开状态。

  2. 关闭 Visual Studio调试实例。

  3. 运行注册表编辑器并检查 HKCU 的 \Software\Microsoft\VisualStudio\10.0Exp_Config\UserSettings\MyCategory_MySettings 注册表项。 下表显示项的子项 (GUID 将不同)。

    名称

    数据

    (默认值)

    #107

    类别

    {} ba1e23e3-fecc-425d-8259-06c40cfac1b6

    说明

    #108

    Package

    {} a2192704-7d66-44b7-b61b-44ed96aace98

    默认子项值 “#107”是指字符串资源 “我的设置”。 声明子键值 “#108”是指字符串资源 “OptionInteger 和 OptionFloat”。

更正系统注册表

在本节中,您将更正 ProvideProfileAttribute做的系统注册表项。

ProvideProfileAttribute 旨在写入非托管资源的资源 ID 传递到系统注册表。 Visual Studio 资源加载程序需要非托管资源 ID 具有数字值在后期 “#”和托管资源具有数字值不位于 “#”。 因此,必须删除 “#”托管资源 ID 的。

更正系统注册表

  1. 更正 HKLM 的 \Software\Microsoft\VisualStudio\8.0Exp\UserSettings\MyCategory_MySettings 注册表项通过删除 “#”从其数字子级。 下表显示项的子项 (GUID 将不同)。

    名称

    数据

    (默认值)

    107

    类别

    {} ba1e23e3-fecc-425d-8259-06c40cfac1b6

    说明

    108

    Package

    {} a2192704-7d66-44b7-b61b-44ed96aace98

    ToolsOptionsPath

    我的类别

  2. 右击注册表项并对文件 “settings.reg”导出它在 MyToolsOptions 项目文件夹。

  3. 关闭“注册表编辑器”。

  4. 右击 MyToolsOptions 项目节点并添加 “settings.reg”到项目中。

  5. 打开 VsPkg.cs 或 VsPkg.vb 和注释 ProvideProfileAttribute 及其参数。

    '<ProvideProfileAttribute(GetType(OptionPageGrid), "My Category", "My Settings", 106, 107, True, DescriptionResourceID := 108)>
    
    //[ProvideProfileAttribute( 
    //   typeof(OptionPageGrid), "My Category", "My Settings", 
    //   106, 107, true, DescriptionResourceID = 108)]
    

    这样可防止不正确的注册表项复盖到系统注册表。

  6. 右击 MyToolsOptions 项并单击 属性

    单击 生成操作 选项并添加以下 后期生成事件命令行。 必须包括 settings.reg 文件的完整路径 (路径可能不同)。

    regedit /s D:\MyToolsOptions\MyToolsOptions\settings.reg
    
  7. 生成 MyToolsOptions 解决方案。 更正了数字子项将写入注册表中。

    备注

    ,在创建最终 VSPackage 部署时,一注册表文件您还必须执行这些更正。

检查设置文件

在本节中,将设置文件导出特性分类值。 将该文件中导入值重新特性类。

检查设置文件

  1. 启动项目按 F5 调试模式。 这将启动 Visual Studio Exp。

    备注

    Visual Studio 的两个版本现在处于打开状态。

  2. 工具 菜单的 Visual Studio Exp,单击,选项

    将打开**“选项”**对话框。

  3. 在左窗格中的树视图,展开 我的类别 然后单击 我的网格页

    选项网格出现在右窗格中。 特性类是 我的选项,因此,属性名称与 OptionFloatOptionInteger

  4. 更改 OptionFloat 为 3.1416 和 OptionInteger 的值更改为 12。 单击**“确定”**。

  5. 在**“工具”菜单上单击“导入和导出设置”**。

    导入和导出设置 出现向导。

  6. 确定 导出选定的环境设置 选中,然后单击 接下来

    选择设置导出 页。

  7. 单击 我的设置

    OptionInteger 和 OptionFloat声明 更改。

  8. 确保 我的设置 选中,然后单击 接下来

    给定一组文件 页。

  9. 将新的设置文件 MySettings.vssettings 并保存在相应的目录中。 单击**“完成”**。

    完成导出 页报表设置成功导出的。

  10. 在**“文件”菜单上,指向“打开”,然后单击“文件”**。 找到 MySettings.vssettings 并将其打开。

    可以找到您在文件的以下部分导出的属性类别 (GUID 将不同)。

    <Category name="My Category_My Settings" 
          Category="{4802bc3e-3d9d-4591-8201-23d1a05216a6}" 
          Package="{6bb6942e-014c-489e-a612-a935680f703d}" 
          RegisteredName="My Category_My Settings">
          PackageName="Company.MyToolsOptions.MyToolsOptions,          MyToolsOptions, Version=1.0.2251.20398, Culture=neutral,          PublicKeyToken=d74639816260e962">
       <PropertyValue name="OptionFloat">3.1416</PropertyValue> 
       <PropertyValue name="OptionInteger">12</PropertyValue> 
    </Category>
    

    通知完整的类名称由一个下划线的向类名称的窗体中对象名后面。 OptionFloat 和 OptionInteger 显示在类别,与其导出的值。

  11. 关闭设置文件,而不更改它。

  12. 工具 菜单上,单击 选项,展开 我的类别,单击 我的网格页 然后将 OptionFloatOptionInteger的值。 单击**“确定”**。

  13. 工具 菜单上,单击 导入和导出设置,选择 " 导入选定的环境设置,然后单击 接下来

    保存当前设置 页。

  14. 选择 不,导入新的设置 然后单击 接下来

    选择设置集合导入 页。

  15. 选择树视图中的 我的设置 节点的 MySettings.vssettings 文件。 如果文件不会出现在树视图中,单击 浏览 并找到它。 单击**“下一步”**。

    选择设置导入 出现对话框。

  16. 确保 我的设置 选中,然后单击 完成。 当 完成导入 页出现时,单击 关闭

  17. 工具 菜单上,单击 选项,展开 我的类别,单击 " 我的 网格页 并验证还原了属性类别值。

请参见

概念

用于设置类别支持

其他资源

VSPackage 状态