如何获得我的C#项目之间的依赖关系图

我有一个相当复杂的应用程序,它被分解为多个组件。 每个组件都有一个包含大量项目的解决方案文件。 所以我喜欢把它想象成一个组件中有多个项目/ dll。 还有一个“共同”组件。 所有其他组件都依赖于“共同”。 所以编译是这样的: "nant component1.compile"将编译“common”然后编译component1,因为component1依赖于“common”。 随着时间的推移,“共同”变得相当大。 我很确定它可以分成几个较小的组件。 然后组件需要仅依赖于这些较小的,破碎的“共同”中的一些。 这有望减少不同组件的编译时间。

所以问题:我想要显示应用程序中所有不同项目之间的依赖关系,同时标记项目所属的组件。 你会怎么做?

NDepend工具提出了一个与依赖矩阵相结合的依赖图。 默认情况下,您将获得.NET程序集的依赖关系图,它不仅限于一个VS解决方案的程序集。 NDepend集成在VS 2017,2015,2013,2012,2010中,它可以在您的代码上显示任何类型的图表,包括:

  • 程序集之间的依赖关系
  • 方法调用图,
  • VS项目中名称空间的依赖关系,
  • 命名空间内类型的依赖关系,
  • 类inheritance图,
  • 图表表示2个组件之间的类耦合

等等…

这一切都在这里解释。

NDepend代码图依赖关系图

NDepend还提出了依赖结构矩阵(DSM)以及使用C#LINQ查询查询依赖关系的方法。

你可以看看NDepend: http ://www.ndepend.com/

编辑添加:

NDepend的首席开发人员Patrick Smacchia在这里发表博客: http : //codebetter.com/blogs/patricksmacchia/default.aspx并撰写了大量有关组件化的内容,您可能会发现它很有用。

如果您可以访问Visual Studio 2010 Ultimate ,则可以从“ Architecture菜单中选择“ Generate Dependency Graph ”。

MSDN上有一个演练: 如何:为.NET代码生成依赖关系图

我尝试将其导入到UML工具中,该工具可以为我呈现模块之间的依赖关系图。

市场上有几种商业和开源。 获得能够为您的预算提供最大function的服务。

如果您对组件级别信息没有问题,那么您应该查看流行工具Reflector的 Graph加载项。 它提供了汇编和类级依赖图。

今天早上向我建议了解(:

http://www.scitools.com/

但说实话,我无法给出适当的报告,因为它对我来说太贵了……

看看我的免费DSM插件,可以从www.tom-carter.net下载.NET Reflector

它允许对依赖关系提供两种不同的视图:用于查找程序集之间的依赖关系的部署模型和用于显示类型之间的依赖关系的体系结构模型。

如果它没有直观地提供您要查找的信息,您可以将模型保存到xml并在数据上运行您自己的脚本。

依赖矩阵的优点是,它比盒线图更容易直观地分析依赖关系

如果你现在需要更多帮助,请告诉我

[更新]此插件现在以Visual Studio加载项的forms提供