编辑和自定义依赖项关系图

可以编辑依赖项关系图,而不会影响基础代码。当您希望关注焦点项目或将有关代码时,的想法这是有用。例如,使用属性、类或组,显示感兴趣的区域,您可以选择节点和筛选它们,更改节点和链接的样式,隐藏或删除节点和组织节点。

您可以自定义图形进一步通过编辑关系图的定向图形标记语言 (.dgml) 文件。例如,您可以编辑元素指定自定义样式,分配属性和类别为节点和链接,或对项目,如文档,URL 的节点链接,或其他关系图。

说明说明

Visual Studio 通过删除它们清理所有未使用的 DGML 元素和特性,当保存 .dgml 文件时。当您手动添加新链接时,将自动创建节点元素。当保存 .dgml 文件时,已添加到元素的所有属性可能会按字母顺序重新排列自身。有关 DGML 元素的更多信息,请参见了解定向关系图标记语言 (DGML)。

要求

主题内容

  • 选择节点或链接

  • 对节点或链接重命名

  • 隐藏或显示节点和链接

  • 添加节点和链接

  • 将注释添加到关系图

  • 删除节点

  • 组节点

  • 将关系图

  • 更改关系图的样式

  • 更改节点或链接的样式

  • 将样式从一个关系图复制到另一个关系图

  • 为节点和链接分配属性

  • 为节点和链接分配类别

  • 与节点或链接项

  • 创建常用路径的别名

选择节点或链接

若要

执行这些步骤

选择所有未选定节点

打开选定节点的快捷菜单。选择 选择插入选定内容

选择与选定的节链接的其他节点

打开选定节点的快捷菜单。选择 选择 和以下操作之一:

  • 若要选择直接链接到所选节点的其他节点,选择 传入依赖项

  • 若要选择直接从所选节点链接的其他节点,选择 传出依赖项

  • 若要选择直接向/从所选节点链接的其他节点,选择 两个

  • 若要选择其他来回所选节点链接的所有节点,请选择 已连接子关系图

  • 若要附加选择所选节点的所有子级,请选择 子级

对节点或链接重命名

  • 选择节点或链接。按 F2。在编辑框显示时,对节点或链接重命名。

    如果该标签可见,请选择该标签。

隐藏或显示节点和链接

隐藏节点从参与保留这些布局算法。默认情况下,跨组链接隐藏。跨组链接是连接跨组节点的单独的链接。如果组处于折叠状态,则关系图聚合所有跨组链接到组之间的单个链接。当展开一个组并选择的节点在组中,跨组链接在该组中将出现并显示依赖项。

警告说明警告

在共享在最终的 Visual Studio 中创建人使用 Visual Studio premium 或 Visual Studio professional 的关系图之前,请确定对 unhide 所有节点或跨组链接希望其他发现。否则,这些用户不能对 unhide 项。

隐藏或显示节点

若要

执行这些步骤

隐藏所选节点

  1. 要隐藏的选择的节点。

  2. 打开快捷菜单选中的节点或关系图的。选择 选择隐藏所选内容

隐藏未选定节点

  1. 要保持可见的选择的节点。

  2. 打开快捷菜单选中的节点或关系图的。选择 选择隐藏未选内容

显示隐藏的节点

  • 若要显示该组内的所有隐藏的节点,请确保组先展开。选择 取消隐藏子级“取消隐藏子级”图标 在组的左上角。

  • 若要显示所有隐藏的节点,打开关系图的快捷菜单。选择 所选内容全部取消隐藏

通过编辑 .dgml 文件来隐藏节点

  1. 打开关系图的快捷菜单。选择 GoToDGML

    Visual Studio 将打开关系图的 .dgml 文件。

  2. 在 <Node/> 元素中,添加下面的特性以隐藏节点:

    Visibility="Hidden"

    例如:

    <Nodes>
       <Node Id="MyNode" Visibility="Hidden"/>
    </Nodes>

显示或隐藏链接

若要

在关系图工具栏上,打开 更改链接在关系图上的呈现方式 列表或打开关系图快捷菜单。 选择:

始终显示跨组链接

显示所有跨组链接

该隐藏组之间的链接。

显示所选节点的跨组链接仅

显示所选节点的跨组链接

始终隐藏跨组链接

隐藏跨组链接

隐藏所有链接(或显示所有链接)

隐藏所有链接

若要显示所有链接,请选择 隐藏所有链接 禁用此模式。

添加节点和链接

添加新的未定义的节点

执行这些步骤

在当前指针位置

在何处选择关系图的一个位置将新的节点。按 插入

该链接到所选节点

  1. 选择源节点。

    工具栏启动位于节点之上显示。

    依赖项关系图工具栏

  2. 在工具栏上,选择 在类别中创建一个节点和此节点处于相同并添加新的链接到该关系图工具栏 - 创建包含链接的节点

  3. 选择关系图的一个位置将新的节点。

    (键盘:按直到要链接具有焦点,然后按 Alt+插入。) 的节点的 选项卡

这与现有节点链接到当前焦点

按直到要链接具有焦点节点的 选项卡。按 Alt+移动+插入

添加节点。

执行这些步骤

在解决方案中的项目

  1. 查找在 解决方案资源管理器的项目。使用 解决方案资源管理器 搜索框或浏览解决方案。若要浏览到 解决方案资源管理器的代码,请参见 查看代码的结构

    提示提示
    若要查找具有在类型或成员的依赖项,请打开该类型的快捷菜单或 解决方案资源管理器的成员。选择感兴趣的关系。解决方案资源管理器 将只显示项。指定的依赖项。
  2. 将感兴趣到关系图图面的项目。

    若要包含选定项的父容器层次结构,在使用最终时的 Visual Studio,请按住 Ctrl 键,则将项拖动到关系图上时。

    - 或 -

    解决方案资源管理器,打开 创建新的关系图文档… 列表。选择 添加到活动的依赖项关系图。若要添加父容器层次结构,选择 添加到包含包容层次结构中的有效的依赖项关系图

    Visual Studio 添加顶级代码项目的节点在您的选择。若要查看节点是否包含项目,将鼠标指针移到节点的顶部,以使尖括号 (^) 中。选择该尖括号 (^) 展开节点。若要展开所有节点,请打开关系图的快捷菜单。选择 全部展开

    说明说明
    此命令不可用,展开所有组导致了不可用的关系图时或内存问题。

