如何使用NDepend拆分共享程序集?

时间:2016-10-12 16:01:09

标签: .net ndepend

我正在努力在多个大多数独立的子项目中拆分回购。所有项目都参考了一个大型项目。我正在寻找一种方法来获取共享项目中仅在其中一个子项目中使用的类列表,以便构建可以从共享项目中删除的类的候选列表。最终目标是共享项目仅包含共享代码。

我可以使用反射做很多事情,但我有一个NDepend许可证,看起来这是我应该能够使用NDepend做的事情。我如何使用NDepend执行此操作?

1 个答案:

答案 0 :(得分:0)

您可以使用一个CQLInq code query

来实现这一目标
let myAsm = Application.Assemblies.WithName("YourAsmName").Single()
from a in Application.Assemblies where a.IsUsing(myAsm)
select new { 
   a, 
   typesUsed = myAsm.ChildTypes.UsedBy(a) }

etvoilà!

NDepend lists types usage

当然NDepend dependency matrix也可以提供帮助,首先将程序集用户导出到矩阵

Export Assemblies to NDepend Dependency Matrix

第二次将您的装配类型导出到矩阵,这可以使用此类代码查询,只需将结果类型导出到

let myAsm = Application.Assemblies.WithName("YourAsmName").Single()
from t in myAsm.ChildTypes select t

现在您可以浏览所有依赖项,并深入研究它们。

NDepend Dependency Matrix

当然,您可以优化这些代码查询,以便在查询结果和矩阵中获得所需的内容。

如果你有几十个程序集和类型,你可以尝试导出到NDepend dependency graph而不是导出到矩阵,但它可能看起来很乱,有太多的节点,矩阵更适合处理很多节点。