如何:使用依赖项关系图浏览代码

在 Visual Studio 旗舰版中,使用依赖项关系图可帮助您了解有关现有代码中的组织和关系的更多信息。 这些关系图将结构表示为节点,并将关系表示为链接(显示为节点之间的箭头)。 若要生成关系图,请参见如何:生成 .NET 代码的依赖项关系图

下面的示例演示关系图如何将结构和关系表示为节点和链接:

带有节点和链接的依赖项图

关系图上的节点和链接

下面的示例演示关系图如何将结构和包容关系显示为组:

带有分组节点的依赖项图

关系图上的分组节点

警告

关系图只显示成功生成的代码的依赖关系。 如果组件出现生成错误,则这些组件及其内容将不会出现。 因此,在基于关系图做出体系结构决策时,请确保组件实际生成并且有依赖项。

主题内容

  • 浏览关系图上的依赖关系

  • 查找复杂区域

浏览关系图上的依赖关系

关系图上的依赖关系由以下各种链接表示:

  • 单独的链接表示两个节点之间的单一依赖关系。

  • 聚合链接表示在两个组之间按同一方向行进的所有依赖关系。

跨组链接只是跨不同组的两个节点之间的链接。

提示

默认情况下,关系图只为所选的节点显示跨组链接。 若要始终显示这些链接,请在关系图工具栏上,单击“更改跨组链接在关系图上的呈现方式”按钮,然后单击“显示所有跨组链接”。 如果图形工具栏不可见,请在“视图”上,指向“工具栏”,然后单击“定向关系图”

使用以下任务来浏览感兴趣的依赖关系:

若要

请执行这些步骤

查看链接表示的依赖关系的列表

  • 将指针移到链接上,以查看列出这些依赖关系的工具提示。

按名称查找节点

用于在多个级别的分组节点中进行搜索。

  • Ctrl+F

查找链接的源或目标

如果有太多链接而无法轻松地看到特定链接的源或目标,请使用此方法。

  1. 在关系图工具栏上,将关系图布局更改为树布局或快速群集布局。

    注意注意
    如果图形工具栏不可见,请在“视图”上,指向“工具栏”,然后单击“定向关系图”

    有关更多信息,请参见如何:在关系图文档中浏览和导航

  2. 将指针移到链接上。

    Visual Studio 在链接上显示两个箭头按钮。 Visual Studio 还会显示标识链接的源和目标的工具提示。

  3. 单击指向要跟踪的方向的箭头按钮。

    根据所选的方向,源或目标将显示为选定状态。

检查跨不同组中的节点的依赖关系

  1. 展开感兴趣的组,以便能够查看其所有子级。

  2. 选择感兴趣的所有节点(包括其子级)。

    若要选择组中的所有节点,请在按住鼠标左键的同时在该组周围绘制一个矩形。 若要选择关系图上的所有节点,请按 Ctrl+A

    关系图将显示所选节点之间的跨组链接。

    注意注意
    若要始终显示跨组链接,请在关系图工具栏上,单击“更改跨组链接在关系图上的呈现方式”按钮,然后单击“显示所有跨组链接”。如果图形工具栏不可见,请在“视图”上,指向“工具栏”,然后单击“定向关系图”

检查聚合链接后面的依赖关系

