在我的项目中查找命名空间依赖项的工具?

时间:2011-05-27 13:54:08

标签: c# namespaces dependencies

Dependency Walker似乎是查找模块(DLL)依赖项的好工具。但是,如果我在同一个程序集中包含所有这些“模块”,如下面的命名空间分隔呢?

namespace Root.ModuleA { ... }
namespace Root.ModuleB { ... }
namespace Root.ModuleC { ... }

是否存在可以在程序集中找到命名空间依赖关系的工具,例如Root.ModuleC使用Root.ModuleA中的内容?

4 个答案:

答案 0 :(得分:3)

您是否尝试过NDepend

答案 1 :(得分:2)

要完成 tijmenvdk 注释,建议使用两个关于命名空间依赖循环的默认规则(通过LINQ查询,CQLinq):

您现在可以在代码上尝试这些规则,NDepend建议free time-limited full-featured trial edition。然后,您可以将名称空间之间的依赖关系导出到依赖关系图或依赖关系矩阵(如果您有几十个名称空间,则矩阵更适合):

CQLinq query for namespaces dependency cycles

dependency graph可能看起来像(注意循环中纠缠的红色命名空间):

Dependency Graph with namespaces dependency cycle

dependency matrix可能看起来像(注意用红色方框突出显示的周期)

Dependency Matrix with namespaces dependency cycle

为了更进一步,您可以阅读有关通过程序集和命名空间对.NET代码进行分区的these two whitebooks。最近,Hendry Luk在其SheepAop项目中写了一篇关于摆脱命名空间依赖循环的完整blog post

免责声明:我是该工具的开发人员之一

答案 2 :(得分:1)

nDepend可能是这项工作的最佳工具。

依赖关系矩阵视图将显示所有命名空间以及它们彼此之间的关系。

答案 3 :(得分:1)

Visual Studio的Architecture Explorer做得非常好。有dependency graph specific to namesspaces