[c#] Как включить ведение журнала сбоев сборки (Fusion) в .NET.



Answers

Обычно я использую Fusion Log Viewer ( Fuslogvw.exe из командной строки Visual Studio или Fusion Log Viewer из меню «Пуск»). Моя стандартная настройка:

  • Открыть Fusion Log Viewer
  • Настройки кликов
  • Установите флажок Включить настраиваемый путь к журналу
  • Введите местоположение, в которое вы хотите записать журналы, например c:\FusionLogs ( важно: убедитесь, что вы действительно создали эту папку в файловой системе.)
  • Убедитесь, что включен правильный уровень ведения журнала (иногда я просто выбираю Log all binds to disk, чтобы убедиться, что все работает правильно)
  • Нажмите ОК.
  • Установите для параметра «Локальное местоположение» значение « Пользовательский»

Не забудьте выключить отключение, как только вы закончите!

(Я просто разместил это по аналогичному вопросу - я думаю, что это тоже актуально).

Question

Как включить ведение журнала сбоев сборки (Fusion) в .NET?




Скрипт смены сценариев Fusion Log Viewer не является лучшим способом для этого.

В ASP.NET иногда было сложно, чтобы это работало правильно. Этот скрипт отлично работает и был включен в список Power Tool Скотта Хансельмана . Я лично использовал его в течение многих лет, и это никогда не подводило меня.




Просто крошечная информация, которая может помочь другим; если вы делаете что-то в соответствии с поиском всех сборок в каком-то каталоге для классов, наследующих / реализующих классы / интерфейсы, тогда убедитесь, что вы очищаете устаревшие сборки, если вы получаете эту ошибку, относящуюся к одной из ваших собственных сборок.

Сценарий будет примерно таким:

  1. Сборка A загружает все сборки в какую-либо папку
  2. Сборка B в этой папке устарела, но ссылка на сборку C
  3. Сборка C существует, но пространства имен, имена классов или некоторые другие детали могут измениться за время, прошедшее после того, как сборка B стала устаревшей (в моем случае пространство имен было изменено с помощью процесса рефакторинга)

Короче: A --- нагрузки -> B (устаревшие) --- ссылки ---> C

Если это произойдет, единственным признаком соответствия является пространство имен и имя класса в сообщении об ошибке. Осмотрите его внимательно. Если вы не можете найти его в своем решении, вы, вероятно, попытаетесь загрузить устаревшую сборку.




Задайте следующее значение реестра:

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion! EnableLog] (DWORD) до 1

Чтобы отключить, установите значение 0 или удалите значение.

[edit]: Сохраните следующий текст в файле, например FusionEnableLog.reg, в редакторе реестра Windows. Формат:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion]
"EnableLog"=dword:00000001

Затем запустите файл из проводника Windows и проигнорируйте предупреждение о возможном повреждении.






Related