注意注意
仅在链接的每一端都连接到程序集时,此操作才适用。如果没有程序集信息,则无法创建关系图。
  1. 在关系图工具栏上,将关系图布局更改为树布局或快速群集布局。

    注意注意
    如果图形工具栏不可见,请在“视图”上,指向“工具栏”,然后单击“定向关系图”。有关更多信息,请参见如何:在关系图文档中浏览和导航
  2. 双击感兴趣的聚合链接。

    - 或 -

    1. 将指针移到链接上。

      Visual Studio 在链接上显示两个箭头按钮。

    2. 单击两个箭头按钮之间的加号 (+)。

  3. “生成依赖项关系图”对话框中,单击要包括在关系图上的节点的级别。

    例如,若要检查从程序集级别直至方法级别的依赖关系,请单击“程序集”“命名空间”“类型”“方法”。 如果只希望查看程序集和类之间的依赖关系,请仅单击“程序集”“类”

    若要在关系图上包括方法的内容,请使用体系结构资源管理器查找这些元素并将它们添加到关系图。 有关更多信息,请参见如何:使用体系结构资源管理器查找代码

  4. 确保选中“包容显示为组”,然后单击“确定”

    Visual Studio 将生成并显示一个关系图,其中包含所选节点的级别以及它们的依赖关系。

  5. 在关系图上,选择感兴趣的组,右击所选的组,指向“组”,然后单击“展开”

    - 或 -

    右击关系图,指向“组”,然后单击“全部展开”

    关系图将展开组以显示其子级。

  6. 选择感兴趣的所有节点(包括其子级)。

    若要选择组中的所有节点,请在按住鼠标左键的同时在该组周围绘制一个矩形。 若要选择关系图上的所有节点,请按 Ctrl+A

    关系图将显示所选节点之间的跨组链接。

查找复杂区域

使用依赖项关系图来标识您或许能够改进的区域。 格式正确的依赖项关系图显示的依赖关系数量将很少。 例如,您可以:

  • 查找具有循环或循环依赖关系的代码。

    检查这些区域以确定您是否能够简化它们。 考虑您是否能够中断这些循环。

  • 查找具有太多依赖关系的代码。

    检查这些区域以确定它们是否在执行太多的功能,或确定更改这些区域将造成的影响。 若要使代码更易于维护、更改、测试和重用,请考虑是否能重构这些区域以使它们定义更清晰,或者是否能合并执行类似功能的代码。

  • 查找没有依赖项的代码。

    检查这些区域以确定它们是否必要,或者您是否应移除此代码。

您可以对这些关系图运行特定分析器来帮助执行这些任务。 这些分析器在应用之后将继续运行。 如果您更改关系图,则任何应用的分析器将自动重新处理更新的关系图。 若要停止运行分析器,请在**“图例”框中右击该分析器,然后单击“删除”**。

提示

如果您有一个非常大的关系图,则运行分析器可能会引发内存不足异常。 如果发生这种情况,请编辑关系图以减少其范围或生成一个较小的关系图,然后运行分析器。

查找代码中的复杂区域

  1. 确保关系图布局设置为树布局或快速群集布局。

    有关更多信息,请参见如何:在关系图文档中浏览和导航

  2. 右击关系图,指向**“分析器”**,然后单击以下各项之一:

    分析器

    若要标识具有以下特征的节点

    循环引用

    具有相互依赖的循环依赖关系

    注意注意
    当您展开“泛型”组时,该组内的循环依赖关系将不会显示在关系图上。

    查找集线器

    位于前 25% 高度连接的节点中

    选择这些节点并在关系图上隐藏所有其他节点

    1. 右击图形,然后单击“显示高级选择”

    2. “所选内容”框中,展开“属性”,然后展开“集线器”

    3. “集线器”下,单击“True”

      位于前 25% 高度连接的节点中

    4. 右击关系图,指向“所选内容”,然后单击“隐藏未选内容”

      关系图将隐藏未选定节点,并且分析器会将新节点标识为集线器。

    您也可以通过将关系图布局切换到依赖关系矩阵视图来标识依赖关系的密集区域。 有关依赖关系矩阵视图的更多信息,请参见如何:在关系图文档中浏览和导航

    未引用的节点

    没有来自任何其他节点的引用。

    警告说明警告
    在假定代码未使用之前,请验证其中每种情况。某些依赖关系(例如 XAML 依赖关系和运行时依赖关系)无法以静态方式在代码中找到。

请参见

概念

如何:生成 .NET 代码的依赖项关系图

其他资源

如何:在关系图文档中浏览和导航

如何:编辑和自定义关系图文档