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

C# 如何获得C项目之间的依赖关系图,c#,.net,visualization,dependencies,csproj,C#,.net,Visualization,Dependencies,Csproj,我有一个相当复杂的应用程序,它被分解成多个组件。每个组件都有一个解决方案文件,其中包含一组项目。因此,我喜欢将其视为一个包含多个项目/DLL的组件。还有一个通用组件。所有其他组件都依赖于公共组件。编译过程如下: nant component1.compile将编译common,然后编译component1,因为component1依赖于common。 随着时间的推移,普通股已变得相当大。我很确定它可以被分成几个较小的组件。然后,组件只需要依赖于其中一些较小的、分散的通用组件。这有望减少不同组件的

我有一个相当复杂的应用程序,它被分解成多个组件。每个组件都有一个解决方案文件,其中包含一组项目。因此,我喜欢将其视为一个包含多个项目/DLL的组件。还有一个通用组件。所有其他组件都依赖于公共组件。编译过程如下: nant component1.compile将编译common,然后编译component1,因为component1依赖于common。 随着时间的推移,普通股已变得相当大。我很确定它可以被分成几个较小的组件。然后,组件只需要依赖于其中一些较小的、分散的通用组件。这有望减少不同组件的编译时间

因此,问题:
我想可视化应用程序中所有不同项目之间的依赖关系,同时标记项目所属的组件。您将如何做到这一点?

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


市场上有几种,既有商业的,也有开源的。获取一个能为您的预算提供最大能力的方案。

今天早上有人向我建议:


但老实说,我不能给出一份适当的报告,因为它对我来说太贵了…

你可以看看NDepend:

编辑以添加:


,NDepend的首席开发人员,这里有博客:并且已经写了很多关于组件化的文章,您可能会发现这很有用。

如果您对汇编级别的信息没有意见,那么您应该查看一个流行工具的外接程序。它提供了程序集和类级依赖关系图

看看我的.NET Reflector免费DSM插件,可从

它允许对依赖项使用两种不同的视图:一种是用于查找程序集之间依赖项的部署模型,另一种是用于显示类型之间依赖项的体系结构模型

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

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

如果你需要更多的帮助,现在就让我来


[更新]此插件现在以Visual Studio外接程序的形式提供

如果您有权访问Visual Studio 2010 Ultimate,则可以从“体系结构”菜单中选择“生成依赖关系图”

MSDN上有一个演练:

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

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

这些都解释清楚了


NDepend还提出了一种方法和方法。

最新的Resharper版本也能够创建参考图表


这看起来像是在解决方案中创建依赖关系图。在我的例子中,每个组件都由一个解决方案表示。我想得到一个图表,显示哪个组件取决于另一个组件的哪个部分。因此,它是跨解决方案的依赖关系,但带有特定依赖关系所属解决方案的标记。您是否建议手动将依赖关系输入到UML工具中?这是相当多的手工工作,我宁愿不去做。如果工具在导入时为您生成依赖项,那么您不必生成依赖项。我不能为每个工具的功能说话。