使用NDepend获取DLL或EXE依赖关系

我需要获取EXE或DLL文件中使用的引用程序集列表。 我正在寻找NDepend作为通过它的控制台执行它的一个选项,所以我可以通过编程方式解决这个问题。

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

任何人都知道是否可以用NDepend来做到这一点? 如果没有,我可以使用另一种工具或机制来实现这个目标?

谢谢,让我知道你是否需要任何额外的细节。


  • 使用Reflection以编程方式为托管引用执行此操作:http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getreferencedassemblies.aspx。
  • 或者使用像JetBrain的dotPeek这样的工具,也可用于托管参考
  • 使用Dependency Walker获取其他类型的引用:http://www.dependencywalker.com/faq.html

  • 无论您是否需要依赖关系图,依赖关系矩阵,或者您是否需要程序化这些程序集依赖关系,NDepend都可以为您做到这一点。

    所以我可以通过编程方式解决这个问题。

    要以编程方式获得程序集依赖关系,您需要使用NDepend.API。 这是NDepend.API入门文档。 一旦你在内存中获得了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查询,并以便捷的方式获取程序集依赖关系:

    用NDepend汇编依赖关系

    链接地址: http://www.djcxy.com/p/37701.html

    上一篇: Get DLL or EXE dependencies, using NDepend

    下一篇: Nested dependency graph (DGML) in visual studio