【问题标题】:Tool for finding namespace dependencies in my project?在我的项目中查找命名空间依赖项的工具?
【发布时间】:2011-09-03 10:29:08
【问题描述】:

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

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

是否存在可以在我的程序集中找出命名空间依赖项的工具,例如Root.ModuleC 使用 Root.ModuleA 中的东西?

【问题讨论】:

    标签: c# namespaces dependencies


    【解决方案1】:

    你试过NDepend吗?

    【讨论】:

    • 默认的 CQL(代码查询语言)语句包括开箱即用的命名空间依赖循环检查。右键单击结果,您将在矩阵或依赖图中可视化循环。
    【解决方案2】:

    为了完成 tijmenvdk 注释,提出了两个关于命名空间依赖循环的默认规则(通过 LINQ 查询,CQLinq):

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

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

    dependency matrix 可能看起来像(注意用红色方块突出显示的循环)

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

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

    【讨论】:

      【解决方案3】:

      Visual Studio 的Architecture Explorer 在这方面做得很好。有一个dependency graph specific to namesspaces

      【讨论】:

      • 听起来不错,除了需要 VS Ultimate。
      • 当。我忘记了那段。这太糟糕了,因为它是一个非常好的工具。
      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-29
        • 2023-03-20
        • 2012-10-16
        • 1970-01-01
        • 1970-01-01
        • 2016-04-28
        • 2013-02-04
        相关资源
        最近更新 更多