在.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'