我需要获取EXE或DLL文件中使用的引用程序集列表。 我正在寻找NDepend作为通过其控制台进行操作的选项,因此我可以为此编写解决方案。
据我所知,NDepend从Visual Studio项目中读取依赖项,但我不知道是否可以告诉NDepend分析DLL并读取其引用的程序集。
任何人都知道是否可以使用NDepend执行此操作?如果没有,我可以使用另一种工具或机制来实现这一目标吗?
谢谢,如果您需要任何额外的细节,请告诉我。
答案 0 :(得分:1)
答案 1 :(得分:1)
无论您需要dependency graph,dependency matrix还是需要以编程方式提供这些程序集依赖关系,NDepend都可以为您做到这一点。
所以我可以通过编程方式解决这个问题。
要以编程方式获取程序集依赖项,您需要使用NDepend.API。这是NDepend.API getting started文档。一旦在内存中有了一个ICodeBase对象,下面是如何通过C#LINQ查询获取程序集依赖项,例如:
from a in codeBase.Application.Assemblies
where a.AssembliesUsed.Count() >= 0
orderby a.AssembliesUsed.Count() descending
select new {
a,
a.AssembliesUsed,
a.AssembliesUsingMe
}
请注意,a.AssembliesUsed
是IEnumerable< IAssembly>包含应用程序和第三方程序集。要将a.AssembliesUsed
限制为仅使用的应用程序集,您可以将其重写为assembliesUsed = a.AssembliesUsed.Where(a1 => !a1.IsThirdParty)
。
此外,由于NDepend API可以从动态编译和执行的C#LINQ查询中获得,您可以在Visual Studio的NDepend查询编辑器中运行以前的C#LINQ查询,并获得方便的程序集依赖关系方式: