探索类型依赖图
ReSharper 允许您直观地研究解决方案中类型之间的依赖关系。 您可以从不同的项目或已编译的程序集添加任意数量的类型到类型依赖图,并研究它们之间的不同依赖关系。
构建初始图表
有几种方法可以构建新的类型依赖图:
在 Solution Explorer、Object Browser、Architecture Explorer、Class View 或 Assembly Explorer 窗口 中选择一个或多个项目,然后在主菜单中选择 ,右键单击所选内容并选择 显示类型依赖项图 ,或者按 Control+Shift+Alt+A 然后选择 显示类型依赖项图。
在这种情况下,所选项目中声明的所有类型都会添加到图表中,并可视化聚合、使用和继承 依赖关系。
将光标放在 编辑器 的任意位置,然后在主菜单中选择 或调用 检查此 命令(选择 或按 Control+Shift+Alt+A ),然后选择 显示类型依赖项图。
在这种情况下,文件中的所有类型都会添加到图表中,并可视化聚合、使用和继承 依赖关系。
在 项目依赖图中选择一个或多个项目,右键单击所选内容并在上下文菜单中选择 显示类型依赖项图。
在 显示用法的结果列表弹出窗口中, 转到基符号、 转到派生符号、 导航到:公开 API 或类似命令,按 Alt+Num+ 或单击 在图上显示
。对于基类/派生符号,相应的继承层次结构部分会添加到图表中,并且仅可视化继承 依赖关系。 对于公开的 API,图表显示包含返回给定类型的方法的类型,并且仅显示返回类型 依赖关系。
在 查找结果 窗口或 类型层次结构中显示的结果列表中,单击 在图上显示
。在这些情况下,所有用法或层次结构条目都会添加到图表中,并可视化使用/继承 依赖关系。
选择一个或多个项目引用,右键单击所选内容,然后选择 在图上显示用法
。在这种情况下,图表将显示引用项目中对引用程序集的类型的用法。
新创建的类型依赖图显示在 层次结构窗口 的新选项卡中。
请注意,图表与解决方案不同步,也就是说,如果您在代码中重命名或删除类型,图表不会更改。 要查看图表是否是最新的,您可以检查右下角显示的创建时间。 要将图表与当前解决方案状态同步,请单击工具栏上的 刷新
并选择 刷新类型依赖项。
调整图表视图
类型依赖图可以通过两种方式布局:
有机布局器
— 此选项根据类型的继承关系排列类型:基类向上移动。业务逻辑布局器
— 此选项根据它们之间显示的所有关系排列类型。
您可以使用图表左侧的相应选择器在这些选项之间切换。
在您 向图表添加或移除类型或 更改依赖过滤器后,单击工具栏上的 刷新
并选择 刷新图表布局 以更新图表布局。
要平移图表,请单击图表区域中图表项目外的任意位置并拖动,同时显示手形光标
。 要缩放,请使用鼠标滚轮。 您还可以使用图表区域左上角的控件进行缩放和平移。
图表布局会自动计算,但如果需要,您可以更改:所有项目都可以移动。 要移动项目(类型、依赖链接或分组项目),首先单击以选择,然后在显示十字光标
时单击并拖动。
如果需要,您可以通过以下方式在图表中折叠和展开分组项目:
单击分组项目左上角的向下箭头。 折叠后,符号会变为向上箭头,您可以单击它以展开项目。
在图表中选择一个分组项目并按 Ctrl + 左箭头 和 Ctrl + 右箭头 。
在图表上添加和移除项目
在任何时候,您都可以修改显示的图表,以便仅显示所需的类型。
如果需要,您可以通过单击 撤消
或按
Ctrl+Z
,逐步撤销在图表中所做的更改(添加/移除项目)。 要撤销 撤消 命令,请单击 重做
或按
Ctrl+Y
。
要从图表中移除类型和文件夹,可以使用分组项目右上角的叉号,或者在选择项目时按 Delete 。 或者,选择您想保留的项目,右键单击所选内容并在上下文菜单中选择 仅显示所选条目。 对于多选, Ctrl -单击项目。
还有几种方法可以向图表添加项目:
从 Solution Explorer 将类型、文件夹和项目拖放到图表中。
在 编辑器 中选择一个类型并将选定的类型拖放到图表中。
要查找并添加所有引用的类型,请右键单击类型或分组项目并选择 添加所有引用的类型。 如果您在分组项目(文件夹或项目)上调用此命令,ReSharper 会为当前显示的所有类型添加引用的类型。
要从 解决方案和引用的程序集 按名称查找并添加类型,请在搜索字段中开始键入名称。 您可以在键入时使用通配符(例如星号
*)和 CamelHumps:
选择一个类型并按 输入 或单击一个类型将其添加到图表中。 在下拉列表中以绿色突出显示的类型已添加到图表中。 如果您选择了这样的类型,图表焦点会移动到该类型。
在 详细信息弹出窗口中,单击任何相关类型以将其添加,或者使用 将所有使用的类型添加到图表、 将所有用法添加到图表、 添加所有基类型 和 添加所有直接继承者 链接添加多个类型。
研究特定类型和容器
当节点折叠时,您可以将鼠标悬停在其上快速查看内部内容。 在出现的弹出窗口中,您可以看到此节点中添加到图表的类型数量以及从此节点引用的所有模块:

