Listdll 看不到加载的程序集



我非常确信.NET运行时将程序集加载为普通的dll。但我发现,当我将"本机"调试器连接到托管进程时,我看不到加载的程序集。

同样的事情也适用于Sysinternals工具-listdll。它只看到加载的dll,而看不到程序集。

我想知道CLR是如何从程序集中加载和执行代码的?我有一个类似于listdll的工具来遍历所有托管进程并列出所有加载的程序集吗?

首先,程序集不是DLL。DLL是一个物理文件,而程序集是.NET框架的一个逻辑概念。单个DLL可能包含多个程序集。

有很多方法可以列出进程加载的程序集,以下是其中的一些:

  1. 使用SysInternal Process Explorer,双击进程并切换到.NET Assemblys选项卡
  2. 使用像WinDbg/CDB/NTSD这样的调试器,连接到目标进程,通过输入命令.loadby sos clr加载SOS扩展,然后输入!DumpDomain命令列出加载到每个AppDomain中的程序集
  3. 使用MDbg调试器,连接到目标进程,然后输入命令list assemblies

最新更新