首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NDepend获取DLL或EXE依赖项

使用NDepend获取DLL或EXE依赖项
EN

Stack Overflow用户
提问于 2013-08-19 19:28:19
回答 2查看 3.2K关注 0票数 0

我需要获取EXE或DLL文件中使用的引用程序集的列表。我把NDepend看作是通过它的控制台执行它的一个选项,这样我就可以有一个编程的解决方案了。

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

有人知道用NDepend是否有可能做到这一点吗?如果没有,我还可以使用另一个工具或机制来实现这一点吗?

谢谢,如果你需要更多的细节,请告诉我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-19 19:58:20

  • 使用反射以编程方式处理托管引用:http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getreferencedassemblies.aspx
  • 或者使用像JetBrain的dotPeek这样的工具,也可以用于托管引用
  • 将Dependency用于其他类型的引用:http://www.dependencywalker.com/faq.html
票数 1
EN

Stack Overflow用户

发布于 2013-08-20 13:52:06

无论您是否需要相依图依赖矩阵,或者如果您需要这些程序集,以编程方式依赖NDepend都可以为您做到这一点。

所以我可以有一个程序解决方案。

要以编程方式获取程序集依赖项,您需要使用NDepend.API。在内存中获得ICodeBase对象之后,下面是如何通过C# LINQ查询获取程序集依赖项(例如:

代码语言:javascript
复制
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](http://www.ndepend.com/API/webframe.html?NDepend.API~NDepend.CodeModel.IAssembly.html)。若要将a.AssembliesUsed限制为只使用应用程序集,则可以重写它assembliesUsed = a.AssembliesUsed.Where(a1 => !a1.IsThirdParty)

此外,由于NDepend API可以从C# LINQ查询中实时编译和执行,因此可以在Visual中的NDepend查询编辑器中运行以前的C# LINQ查询,并以方便的方式获得程序集依赖项:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18321581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档