В .NET есть ли способ включить трассировку Assembly.Load? Я знаю, что при работе под отладчиком он выдает приятное сообщение вроде «Loaded 'assembly X'», но я хочу получить журнал загрузок сборки моего работающего приложения вне отладчика, желательно смешанный с моими сообщениями журнала Debug / Trace.
Я отслеживаю различные вещи в своем приложении и в основном хочу знать, какое действие вызвало загрузку конкретной сборки.





Получите AppDomain для своего приложения и присоединитесь к событию AssemblyLoad.
Пример (C#):
AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(OnAssemblyLoad);
Fusion Log Viewer - ваш друг.
[править] На самом деле это может быть слишком много, событие AssemblyResolve тоже хорошо [править]
Это хорошо для общей диагностики, но для моего конкретного сценария я думаю, что событие Assembly Load приведет меня туда, где мне нужно быть.
Будьте осторожны, это может вести себя по-другому на Mono :)
В 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'
Я предпочитаю использовать FusLogView, потому что мне не нужно изменять свой код, если я просто диагностирую некоторые проблемы с загрузкой сборки.