6

我的托管 .net 应用程序使用第三方 .net 库,这些库使用(通过 PInvoke)非托管 dll。我想知道加载了哪些 dll。我尝试使用“Process Explorer”和“Dependency Walker”,但我只能看到托管的 DLL。

4

1 回答 1

11

任何调试器都可以做到这一点(windbg例如) - 但是因为这是你打包 Visual Studio 的好机会,所以我将讨论如何做到这一点

将 Visual Studio 调试器附加到应用程序,记住只选择 Native 调试器,如下所示:

如何将调试器类型设置为 Native

连接后,点击 Debug -> Break 然后按[CTRL] + [ALT] + [U]调出 Modules 窗口(它在菜单上的某个地方,但我找不到它!) - 这是我桌面上 Samsung Kies 应用程序的示例(使用WPF):

模块列表

在我的情况下,我也启用了托管调试器,并将进程名称移动到列列表的开头以用于该屏幕截图。

如果进程名称: Native后面有它,那么它是一个非托管 DLL(好吧,我想它也可能是混合模式)。

请注意, Windows 中的所有进程总是会加载很长的非托管 DLL 列表;因为 Windows 本质上是不受管理的,并且是应用程序的最终宿主。

但当然你可以使用这个列表作为起点并从那里过滤。

于 2012-08-30T10:12:20.923 回答