为.NET项目/解决方案创建类之间的依赖关系图

3
有没有一种程序化的方式或工具可以迭代整个项目/程序集中的所有类,并查找其他相关类?
Resharper有类似的功能,但我没能找到一种能够以易于分析的格式导出结果的方法。
我的最终目标是创建类之间的依赖关系图(每个类),而不是按项目/命名空间等进行聚合。
我的最终目标是获取像这样的列表:<类名>: <依赖1>, <依赖N>
 - Class1: Class2, Class6, Class9   
 - Class2: Class1, Class4
 - Class3: 
 - Class4: Class2, Class5

等等

更新: 我正在使用Visual Studio 2015高级版。


1
你使用的是哪个版本的Visual Studio?更昂贵的版本拥有这些工具。 - user3092503
1
这在高级别的Visual Studio SKUs(企业/终极版和可能是高级版)中得到支持:https://msdn.microsoft.com/zh-cn/library/dd465141.aspx - Martin Costello
谢谢大家,我已经更新了问题并加上了VS版本和版本号。 - vmg
2个回答

3
你可以尝试使用与VS2015(所有SKUs,包括Premium)以及VS 2019、2017、2013、2012、2010的所有SKUs都集成在一起的工具NDepend。除了较旧的Express SKU之外,它还可以帮助你进行代码查询和编辑。 通过NDepend,你可以在Visual Studio中编辑C# Linq查询并实时编译/执行。例如,下面的代码查询显示了所有类的依赖关系:
from t in Application.Types
select new { t, t.TypesUsed, t.TypesUsingMe }

NDepend Code Query for Dependency

代码查询结果可以导出到图形,从而可以生成各种依赖关系图: 调用图类继承图耦合图等。

NDepend Generating Graoh fromCode Query

我找不到将结果导出为易于分析的格式的方法。

除了在 Visual Studio 中进行实时代码查询外,NDepend 代码查询还可以通过API进行访问,您可以利用它创建 C# 程序并以任何格式导出任何数据。


新的 NDepend 2020.1 版本现在可以通过单击来生成类或方法的调用图:

NDepend Dependency Graph to produce a Call Graph


免责声明:我为 NDepend 工作


1
谢谢Patrick!我使用C# API编写应用程序,成功地获得了我想要的内容,NDepend非常棒,我对它提供的功能感到惊讶! - vmg
我们很高兴NDepend帮助您实现您想要的目标 :) - Patrick from NDepend team
5
好的工具,但你忘了提到它是需要付费的。 - Konrad

0
你要找的功能是代码地图。我不确定它们是否现在在VS 2015高级版中可用,但它们在最初发布时并不可用。这篇文章的评论可能会帮助你:快速创建代码地图的新方法

默认情况下,它显示按项目/名称空间聚合的依赖项。是否有一种方法可以显示类级别的依赖关系?谢谢。 - vmg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接