如何:定义自定义建模工具箱项

为了能轻松地基于您经常使用的模式创建一个或一组元素,您可以在 Visual Studio 旗舰版 中向建模图的工具箱中添加新工具。 可以将这些工具箱项分发给其他 Visual Studio 旗舰版 用户。

例如,可以创建一个自定义工具,用于创建类似以下元素:

  • 链接到 .NET 配置文件的包以及具有 .NET 构造型的类。

  • 通过关联链接的一对类,用于表示“观察者”模式。

可以使用此方法创建元素工具。 即,可创建从工具箱拖到关系图中的工具。 不能创建连接线工具。

定义自定义建模工具

定义自定义建模工具

  1. 创建包含一个元素或一组元素的 UML 关系图。

    • 这些元素之间可具有关系,并可具有如端口、特性、操作或插针之类的附属元素。

    • 在解决方案资源管理器中,将关系图的名称更改为希望赋予新工具的名称。

  2. 保存该关系图。

  3. 使用 Windows 资源管理器将两个关系图文件复制到以下文件夹或任何子文件夹中:

    YourDocuments**\Visual Studio 2010\Architecture Tools\Custom Toolbox Items**

    • 如果此文件夹尚不存在,请创建该文件夹。 您可能必须同时创建 Architecture ToolsCustom Toolbox Items

    • 复制两个关系图文件,一个文件的名称以“…diagram”结尾,另一个文件的名称以“…diagram.layout”结尾

    • 您可以随意创建任意多个自定义工具。 请为每个工具使用一个关系图。

  4. (可选)按照如何定义自定义工具的属性中所述创建一个 .tbxinfo 文件,然后将该文件添加到同一目录中。 这样,您就可以定义工具箱图标、工具提示等。

    • 单个 .tbxinfo 文件可用于定义多个工具。 该文件可以引用子文件夹中的关系图文件。
  5. 重新启动 Visual Studio。 附加工具将显示在适当类型关系图的工具箱中。

自定义工具将复制的内容

自定义工具将复制源关系图的大部分功能:

  • 名称。 从工具箱创建项后,必要时会在名称末尾添加一个数字以避免在同一命名空间中出现重复名称。

  • 颜色、大小和形状

  • 构造型和包配置文件

  • 属性值,如 Is Abstract

  • 链接的工作项

  • 关系的重数和其他属性

  • 形状的相对位置。

将不会在自定义工具中保留下列功能:

  • 简单形状。 这些形状与模型元素不相关,可以在某些类型的关系图上绘制它们。

  • 连接线路由。 如果您手动路由连接线,则在使用您的工具时将不会保留该路由。 一些嵌套形状(如端口)的位置不会相对于其所有者保留。

如何定义自定义工具的属性

在工具箱信息文件 (.tbxinfo) 中可为一个或多个自定义工具指定工具箱名称、图标、工具提示、选项卡和帮助关键字。 为其指定任何名称,如 MyTools.tbxinfo

该文件的一般形式如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<customToolboxItems xmlns="https://schemas.microsoft.com/visualstudio/2010/ArchitectureTools/CustomToolboxItems">
  <customToolboxItem fileName="MyObserverTool.classdiagram">
    <displayName>
       <value>Observer Pattern</value>
    </displayName>
    <tabName>
       <value>UML Class Diagram</value>
    </tabName>
    <image><bmp fileName="ObserverPatternIcon.bmp"/></image>
    <f1Keyword>
      <value>ObserverPatternHelp</value>
    </f1Keyword>
    <tooltip>
       <value>Create a pair of classes</value>
    </tooltip>
  </customToolboxItem>
</customToolboxItems>

每项的值可为:

  • 如示例中所示,工具箱图标的值为 <bmp fileName="…"/>,而其他项的值为 <value>string</value>。

- 或 -

  • <resource fileName="Resources.dll"

    baseName="Observer.resources" id="Observer.tabname" />

    在本例中,您提供一个已编译的程序集,其中的字符串值已编译为资源。

为每个您要定义的工具箱项添加一个 <customToolboxItem> 节点。

.tbxinfo 文件中的节点如下所示。 每个节点都有一个默认值。

节点名称

定义

displayName

工具箱项的名称。

tabName

应在其中显示该项的工具箱选项卡。 可以指定此类型关系图的常规选项卡的名称,或指定一个单独的名称。

image

位图文件 (.bmp) 的位置,它的高度和宽度必须为 16,颜色深度为 24 位。

f1Keyword

用于定位帮助主题的关键字。

tooltip

此工具的工具提示。

您可在 Visual Studio 中编辑位图文件,并在属性窗口中将该位图的高度和宽度设置为 16。

提示

如果您在单独试用关系图文件后开始使用 .tbxinfo 文件,可能会发现工具箱同时包含新旧版本的工具箱项。 如果在 .tbxinfo 文件中键入了错误的关系图文件名称,则也会出现这种情况。 如果出现这种情况,请右击工具箱项,然后单击“重置工具箱”。 自定义工具箱项将消失。 重新启动 Visual Studio,此时将显示正确的自定义项。

如何通过 Visual Studio 扩展分发工具箱项

通过将工具箱项打包到 Visual Studio 扩展 (VSIX) 中,可以将它们分发给其他 Visual Studio 用户。 您可以将命令、配置文件以及其他扩展打包到同一个 VSIX 文件。有关更多信息,请参见 Deploying Visual Studio Extensions(部署 Visual Studio 扩展)。

通常使用 VSIX 项目模板来生成 Visual Studio 扩展。 若要执行此操作,必须已安装 Visual Studio SDK。

向 Visual Studio 扩展添加工具箱项

  1. 创建和测试一个或多个自定义工具。

  2. 创建 .tbxinfo 文件,该文件引用这些工具。

  3. 打开一个现有 Visual Studio 扩展项目。

    - 或 -

    定义一个新的 Visual Studio 扩展项目。

    1. 在**“文件”菜单上指向“新建”,再单击“项目”**。

    2. 在**“新建项目”对话框的“已安装的模板”下,展开“Visual C#”,单击“扩展性”,再单击“VSIX 项目”。 设置项目名称,然后单击“确定”**。

  4. 将您的工具箱定义添加到项目中。 包括 .tbxinfo 文件、关系图文件、位图文件以及所有资源文件,并确保它们包含在 VSIX 中。

    • 在解决方案资源管理器中,右击项目,指向**“添加”,然后单击“现有项”。 在对话框中,设置“对象类型: 所有文件”。 找到这些文件,将它们全部选中,然后单击“添加”**。

      提示

      在此项目中,无法在模型编辑器中打开关系图文件。

  5. 设置刚添加的所有文件的以下属性。 通过在解决方案资源管理器中选择所有文件的属性,可以同时设置这些属性。 注意不要更改项目中其他文件的属性。

    复制到输出目录 = 始终复制

    生成操作 = 内容

    包括在 VSIX 中 = true

  6. 打开 source.extension.vsixmanifest。 它将在扩展清单编辑器中打开。

  7. 在**“内容”下,添加一行来描述自定义工具。 单击“添加内容”**,然后设置对话框中的字段,如下所示:

    • 内容类型 = 自定义扩展类型

    • 类型 = Microsoft.VisualStudio.ArchitectureTools.CustomToolboxItems

    • 路径 = 项目中的文件。 选择 .tbxinfo 文件,例如 MyTools.tbxinfo

  8. 可根据需要设置**“产品名称”**以及其他字段。

  9. 生成项目。

  10. 在 Windows 资源管理器中,打开文件夹 .\bin\Debug.\bin\Release 以查找 .vsix 文件。 此文件是 Visual Studio 扩展文件。 可以将该文件安装到您的计算机上,还可以发送给其他 Visual Studio 用户。

从 Visual Studio 扩展安装自定义工具

  1. 在 Windows 资源管理器中双击 .vsix 文件,或者在 Visual Studio 中打开该文件。

  2. 在显示的对话框中,单击**“安装”**。

  3. 若要卸载或临时禁用该扩展,请从**“工具”菜单打开“扩展管理器”**。

本地化

您可以创建一个扩展,使其安装在另一台计算机上时,能够以目标计算机的语言显示工具名称和工具提示。

提供多种语言的工具版本

  1. 创建包含一个或多个自定义工具的 Visual Studio 扩展项目。

    .tbxinfo 文件中,使用资源文件方法定义工具的 displayName、工具箱 tabName 和工具提示。 创建在其中定义这些字符串的资源文件,将该文件编译为一个程序集,然后从 tbxinfo 文件引用该程序集。

  2. 创建包含资源文件的附加程序集,这些资源文件具有其他语言的字符串。

  3. 将每个附加程序集放入名称为对应语言区域性代码的文件夹中。 例如,将法语版本的程序集放入名为 fr 的文件夹中。

  4. 应使用非特定区域性代码(通常为两个字母),而不使用特定区域性代码(如 fr-CA)。 有关区域性代码的更多信息,请参见 CultureInfo.GetCultures method(CultureInfo.GetCultures 方法),其中提供了区域性代码的完整列表。

  5. 生成 Visual Studio 扩展并进行分发。

  6. 在另一台计算机上安装扩展时,会自动加载用户的本地区域性版本的资源文件。 如果未提供用户区域性的版本,则会使用默认资源。

不能使用此方法来安装不同版本的原型关系图。 元素和连接线的名称在每个安装中都相同。

其他工具箱操作

通常,在 Visual Studio 中,您可以通过重命名工具、将工具移到其他工具箱选项卡以及删除工具来个性化设置工具箱。对于使用本主题中描述的过程创建的自定义建模工具,这些更改不会持久保留。 重新启动 Visual Studio 后,自定义工具将在定义的工具箱位置以其定义的名称重新显示。

此外,如果您执行**“重置工具箱”**命令,则自定义工具将消失。 但是,重新启动 Visual Studio 后,它们又将重新显示。

请参见

概念

扩展 UML 模型和关系图

如何:定义用于扩展 UML 的配置文件

如何:在建模图上定义菜单命令

如何:为 UML 模型定义验证约束