在.NET中,是否有一种方法可以启用Assembly.Load跟踪?

时间:2020-03-06 15:00:41  来源:igfitidea点击:

在.NET中,是否有一种方法可以启用Assembly.Load跟踪?我知道在调试器下运行时,它会给我们一个很好的消息,例如" Loaded'assembly X'",但我想获取调试器外部正在运行的应用程序的程序集负载的日志,最好与Debug / Trace日志消息混合在一起。

我正在寻找应用程序中的各种内容,而我基本上想知道是什么动作触发了要加载的特定程序集。

解决方案

为应用程序获取AppDomain并添加到AssemblyLoad事件。

范例(C#):

AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(OnAssemblyLoad);

Fusion Log Viewer是朋友。

[edit]实际上这可能太重要了,AssemblyResolve事件也很好[edit]

MS Visual Studio内置了此功能。

从MS Visual Studio的输出窗口的上下文菜单中选择"模块加载消息",它将显示如下内容:

Loaded 'C:\Windows\assembly\GAC_64\mscorlib.0.0.0__b77a5c561934e089\mscorlib.dll'
Loaded 'C:\projects\trunk\bin\Tester.exe', Symbols loaded.
Loaded 'C:\projects\trunk\bin\log4net.dll'