如果需要,您可以单击引用的模块和/或单击 添加缺失项 以将此节点中的其他项目添加到图表。
您可以双击任何类型在编辑器中打开它。 如果该类型是在已编译的程序集内定义的,它将根据您首选的 导航到已编译代码方式打开。
您可以获取任何特定类型(以及类型之间的任何 依赖关系 )的详细信息。 要获取类型的详细信息,请将鼠标悬停在其上,当详细信息弹出窗口出现时,将鼠标指针移到其上。
在类型详细信息弹出窗口中,您将看到给定类型使用了哪些类型、该类型的使用位置、继承的类型、构造函数参数中使用的类型等。
如果该类型有 XML 文档,摘要也会显示在弹出窗口中。
您可以单击相关类型将其添加到图表中。 以绿色突出显示的类型已添加到图表中。 如果您单击这样的类型,图表焦点会移动到该类型。 要在编辑器中打开类型本身,请单击其名称旁边的 转到声明。

研究类型之间的依赖关系
在类型依赖图上,您可以可视化几种依赖关系。 要显示或隐藏特定类型的依赖关系,请使用 筛选依赖项
选择器中的相应项目:
聚合依赖—显示一种依赖关系,当一个类型是其他类型的集合或容器时。
这种依赖关系显示为绿色虚线。 相应字段的名称显示在线条旁边。 您可以将鼠标悬停在此线条上查看字段声明并导航到编辑器中的相应位置。
使用依赖—显示一种依赖关系,当一个类型的变量、参数或方法返回值在另一个类型中被使用时。
这种依赖关系显示为蓝色线条,其厚度反映了相对的使用次数。 您可以将鼠标悬停在此线条上查看使用列表:

单击特定的使用项将带您到文本编辑器中的相应位置,单击 显示所有用法 链接会在 查找结果 窗口中打开所有使用项。
继承依赖—显示一种依赖关系,当一个类型扩展或实现另一个类型时。 这种依赖关系显示为深绿色线条。 您可以将鼠标悬停在此线条上查看继承关系并导航到编辑器中的相应位置。
传递继承依赖使用虚线显示。 您可以将鼠标悬停在这些线条上并使用弹出窗口检查依赖经过的类型,并通过单击它们将这些类型添加到图表中。

返回类型依赖—显示一种依赖关系,当一个类型具有返回另一个类型的方法或属性时。 这种依赖关系显示为紫色线条。 您可以将鼠标悬停在此线条上查看成员列表并导航到编辑器中的相应位置。
构造函数注入—显示一种依赖关系,当一个类型作为另一个类型的构造函数参数暴露时。 这种依赖关系显示为棕色线条。 您可以将鼠标悬停在此线条上查看构造函数并导航到编辑器中的相应位置。
在图表上调用其他 ReSharper 功能
从图表上的项目导航
要列出 导航到 菜单中任何项目的所有可用导航目标,请按 Control+Shift+G 或右键单击该项目并选择 导航到。
您可以通过按 Alt+Shift+L 在 解决方案资源管理器中定位任何项目(文件、文件夹或项目)。
您还可以通过单击 在查找结果窗口中显示所有使用的类型 或 在查找结果窗口中显示所有用法 ,在类型的 详细信息弹出窗口中或 依赖链接的弹出窗口中单击 显示所有用法 列出相关使用项。
重构图表上的项目
从图表上的任何项目,您都可以调用所有可用的重构功能。 为此,请按 Control+Shift+R 或右键单击并选择 重构。
您还可以通过将类型拖动到所需文件夹执行 移动到文件夹重构。 此重构会将包含该类型的文件移动到目标文件夹,修复命名空间引用,并在必要时将内部可见性更改为公共。
请注意,默认情况下,此行为是启用的。 要禁用它,请单击 拖放时允许“移动到文件夹”
。
请注意,在拖放重构后,图表会自动更新,但从 重构 菜单调用的其他重构不会更新图表;您需要单击图表工具栏上的 刷新类型依赖项
。
将图表导出到文件
在探索依赖关系的任何时候,您都可以使用以下工具栏按钮将图表导出到文件:
单击 导出图表
。 在打开的 另存为 对话框中,您可以使用 保存类型: 选择器选择如何导出图表:
PNG — 将图表的当前视图导出为 PNG 图像。
XML 纸张规范 — 将图表导出为 XPS 格式,您可以使用该格式打印大型图表。
GraphML — 将图表导出为 GraphML 格式,您可以使用该格式进行外部分析或将其导入回 ReSharper。
导入图表
如果您有从 ReSharper 或其他工具导出的 GraphML 格式的图表,您可以导入它。 为此,请从主菜单中选择 或单击项目或类型依赖关系图中的 导入图
,然后选择带有图表的 *.graphml 文件。
此功能在以下语言和技术中 受支持:
此处提供的说明和示例针对在 C# 中使用该功能。 有关其他语言的更多信息,请参阅 语言和框架 部分中的相应主题。