在 .NET 中有没有办法启用 Assembly.Load 跟踪?我知道在调试器下运行时,它会给您一个很好的消息,例如“已加载'程序集 X'”,但我想在调试器之外获取我正在运行的应用程序的程序集负载的日志,最好与我的调试/跟踪日志消息混合。
我正在跟踪我的应用程序中的各种事情,我基本上想知道是什么动作触发了特定的程序集被加载。
在 .NET 中有没有办法启用 Assembly.Load 跟踪?我知道在调试器下运行时,它会给您一个很好的消息,例如“已加载'程序集 X'”,但我想在调试器之外获取我正在运行的应用程序的程序集负载的日志,最好与我的调试/跟踪日志消息混合。
我正在跟踪我的应用程序中的各种事情,我基本上想知道是什么动作触发了特定的程序集被加载。
获取应用程序的 AppDomain 并附加到 AssemblyLoad 事件。
示例(C#):
AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(OnAssemblyLoad);
Fusion Log Viewer 是您的朋友。
[编辑] 实际上这可能太过分了,AssemblyResolve 事件也很好[编辑]
MS Visual Studio 内置了这个功能。
从 MS Visual Studio 输出窗口的上下文菜单中选择“模块加载消息”,它将显示如下内容:
Loaded 'C:\Windows\assembly\GAC_64\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll'
Loaded 'C:\projects\trunk\bin\Tester.exe', Symbols loaded.
Loaded 'C:\projects\trunk\bin\log4net.dll'