项与关系图上的节点相关

打开节点的快捷菜单。选择 显示 和感兴趣的关系的种类。

对于程序集,选择:

  • 引用的程序集:将此程序集引用的程序集。外部程序集在 外部 组中显示。

  • 引用程序集:添加引用此程序集在解决方案中的程序集。

对于选件类,请选择:

  • 基于类型:对于选件类中,添加基类和实现的接口。

    对于接口,添加基接口。

  • 派生类型:对于选件类中,添加派生类。

    对于接口,添加派生的接口和实现的选件类或结构。

  • 所有基础类型:递归添加基类或接口层次结构。

  • 所有派生类型:对于选件类,请递归添加所有派生类。

    对于接口,添加所有派生的接口和递归实现选件类或结构。

  • 包容层次结构:添加父容器的层次结构。

  • 使用的类型:添加所有选件类和此选件类使用自己的成员。

  • 使用由类型:添加使用此选件类的所有选件类及其成员。

对于方法中,选择:

  • 包容层次结构:添加父容器的层次结构。

  • 调用 Methods:将此方法的方法。

  • 调用方法:添加调用此方法的方法。

  • 在基类型的重写的方法:对于重写其他方法或者实现接口方法的方法中,添加在重写的基类,并且,如果有,则实现的接口的方法的所有抽象方法或虚方法。

  • 引用的字段:将此方法引用的字段。

对于字段中,选择:

  • 包容层次结构:添加父容器的层次结构。

  • 引用方法:添加引用此字段的方法。

生成 .NET 程序集 (.dll 或 .exe) 或二进制文件

使用 体系结构资源管理器 查找并拖动项和关系到关系图上。

添加现有节点之间的链接

  1. 选择源节点。

    工具栏启动位于节点之上显示。

    依赖项关系图工具栏

  2. 在工具栏上,选择 创建从节点接下来请单击中的此节点的新链接关系图工具栏 - 创建链接。选择目标节点。

    链接显示两个节点之间。

将注释添加到关系图

  1. 选择要添加链接注释的节点。

    工具栏启动位于节点之上显示。

    依赖项关系图工具栏

  2. 在工具栏上,选择 使用指向所选节点的新链接创建新的注释节点关系图工具栏 - 创建包含链接的注释

  3. 键入注释。若要键入在新行,请按 移动+Enter

删除节点

可以从关系图中删除节点,而不会影响基础代码。若要删除节点,选择节点,然后按 删除 键。当删除节点时,其定义从 DGML (.dgml) 文件中移除。

当您从的组中删除节点,重新提取子级 按钮 “重新提取子级”图标 显示在组中。若要检索缺少节点,选择 重新提取子级“重新提取子级”图标。创建通过编辑 DGML,将未定义的节点,或者使用最终 Visual Studio 的早期版本的关系图,不支持此功能。

警告说明警告

在共享创建使用最终的 Visual Studio 中的人使用 Visual Studio premium 或 Visual Studio professional 的关系图之前,请确保您希望其他发现的所有节点都显示在关系图。否则,这些用户无法检索已删除的节点。

组节点

若要

执行这些步骤

显示容器节点作为组节点或叶节点

若要显示容器节点是叶节点,选择节点。打开您选择的快捷菜单。选择 转换为叶

若要显示容器节点作为组节点,选择节点。打开您选择的快捷菜单。选择 转换为组

若要显示任何叶节点作为组节点,打开关系图的快捷菜单。选择 打开分组

若要显示所有组节点是叶节点,打开关系图的快捷菜单。选择 关闭分组

添加一个节点到组

拖到组上的节点。

还可以拖动节点在组外。

添加一个节点到非组节点

您可以将所有节点变为组。拖到目标节点上的节点。

组选定节点

  1. 选择要分组的节点。

    工具栏启动在节点上方。

    依赖项关系图工具栏

  2. 在工具栏上,选择 将选定节点进行分组关系图工具栏 - 对所选内容进行分组

    - 或 -

    打开您选择的快捷菜单。选择 添加父组

  3. 打开新组的快捷菜单。选择“属性”。在“标签”属性中重命名该组。

具有特定类别或属性对节点进行分组

  1. 体系结构 菜单中,选择 窗口体系结构资源管理器

  2. 使用体系结构资源管理器来查找和选择要分组的所有节点。

    请参见 使用体系结构资源管理器查找代码

  3. 在当前列的右侧,选择折叠的操作列将其展开。(键盘:按 选项卡 移动焦点,直到折叠的操作列增大。)

    说明说明
    操作列中突出显示,以便在移动指针时,或者焦点,则它上面。
  4. 在操作列中,单击“包含者”。(键盘:按 选项卡 移动焦点然后使用箭头键,直到 包含者 关系已选中。)

  5. 从下一列中将容器组拖到关系图。

  6. 打开关系图的快捷菜单。选择 打开分组

依据节点的属性值对节点进行分组

  1. 将关系图另存为磁盘上的 .dgml 文件。

  2. 体系结构 菜单。选择 窗口体系结构资源管理器

  3. 体系结构资源管理器,在 文件系统下,选择 选择文件

  4. 在下一列中,选择保存的 .dgml 文件

  5. 使用 体系结构资源管理器 找到并选择要分组的所有节点。

    请参见 使用体系结构资源管理器查找代码

  6. 在当前列的右侧,选择折叠的操作列将其展开。(键盘:按 选项卡 移动焦点,直到折叠的操作列增大。)

    说明说明
    将指针移到“操作”列上时,该列会突出显示。
  7. 在操作列中,在 分组下,选择 按属性分组。(键盘:按 选项卡 移动焦点然后使用箭头键,直到 按属性分组 命令已选中。)

  8. 在下一列中,选择要用作组的属性。

    下一列将出现,并显示可用的属性值。

  9. 从下一列中将属性值组拖到关系图。

  10. 打开关系图的快捷菜单图面。选择 打开分组

移除组

选择要移除的组或组。打开您选择的快捷菜单。选择 移除组

从节点的父组开始移除节点,直至其祖父组,或者,如果节点没有祖父组,则移除组外部的节点

选择要移动的节点。打开您选择的快捷菜单。选择 从父级移除

