使用NDepend获取DLL或EXE依赖项

时间:2013-08-19 19:28:19

标签: c# dependencies ndepend

我需要获取EXE或DLL文件中使用的引用程序集列表。 我正在寻找NDepend作为通过其控制台进行操作的选项,因此我可以为此编写解决方案。

据我所知,NDepend从Visual Studio项目中读取依赖项,但我不知道是否可以告诉NDepend分析DLL并读取其引用的程序集。

任何人都知道是否可以使用NDepend执行此操作?如果没有,我可以使用另一种工具或机制来实现这一目标吗?

谢谢,如果您需要任何额外的细节,请告诉我。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

无论您需要dependency graphdependency 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查询,并获得方便的程序集依赖关系方式:

Assemblies dependencies with NDepend

相关问题