如何查找.NET项目的所有依赖项?

21

基本上,我需要的是类似于Dependency Walker的工具,但它应该适用于.NET应用程序。有这样的工具吗?

8个回答

10

在依赖项分析器未能帮助我之后(未显示目标库引用的任何 .net 程序集),我搜索了一个特定的 .net 依赖项应用程序,并且成功解决了问题。易于阅读,如果存在循环依赖关系,它将会发现并提醒。 - Despertar
按照广告所述正常工作。仅显示托管依赖项(是否可能自动显示托管应用程序的非托管依赖项?)免费版本仅显示层次结构,而不是图形。(确保在安装免费版本时点击“拒绝”以避免获取附加软件。) - yoyo
2
我不知道最近是否有所改变,但未付费的安装程序会安装一些不需要的垃圾软件,例如“注册表清理器”和“搜索保护”,我建议避免安装这个程序! - Dieter DHoker

10

反编译器 - 之前由Lutz Roeder开发,现在归Red-Gate软件所有。


9
我更喜欢 ILSpy。它是一个开源的 .NET 程序集浏览器和反编译器。而且,它能显示依赖关系。 Reflector 不再免费,因此 ILSpy 是一个不错的替代品。

5
NDepend是专门用于依赖管理和可视化的.NET工具。 该工具提供了依赖关系图依赖矩阵。可以在此处免费试用该工具。以下是依赖关系图和依赖矩阵的两个截图:

NDepend dependency graph NDepend dependency matrix


2

ildasm.exe 也可用于此目的。

该工具已随 Visual Studio 自动安装。要运行该工具,请使用开发人员命令提示符(或在 Windows 7 中使用 Visual Studio 命令提示符)。

ildasm.exe 在加载程序集时列出命名空间、类型、方法等树形结构。

IL DASM

你可以通过双击 MANIFEST,并搜索以.assembly extern开头的行来查看程序集的所有依赖项。

IL DASM MANIFEST

ildasm.exe 随 Visual Studio 或 .NET SDK 安装而来,所以很有可能已经存在于您的计算机上。


2
在运行时,SysternalsProcessExplorer可能有助于查看程序集的依赖关系。
此外,NDepend可以显示您的组件之间的依赖关系以及它们的耦合程度。

1

0

Dependency Walker也适用于.Net。

.Net层仍然需要调用核心Windows函数,如LoadLibrary和GetProcAddress来执行实际工作。正是在这个核心级别上,Dependency Walker理解了发生了什么。因此,虽然Dependency Walker可能无法理解您的应用程序的所有语言特定复杂性,但它仍将能够在核心Windows API级别跟踪所有模块活动。

参考资料


5
我认为这不正确。它可以检测到对本地程序集的依赖关系,但无法检测/查看对.NET程序集的依赖关系。例如,它会显示对kernel32.dll的依赖性,但不会显示对System.ServiceModel.dll的依赖性。你能详细说明一下吗? - Christian.K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接