分组节点通过编辑关系图的 .dgml 文件

  1. 若要将节点变为组,打开节点的快捷菜单。选择 GoToDGML

    Visual Studio 将打开关系图的 .dgml 文件并显示该节点的 <Node/> 元素。

    - 或 -

    添加新组:

    1. 打开关系图的空白区域的快捷菜单。选择 GoToDGML

    2. 在 <Nodes> 部分添加新的 <Node/> 元素。

  2. 在 <Node/> 元素中,添加一个 Group 特性以指定组显示为展开状态还是折叠状态。例如:

    <Nodes>
       <Node Id="MyFirstGroup" Group="Expanded" />
       <Node Id="MySecondGroup" Group="Collapsed" />
    </Nodes>
    
  3. 在 <Links> 部分,确保对于组节点和其子节点之间的每个关系,都存在具有以下特性的 <Link/> 元素:

    • 一个指定组节点的 Source 特性

    • 一个指定子节点的 Target 特性

    • 一个指定组节点和其子节点之间的 Contains 关系的 Category 特性

    例如:

    <Links>
       <Link Category="Contains" Source="MyFirstNewGroup" Target="FirstGroupChildOne" />
       <Link Category ="Contains" Source="MyFirstNewGroup" Target="FirstGroupChildTwo" />
       <Link Category ="Contains" Source="MySecondNewGroup" Target="SecondGroupChildOne" />
       <Link Category="Contains" Source="MySecondNewGroup" Target="SecondGroupChildTwo" />
    </Links>
    

    有关 Category 特性的更多信息,请参见为节点和链接分配类别。

将关系图

可以通过复制并粘贴关系图之间的节点将关系图。如果节点标识符匹配,则粘贴节点对象就象合并操作。若要使此任务更加容易,请将您在同一文件夹中要可视化的所有程序集或二进制文件,以便每个程序集或二进制文件的完整路径相同要合并的每个关系图的。

或者,您可以创建要通过执行以下步骤之一进行可视化的程序集或二进制文件的单个关系图:

  • 将程序集或双精度到同一个关系图。

    - 或 -

  • 打开 体系结构资源管理器。在 文件系统下,选择 选择文件 浏览,选择,然后打开该程序集或二进制文件。若要优化关系图,选择要可视化的特定项。完成后,选择。体系结构资源管理器 工具栏的 创建新的关系图从所有选定节点文档

更改关系图的样式

可通过编辑关系图的 .dgml 文件来更改关系图的背景色和边框颜色。若要更改节点和链接的样式,请参见更改节点和链接的样式。

  1. 从打开关系图的快捷菜单图面。选择 GoToDGML

    Visual Studio 将打开关系图的 .dgml 文件。

  2. 在 <DirectedGraph> 元素中,添加以下任何特性以更改其样式:

    若要更改

    添加以下特性

    背景色

    Background="ColorNameOrHexadecimalValue"

    边框颜色

    Stroke="StrokeValue"

    例如:

    <DirectedGraph Background="Green" xmlns="https://schemas.microsoft.com/vs/2009/dgml" >
       ...
       ...
    </DirectedGraph>
    

更改节点和链接的样式

您可以更改节点上的图标以及节点和链接的颜色。可以使用预定义的颜色和图标,也可以通过编辑关系图的 .dgml 文件来指定自定义颜色和图标。将自定义样式应用于节点和链接参见。

例如,您可以选择一种颜色来突出显示具有特定类别或属性的节点和链接。这样,您将可标识和重点显示关系图的特定区域。

