我正在使用NDepend来帮助管理项目,我只是被要求根据直接和间接使用给定程序集的内容获取依赖项的有序列表(用于不同解决方案的构建顺序)。 p>
NDepend提供了一种很好的方法来查找依赖于该程序集的模块,但无法按照我想要的方式对其进行排序。例如,我可以运行
from a in Assemblies
let depth0 = a.DepthOfIsUsing("Assembly1".MatchAssembly())
where depth0 >= 0 orderby depth0
select new { a, depth0 }
这会给我一个像这样的列表
Assembly1 0
Assembly2 1
Assembly3 1
Assembly4 2
这实质上意味着Assembly2和Assembly3直接依赖于Assembly1,而Assembly4依赖于Assembly2或Assembly3。
我的问题存在,因为Assembly3依赖于Assembly1 AND Assembly2。如果Assembly4只依赖于Assembly 2,我希望看到一个这样的列表:
Assembly1 0
Assembly2 1
Assembly3 2
Assembly4 2
如果Assembly4也依赖于Assembly3,那么列表应如下所示:
Assembly1 0
Assembly2 1
Assembly3 2
Assembly4 3
现在我可以将原始列表导出到依赖图,并水平查看它,并自己手动填写该依赖列表,但实际上我的层次结构中有123个程序集,这是一个很糟糕的工作,特别是当我之后还有其他处理工作(我知道用NDepend无法实现),所以我宁愿在CQL中找到一种方法。
任何有忍者NDepend技能的人都知道如何实现这个目标吗?
感谢。