2011-05-27 80 views
2

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

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

是否有工具可以找到我的程序集中的名称空间依赖关系,例如: Root.ModuleC使用Root.ModuleA

回答

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

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

免责声明:我的工具

1

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

依赖关系矩阵视图将显示所有命名空间以及它们如何相互关联。

3

你试过NDepend吗?

+0

默认CQL的开发者之一(代码查询语言)语句包括名字空间依赖循环开箱检查。在结果上单击鼠标右键,可以在矩阵或依赖关系图中显示周期。 – tijmenvdk 2011-05-27 14:01:12