将预定义的颜色或图标应用于具有特定类别或属性的节点

  1. 如果 图例 框中不可见,请打开关系图的快捷菜单。选择 显示图例

  2. 在**“图例”**框中,确定节点类别或属性是否显示在列表中。

  3. 如果列表未包括类别或属性中,选择在 图例 框中的 +节点类别节点属性和该类别或属性。

    该类别或属性现在显示在 图例 框。

    说明说明

    若要为节点创建和分配类别,请参见为节点和链接分配类别。若要为节点创建和分配属性,请参见为节点和链接分配属性。

  4. 图例 框中,打开在该类别或属性旁边的下拉列表。

  5. 使用下表来选择要更改的样式:

    若要更改

    Choose

    背景色

    背景

    轮廓颜色

    笔划

    文本颜色

    Foreground

    图标

    图标

    颜色集选取器 框中显示供您选择颜色 (或图标)。

  6. 颜色集选取器 对话框中,执行下列操作之一:

    若要应用

    执行这些步骤

    颜色集 (或图标

    打开 选择颜色 (或 图标) 设置 列表。选择颜色集 (或图标)。

    若要恢复为默认颜色值 (或图标),在 选择颜色 (图标) 设置 列表中,选择

    特定颜色(或图标)

    打开类别或属性值列表。选择一种颜色 (或图标)。

    说明说明

    您可以重新排列、删除或暂时禁用“图例”框中的样式。修改声明框参见。

将预定义的颜色应用于具有特定类别或属性的链接

  1. 如果 图例 框中不可见,请打开关系图的快捷菜单。选择 显示图例

  2. 在**“图例”**框中,确定类别或属性是否显示在列表中。

  3. 如果列表未包括类别或属性中,选择在 图例 框中的 +链接类别链接属性和该类别或属性。

    该类别或属性现在显示在 图例 框。

    说明说明

    若要为链接创建和分配类别,请参见为节点和链接分配类别。若要为链接创建和分配属性,请参见为节点和链接分配属性。

  4. 图例 框,请在该类别或属性旁边打开列表。

  5. 选择 边框 更改链接的轮廓和箭头颜色。

    颜色集选取器 框中显示供您选择颜色。

  6. 颜色集选取器 框中,执行以下操作之一:

    若要应用

    执行这些步骤

    颜色集

    打开 选择颜色设置 列表。选择颜色集。

    若要恢复为默认颜色值,在 选择颜色集 列表中,选择

    特定颜色

    打开该类型或属性值列表中选择颜色。

    说明说明

    您可以重新排列、删除或暂时禁用“图例”框中的样式。修改声明框参见。

Ee842619.collapse_all(zh-cn,VS.110).gif将自定义样式应用于节点和链接

您可以将自定义样式应用于以下各项:

  • 单个节点和链接

  • 节点和链接组

  • 基于特定条件的节点和链接组

将自定义样式应用于单个节点

  1. 打开要自定义其样式的节点的快捷菜单。选择 GoToDGML

    Visual Studio 将打开关系图的 .dgml 文件并显示该节点的 <Node/> 元素。

  2. 在 <Node/> 元素中,添加以下任何特性以自定义其样式:

    若要更改

    添加以下特性

    背景色

    Background="ColorNameOrHexadecimalValue"

    轮廓

    Stroke="ColorNameOrHexadecimalValue"

    轮廓粗细

    StrokeThickness="StrokeValue"

    文本颜色

    Foreground="ColorNameOrHexadecimalValue"

    图标

    Icon="IconFilePathLocation"

    文本大小

    FontSize="FontSizeValue"

    文本类型

    FontFamily="FontFamilyName"

    文本粗细

    FontWeight="FontWeightValue"

    文本样式

    FontStyle="FontStyleName"

    例如,可以指定 Italic 作为文本样式。

    纹理

    Style="Glass"

    - 或 -

    Style="Plain"

    形状

    使用图标希望替换形状,请将 Shape 属性设置为 None 并将 Icon 属性设置为具有图标文件的路径。

    Shape="ShapeFilePathLocation"

    例如:

    <Nodes>
       <Node Id="MyNode" Background="#FF008000" Stroke="#FF000000"
       Foreground="#FFFFFFFF" Icon="...\Icons\Globe.png"/>
    </Nodes>
    

将自定义样式应用于单个链接

  1. 在关系图上,将鼠标指针在链接的顶部。出现工具提示并标识源节点和链接的目标节点。(键盘:按Tab 直到焦点在链接。)

  2. 打开关系图的快捷菜单。选择 GoToDGML

    Visual Studio 将打开关系图的 .dgml 文件。

  3. 找到包含源节点名称和目标节点名称的 <Link/> 元素。

  4. 在 <Link/> 元素中,添加以下任何特性以自定义其样式:

    若要更改

    添加以下特性

    轮廓和箭头颜色

    Stroke="ColorNameOrHexadecimalValue"

    轮廓粗细

    StrokeThickness="StrokeValue"

    轮廓样式

    StrokeDashArray="StrokeArrayValues"

    例如:

    <Links>
       <Link Source="MyFirstNode" Target="MySecondNode" Background="Green" Stroke="#FF000000" StrokeDashArray="2,2"/>
    </Links>
    

将自定义样式应用于节点或链接组

  1. 为节点或链接分配所需的任何类别或属性。

    提示提示

    如果您有重复大多数节点或链接中的样式,可能要考虑应用于这些类别节点或链接,然后将样式应用于该类别。有关更多信息,请参见为节点和链接分配类别和为节点和链接分配属性。

  2. 打开关系图的快捷菜单图面。选择 GoToDGML

    Visual Studio 将打开关系图的 .dgml 文件。

  3. 如果 <Styles></Styles> 元素不存在,请在 <DirectedGraph></DirectedGraph> 元素下的 <Links></Links> 元素后面添加一个该元素。

  4. 在 <Styles></Styles> 元素中的 <Style/> 元素下,指定以下特性:

    • TargetType="Node | Link | Graph"

    • GroupLabel="NameInLegendBox"

    • ValueLabel="NameInStylePickerBox"

    若要将自定义样式应用于所有目标类型,请不要使用条件。

将条件样式应用于节点或链接组

  1. 在 <Style/> 元素中,添加一个包含 Expression 特性的 <Condition/> 元素,以指定返回布尔值的表达式。

    例如:

    <Condition Expression="MyCategory"/>
    

    - 或 -

    <Condition Expression="MyCategory > 100"/>
    

    - 或 -

    <Condition Expression="HasCategory('MyCategory')"/>
    

    此表达式使用以下 Backus-Naur 形式 (BNF) 语法:

    <Expression> ::= <BinaryExpression> | <UnaryExpression> | "("<Expression>")" | <MemberBindings> | <Literal> | <Number>

    <BinaryExpression> ::= <Expression> <Operator> <Expression>

    <UnaryExpression> ::= "!"<Expression> | "+" <Expression> | "-" <Expression>

    <Operator> ::= "<" | "<=" | "=" | ">=" | ">" | "!=" | "or" | "and" | "+" | "*" | "/" | "-"

    <MemberBindings> ::= <MemberBindings> | <MemberBinding> "."<MemberBinding>

    <MemberBinding> ::= <MethodCall> | <PropertyGet>

    <MethodCall> ::= <Identifier> "(" <MethodArgs> ")"

    <PropertyGet> ::= Identifier

    <MethodArgs> ::= <Expression> | <Expression> "," <MethodArgs> | <empty>

    <Identifier> ::= [^.]*

    <Literal> ::= 带单引号或双引号的字符串文本

    <Number> ::= 带可选小数点的数字字符串

    您可以指定多个 <Condition/>元素,必须都为真应用样式。

  2. 在 <Condition/> 元素后的下一行上,添加一个或多个 <Setter/> 元素,以指定要应用于满足条件的关系图、节点或链接的 Property 特性和固定 Value 特性或者计算所得的 Expression 特性。

    例如:

    <Setter Property="BackGround" Value="Green"/>
    

作为一个完整的简单示例,以下条件根据节点的 Passed 类别是设置为 True 还是 False 来指定该节点显示为绿色或红色。

<?xml version="1.0" encoding="utf-8"?>
<DirectedGraph xmlns="https://schemas.microsoft.com/vs/2009/dgml">
   <Nodes>
      <Node Id="MyFirstNode" Passed="True" />
      <Node Id="MySecondNode" Passed="False" />
   </Nodes>
   <Links>
   </Links>
   <Styles>
      <Style TargetType="Node" GroupLabel="Passed" ValueLabel="True">
         <Condition Expression="Passed='True'"/>
         <Setter Property="Background" Value="Green"/>
      </Style>
      <Style TargetType="Node" GroupLabel="Passed" ValueLabel="False">
         <Condition Expression="Passed='False'"/>
         <Setter Property="Background" Value="Red"/>
      </Style>
   </Styles>
</DirectedGraph>

下表包括一些您可以使用的示例条件:

若要

示例 DGML

根据代码的行数来设置字号,这样也会更改节点的大小。此示例使用单个条件表达式来设置多个属性:FontSize 和 FontFamily。

<?xml version="1.0" encoding="utf-8"?>
<DirectedGraph xmlns="https://schemas.microsoft.com/vs/2009/dgml">
<Nodes>
   <Node Id="Class1" LinesOfCode ="200" />
   <Node Id="Class2" LinesOfCode ="1000" />
   <Node Id="Class3" LinesOfCode ="20" />
</Nodes>
<Properties>
   <Property Id="LinesOfCode" Label="LinesOfCode" Description="LinesOfCode" DataType="System.Int32" />
</Properties>
<Styles>
   <Style TargetType="Node" GroupLabel="LinesOfCode" ValueLabel="Function">
      <Condition Expression="LinesOfCode &gt; 0" />
      <Setter Property="FontSize" Expression="Math.Max(9,Math.Sqrt(LinesOfCode))" />
      <Setter Property="FontFamily" Value="Papyrus" />
   </Style>
</Styles>
</DirectedGraph>

基于 Coverage 属性设置节点的背景色。类似于 if-else 语句,将按样式的出现顺序来计算样式。

在此示例中:

  1. 如果 Coverage 大于 80,则将 Background 属性设置为绿色。

  2. 如果 Coverage 大于 50,则基于 Coverage 属性的值将 Background 属性设置为橙色阴影。

  3. 否则基于 Coverage 属性的值将 Background 属性设置为红色阴影。

<?xml version="1.0" encoding="utf-8"?>
<DirectedGraph xmlns="https://schemas.microsoft.com/vs/2009/dgml">
<Nodes>
   <Node Id="Class1" Coverage="58" />
   <Node Id="Class2" Coverage="95" />
   <Node Id="Class3" Coverage="32" />
</Nodes>
<Properties>
   <Property Id="Coverage" Label="Coverage" Description="Code coverage as a percentage of blocks" DataType="Double" />
</Properties>
<Styles>
   <Style TargetType="Node" GroupLabel="Coverage" ValueLabel="Good">
      <Condition Expression="Coverage &gt; 80" />
      <Setter Property="Background" Value="Green" />
   </Style>
   <Style TargetType="Node" GroupLabel="Coverage" ValueLabel="OK">
      <Condition Expression="Coverage &gt; 50" />
      <Setter Property="Background" Expression="Color.FromRgb(180 * Math.Max(1, (80 - Coverage) / 30), 180, 0)" />
   </Style>
   <Style TargetType="Node" GroupLabel="Coverage" ValueLabel="Bad">
      <Setter Property="Background" Expression="Color.FromRgb(180, 180 * Coverage / 50, 0)" />
   </Style>
</Styles>
</DirectedGraph>

将 Shape 属性设置为 None 以使图标替换形状。使用 Icon 属性指定图标的位置。

<DirectedGraph xmlns="https://schemas.microsoft.com/vs/2009/dgml">
<Nodes>
   <Node Id="Automation" Category="Test" Label="Automation" />
   <Node Id="C# Provider" Category="Provider" Label="C# Provider" />
</Nodes>
<Categories>
   <Category Id="Provider" Icon="...\Icons\Module.png" Shape="None" />
   <Category Id="Test" Icon="...\Icons\Page.png" Shape="None" />
</Categories>
<Properties>
   <Property Id="Icon" DataType="System.String" />
   <Property Id="Label" Label="Label" Description="Displayable label of an Annotatable object" DataType="System.String" />
   <Property Id="Shape" DataType="System.String" />
</Properties>
<Styles>
   <Style TargetType="Node" GroupLabel="Group" ValueLabel="Has category">
      <Condition Expression="HasCategory('Group')" />
      <Setter Property="Background" Value="#80008080" />
   </Style>
   <Style TargetType="Node">
      <Setter Property="HorizontalAlignment" Value="Center" />
   </Style>
</Styles>
</DirectedGraph>

Ee842619.collapse_all(zh-cn,VS.110).gif修改“图例”框

您可以重新排列、删除或暂时禁用**“图例”**框中的样式:

  1. 打开一个样式的快捷菜单在 图例 框。

  2. 执行以下任务之一:

    若要

    Choose

    将样式上移

    上移

    将项下移

    下移

    删除项

    删除

    禁用项

    禁用

    重新激活项

    启用

将样式从一个关系图复制到另一个关系图

  1. 确定 图例 框显示在源关系图。如果不可见,请打开源关系图的空白区域的快捷菜单。选择 显示图例

  2. 打开 图例 框中的快捷菜单。选择 复制图例

  3. 粘贴到目标关系图上的说明。

为节点和链接分配属性

可以通过为节点和链接分配属性来组织节点和链接。例如,可以选择具有特定属性的节点,以便能够对这些节点进行分组、更改它们的样式或隐藏它们。

为节点分配属性

  1. 打开节点的快捷菜单。选择 GoToDGML

    Visual Studio 将打开关系图的 .dgml 文件并显示该节点的 <Node/> 元素。

  2. 在 <Node/> 元素中,指定属性的名称和属性的值。例如:

    <Nodes>
       <Node Id="MyNode" MyPropertyName="PropertyValue" />
    </Nodes>
    
  3. 将 <Property/> 元素添加到 <Properties> 部分以指定特性,例如其可见名称和数据类型:

    <Properties>
       <Property Id="MyPropertyName" Label="My Property" DataType="System.DataType"/>
    </Properties>
    

为链接分配属性

  1. 在关系图上,将鼠标指针在链接的顶部。出现工具提示并标识源节点和链接的目标节点。(键盘:按 选项卡,直到焦点在链接。)

  2. 打开关系图的快捷菜单。选择 GoToDGML

    Visual Studio 将打开关系图的 .dgml 文件。

  3. 找到包含源节点名称和目标节点名称的 <Link/> 元素。

  4. 在 <Node/> 元素中,指定属性的名称和属性的值。例如:

    <Links>
       <Link Source="MyFirstNode" Target="MySecondNode" MyPropertyName="PropertyValue" />
    </Links>
    
  5. 将 <Property/> 元素添加到 <Properties> 部分以指定特性,例如其可见名称和数据类型:

    <Properties>
       <Property Id="MyPropertyName" Label="My Property Name" DataType="System.DataType"/>
    </Properties>
    

为节点和链接分配类别

可以通过为节点分配类别来组织节点。例如,可以选择位于某些类别中的节点,以便能够对这些节点进行分组、更改它们的样式或隐藏它们。可以突出显示具有某些类别的链接。有关更多信息,请参见下列章节:

  • 组节点

  • 更改节点和链接的样式

  • 隐藏或显示节点

为节点分配类别

  • 若要分配预定义的类别 (例如,类别 1(1),打开节点的快捷菜单。选择 分类 和预定义的类别。

- 或 -

  • 创建和分配自定义类别:

    • 选择要分类的节点。按 F4 打开 属性 窗口。键入在节点的 新建类别 特性中的类名称。按 Enter

    - 或 -

    1. 打开节点的快捷菜单。选择 GoToDGML

      Visual Studio 将打开关系图的 .dgml 文件并显示该节点的 <Node/> 元素。

    2. 在 <Node/> 元素中,添加一个 Category 特性以指定类别的名称。例如:

      <Nodes>
         <Node Id="MyNode" Category="MyCategory" />
      </Nodes>
      
    3. 向 <Categories> 部分添加一个 <Category/> 元素,以便能够使用 Label 特性来指定该类别的显示文本:

      <Categories>
         <Category Id="MyCategory" Label="My Category" />
      </Categories>
      

为链接分配类别

  1. 在该图形上,将鼠标指针移到相应的链接上,以显示工具提示并确定链接的源节点和目标节点。(键盘:按 选项卡,直到焦点在链接。)

  2. 打开关系图的快捷菜单。选择 GoToDGML

    Visual Studio 将打开关系图的 .dgml 文件。

  3. 找到包含源节点名称和目标节点名称的 <Link/> 元素。

  4. 在 <Link/> 元素中,添加一个 Category 特性以指定类别的名称。例如:

    <Links>
       <Link Source="MyFirstNode" Target="MySecondNode" Category="MyCategory"
    </Links>
    
  5. 向 <Categories> 部分添加一个 <Category/> 元素,以便能够使用 Label 特性来指定该类别的显示文本:

    <Categories>
       <Category Id="MyCategory" Label="My Category" />
    </Categories>
    

可以创建分层类别,来帮助您组织节点并通过使用继承向子类别中添加特性。

创建分层类别

  • 为父类别添加一个 <Category/> 元素,然后将 BasedOn 特性添加到子类别的 <Category/> 元素。

    例如:

    <Nodes>
       <Node Id="MyFirstNode" Label="My First Node" Category= "MyCategory" />
       <Node Id="MySecondNode" Label="My Second Node" />
    </Nodes>
    <Links>
       <Link Source="MyFirstNode" Target="MySecondNode" />
    </Links>
    <Categories>
       <Category Id="MyCategory" Label="My Category" BasedOn="MyParentCategory"/>
       <Category Id="MyParentCategory" Label="My Parent Category" Background="Green"/>
    </Categories>
    

    在此示例中,MyFirstNode 的背景为绿色,因为它的 Category 特性继承 MyParentCategory 的 Background 特性。

与节点或链接项

可以链接到项目,如文档或 URL,为节点或链接到通过编辑关系图的 .dgml 文件并添加 Reference 属性为节点的 <Node/> 元素或链接的 <Link/> 元素。然后可以打开和查看从节点或链接的该目录。Reference 特性指定该内容的路径。此路径可能是相对于 .dgml 文件位置的路径,也可能是绝对路径。

警告说明警告

如果使用相对路径,因此,.dgml 文件移到其他位置,则这些路径将不再解决。当您尝试打开并查看该链接的内容,一条错误,内容将无法查看将生成。

例如,您可能希望链接以下项:

  • 若要描述某个类的更改,您可以将工作项、文档或另一个 .dgml 文件的 URL 链接到该类的节点。

  • 您可以将层关系图链接到表示软件逻辑体系结构中的层的组节点。

  • 若要显示有关公开某接口的组件的更多信息,您可以将组件图链接到该接口的节点。

  • 与 Team Foundation server 的工作项或 bug 链接节点,或者与节点相关的某些其他信息。

将项链接到节点

  1. 在关系图上,打开节点的快捷菜单。选择 GoToDGML

    Visual Studio 将打开关系图的 .dgml 文件并显示该节点的 <Node/> 元素。

  2. 执行下表中的任务之一:

    若要链接

    执行这些步骤

    单一项

    • 在 <Node/> 或 <Link/> 元素中,添加一 Reference 属性指定项目的位置。

      说明说明
      只能有每个元素的 Reference 属性。

    例如:

    <Nodes>
       <Node Id="MyNode" Reference="MyDocument.txt" />
    </Nodes>
    <Properties>
       <Property Id="Reference" Label="My Document" DataType="System.String" IsReference="True" />
    </Properties>

    多个项

    1. 在 <Node/> 或 <Link/> 元素中,添加一个新特性指定每个引用的位置。

    2. 在 <Properties> 部分:

      1. 为每个新引用类型添加一个 <Property/> 元素。

      2. 将 Id 特性设置为新引用特性的名称。

      3. 添加 IsReference 特性并将其设置为 True 其设置为项目中的 GoTo 快捷菜单。

      4. 使用 Label 属性指定显示文本在项目的 GoTo 快捷菜单。

    例如:

    <Nodes>
       <Node Id="MyNode" SequenceDiagram="MySequenceDiagram.sequencediagram" ActiveBugs="MyActiveBugs.wiq"/>
    </Nodes>
    <Properties>
       <Property Id="SequenceDiagram" Label="My Sequence Diagram" DataType="System.String" IsReference="True" />
       <Property Id="ActiveBugs" Label="Active Bugs" DataType="System.String" IsReference="True" />
    </Properties>

    在关系图上,显示的节点名称带有下划线。当您打开该节点或链接的快捷菜单,您将看到包含您的链接的项目中选择的 GoTo 快捷菜单。

  3. 使用 ReferenceTemplate 特性来指定多个引用使用的公共字符串(例如 URL),而不是在引用中重复该字符串。

    ReferenceTemplate 特性为引用的值指定占位符。在下面的示例中,ReferenceTemplate 特性中的 {0} 占位符将替换为 <Node/> 元素中的 MyFirstReference 和 MySecondReference 特性的值,以生成完整路径:

    <Nodes>
       <Node Id="MyNode" MyFirstReference="MyFirstDocument" MySecondReference="MySecondDocument"/>
       <Node Id="MySecondNode" MyFirstReference="AnotherFirstDocument" MySecondReference="AnotherSecondDocument"/>
    </Nodes>
    <Properties>
       <Property Id="MyFirstReference" Label="My First Document" DataType="System.String" IsReference="True" ReferenceTemplate="http://www.Fabrikam.com/FirstDocuments/{0}.asp"/>
       <Property Id="MySecondReference" Label="My Second Document" DataType="System.String" IsReference="True" ReferenceTemplate=" http://www.Fabrikam.com/SecondDocuments/{0}.asp"/>
    </Properties>
    
  4. 若要查看引用的项目或项从关系图,请打开快捷菜单节点或链接的。选择 GoTo 然后该项目。

创建常用路径的别名

将常用路径替换为别名有助于减小 .dgml 文件的大小和加载或保存该文件所需的时间。若要创建别名,请在 .dgml 文件的结尾处添加 <Paths></Paths> 部分。在此部分添加 <Path/> 元素以定义路径的别名:

<Paths>
   <Path Id="MyPathAlias" Value="C:\...\..." />
</Paths>

若要从 .dgml 文件中的某个元素引用别名,请用美元符号 ($) 和括号 (()) 将 <Path/> 元素的 Id 值括起来。

<Nodes>
   <Node Id="MyNode" Reference="$(MyPathAlias)MyDocument.txt" />
</Nodes>
<Properties>
   <Property Id="Reference" Label="My Document" DataType="System.String" IsReference="True" />
</Properties>

了解定向图形标记语言 (DGML)

DGML 使用简单 XML 来描述循环和非循环定向关系图。定向关系图是一组由链接或边缘连接的节点。可以使用节点和链接来表示网络结构,如软件项目中的元素。使用 DGML 可执行以下操作:可视化信息、执行复杂性分析或仅浏览和编辑定向关系图。

节点和链接称为关系图元素或简称为元素。下表描述在 DGML 中使用的元素的种类:

说明说明

在编辑 .dgml 文件时,IntelliSense 可帮助您标识对每个元素及其值可用的特性。若要指定特性中的颜色,请使用常用颜色的名称,如“Blue”或 ARGB 十六进制值(如“#ffa0b1c3”)。DGML 使用一小部分 Windows Presentation Foundation (WPF) 颜色定义格式。有关更多信息,请参见 Colors 类

元素

示例格式

<DirectedGraph></DirectedGraph>

此元素是定向关系图 (.dgml) 文档的根元素。所有其他 DGML 元素将在此元素的范围内出现。

下面的列表描述可包含的可选特性:

  • Background - 关系图的背景色

  • BackgroundImage - 用作关系图背景的图像文件的位置。

  • GraphDirection - 在关系图设置为树布局 (Sugiyama) 时排列节点,以使大多数链接都按指定的方向流动:TopToBottom、BottomToTop、LeftToRight 或 RightToLeft。请参见 浏览和重新排列依赖项关系图

  • Layout - 将关系图设置为下列布局:None、Sugiyama(树布局)、ForceDirected(快速群集)或 DependencyMatrix。请参见 浏览和重新排列依赖项关系图

  • NeighborhoodDistance - 当关系图设置为树布局或快速群集布局时,仅显示那些离开所选节点指定链接数 (1-7) 的节点。请参见 浏览和重新排列依赖项关系图

  • Title - 关系图的名称

  • ZoomLevel - 最初显示关系图时使用的缩放级别。指定一个浮点值(其中 1 表示 100%)或指定 Fit 以使关系图适合窗口的大小。

<?xml version="1.0" encoding="utf-8"?>
<DirectedGraph Title="DrivingTest" Background="Blue" xmlns="https://schemas.microsoft.com/vs/2009/dgml">
   <Nodes>
      ...
   </Nodes>
   <Links>
      ...
   </Links>
   <Categories>
      ...
   </Categories>
   <Properties>
      ...
   </Properties>
</DirectedGraph>

<Nodes></Nodes>

此可选元素包含 <Node/> 元素的列表,这些元素可定义关系图上的节点。有关更多信息,请参见 <Node/> 元素。

说明说明
在 <Link/> 元素中引用未定义的节点时,关系图会自动创建 <Node/> 元素。
<?xml version="1.0" encoding="utf-8"?>
<DirectedGraph Title="DrivingTest" xmlns="https://schemas.microsoft.com/vs/2009/dgml">
   <Nodes>
      <Node ... />
   </Nodes>
   <Links>
      <Link ... />
   </Links>
</DirectedGraph>

<Node/>

此元素定义单个节点。该节点将出现在 <Nodes><Nodes/> 元素列表内。

此元素必须包括以下特性:

  • Id - 节点的唯一名称和 Label 特性的默认值(如果未指定单独的 Label 特性)。此名称必须与引用它的链接的 Source 或 Target 特性匹配。

下面的列表描述可包含的部分可选特性:

  • Label - 节点的显示名称

  • 样式特性。将自定义样式应用于节点和链接参见。

  • Category - 标识共享此特性的元素的类别的名称。有关更多信息,请参见 <Category/> 元素。

  • Property - 标识具有相同属性值的元素的属性的名称。有关更多信息,请参见 <Property/> 元素。

  • Group - 如果节点包含其他节点,请将此特性设置为 Expanded 或 Collapsed 以显示或隐藏其内容。必须有一个 <Link/> 元素,此元素包含 Category="Contains" 特性并将父节点指定为源节点,而将子节点指定为目标节点。将节点组织为组参见。

  • Visibility - 将此特性设置为 Visible、Hidden 或 Collapsed。使用 System.Windows.Visibility。隐藏或显示节点参见。

  • Reference - 将此特性设置为链接到文档或 URL。将项链接到节点参见。

<?xml version="1.0" encoding="utf-8"?>
<DirectedGraph Title="DrivingTest" xmlns="https://schemas.microsoft.com/vs/2009/dgml">
   <Nodes>
      <Node Id="Driver" Label="Student" Category="Person" />
      <Node Id="Passenger" Label="Instructor" Category="Person" />
      <Node Id="Car" Label="Car" Category="Automobile" />
      <Node Id="Truck" Label="Truck" Category="Automobile" />
   </Nodes>
   <Links>
      <Link ... />
   </Links>
   <Categories>
      <Category Id="Person" Background="Orange" />
      <Category Id="Automobile" Background="Yellow"/>
   </Categories>
</DirectedGraph>

<Links></Links>

此元素包含 <Link> 元素的列表,这些元素可定义两个节点之间的链接。有关更多信息,请参见 <Link/> 元素。

<?xml version="1.0" encoding="utf-8"?>
<DirectedGraph Title="DrivingTest" xmlns="https://schemas.microsoft.com/vs/2009/dgml">
   <Links>
      <Link ... />
   </Links>
</DirectedGraph>

<Link/>

此元素定义一个用于将源节点连接到目标节点的链接。该链接将出现在 <Links></Links> 元素列表内。

说明说明
如果此元素引用未定义的节点,则关系图文档将自动创建具有指定特性(如果有)的节点。

此元素必须包括以下特性:

  • Source - 链接的源节点

  • Target - 链接的目标节点

下面的列表描述可包含的部分可选特性:

  • Label - 链接的显示名称

  • 样式特性。将自定义样式应用于节点和链接参见。

  • Category - 标识共享此特性的元素的类别的名称。有关更多信息,请参见 <Category/> 元素。

  • Property - 标识具有相同属性值的元素的属性的名称。有关更多信息,请参见 <Property/> 元素。

<?xml version="1.0" encoding="utf-8"?>
<DirectedGraph Title="DrivingTest" xmlns="https://schemas.microsoft.com/vs/2009/dgml">
   <Nodes>
      <Node Id="Driver" Label="Student" Category="Person" />
      <Node Id="Passenger" Label="Instructor" Category="Person" />
      <Node Id="Car" Label="Car" Category="Automobile" />
      <Node Id="Truck" Label="Truck" Category="Automobile" />
   </Nodes>
   <Links>
      <Category Id="Person" Background="Orange" />
      <Category Id="Automobile" Background="Yellow"/>
      <Link Source="Driver" Target="Car" Label="Passed" Stroke="Black" Background="Green" Category="PassedTest" />
      <Link Source="Driver" Target="Truck" Label="Failed" Stroke="Black" Background="Red" Category="PassedTest" />
   </Links>
</DirectedGraph>

<Categories></Categories>

此元素包含 <Category/> 元素的列表。有关更多信息,请参见 <Category/> 元素。

<?xml version="1.0" encoding="utf-8"?>
<DirectedGraph Title="DrivingTest" xmlns="https://schemas.microsoft.com/vs/2009/dgml">
   <Categories>
       <Category ... />
   </Categories>
</DirectedGraph>

<Category/>

此元素定义 Category 特性,此特性用于标识共享此特性的元素。Category 特性可用于组织关系图元素,通过继承提供共享特性或定义其他元数据。

此元素必须包括以下特性:

  • Id - 类别的唯一名称和 Label 特性的默认值(如果未指定单独的 Label 特性)。

下面的列表描述可包含的部分可选特性:

  • Label - 类别的读者友好名称。

  • BasedOn - 当前元素的 <Category/> 继承自的父类别。

    在此元素的示例中,FailedTest 类别从 PassedTest 类别继承其 Stroke 特性。请参见“创建分层类别”在 为节点和链接分配类别。

类别还提供一些基本模板行为,这些行为用于控制节点和链接在关系图上显示的外观。将自定义样式应用于节点和链接参见。

<?xml version="1.0" encoding="utf-8"?>
<DirectedGraph Title="DrivingTest" xmlns="https://schemas.microsoft.com/vs/2009/dgml">
   <Nodes>
      <Node Id="Driver" Label="Driver" Category="Person" />
      <Node Id="Car" Label="Car" Category="Automobile" />
      <Node Id="Truck" Label="Truck" Category="Automobile" />
      <Node Id="Passenger" Category="Person" />
   </Nodes>
   <Links>
      <Link Source="Driver" Target="Car" Label="Passed" Category="PassedTest" />
      <Link Source="Driver" Target="Truck" Label="Failed" Category="FailedTest" />
   </Links>
   <Categories>
      <Category Id="Person" Background="Orange" />
      <Category Id="Automobile" Background="Yellow"/>
      <Category Id="PassedTest" Label="Passed" Stroke="Black" Background="Green" />
      <Category Id="FailedTest" Label="Failed" BasedOn="PassedTest" Background="Red" />
   </Categories>
</DirectedGraph>

<Properties></Properties>

此元素包含 <Property/> 元素的列表。有关更多信息,请参见 <Property/> 元素。

<?xml version="1.0" encoding="utf-8"?>
<DirectedGraph Title="DrivingTest" xmlns="https://schemas.microsoft.com/vs/2009/dgml">
   <Properties>
       <Property ... />
   </Properties>
</DirectedGraph>

<Property/>

此元素定义 Property 特性,此特性可用于将值分配给任何 DGML 元素或特性(包括类别和其他属性)。

此元素必须包括以下特性:

  • Id - 该属性的唯一名称和 Label 特性的默认值(如果未指定单独的 Label 特性)。

  • DataType - 该属性存储的数据的类型

如果您希望该属性在“属性”窗口中显示,请使用 Label 属性以指定该属性的显示名称。

为节点和链接分配属性参见。

<?xml version="1.0" encoding="utf-8"?>
<DirectedGraph Title="DrivingTest" xmlns="https://schemas.microsoft.com/vs/2009/dgml">
   <Nodes>
      <Node Id="Driver" Label="Driver" Category="Person" DrivingAge="18"/>
      <Node Id="Car" Label="Car" Category="Automobile" />
      <Node Id="Truck" Label="Truck" Category="Automobile" />
      <Node Id="Passenger" Category="Person" />
   </Nodes>
   <Links>
      <Link Source="Driver" Target="Car" Label="Passed" Category="PassedTest" />
      <Link Source="Driver" Target="Truck" Label="Failed" Category="FailedTest" />
   </Links>
   <Categories>
      <Category Id="Person" Background="Orange" />
      <Category Id="Automobile" Background="Yellow"/>
      <Category Id="PassedTest" Label="Passed" Stroke="Black" Background="Green" />
      <Category Id="FailedTest" Label="Failed" BasedOn="PassedTest" Background="Red" />
   </Categories>
   <Properties>
       <Property Id="DrivingAge" Label="Driving Age" DataType="System.Int32" />
   </Properties>
</DirectedGraph>

请参见

概念

在依赖项关系图上可视化代码依赖项

浏览和重新排列依赖项关系图