Есть ли в .NET способ включить трассировку Assembly.Load?
-
03-07-2019 - |
Вопрос
Есть ли в .NET способ включить трассировку Assembly.Load?Я знаю, что при работе под отладчиком выдается хорошее сообщение типа «Загружена сборка X», но я хочу получить журнал загрузок сборок моего работающего приложения вне отладчика, желательно смешанный с моими сообщениями журнала отладки/трассировки.
Я отслеживаю различные вещи в своем приложении и в основном хочу знать, какое действие вызвало загрузку определенной сборки.
Решение
Получите AppDomain для своего приложения и прикрепите его к событию AssemblyLoad.
Пример (С#):
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'