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

Как включить ведение журнала ошибок привязки сборки (Fusion) в. СЕТЬ?

вопрос задан 1.11.2008
user32736
4516 репутация

9 ответов


  • 760 рейтинг

    Добавьте следующие значения в

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion
    Add:
    DWORD ForceLog set value to 1
    DWORD LogFailures set value to 1
    DWORD LogResourceBinds set value to 1
    DWORD EnableLog set value to 1
    String LogPath set value to folder for logs (e.g. C:\FusionLog\)
    

    Убедитесь, что вы включили обратную косую черту после имени папки и что папка существует .

    Вам нужно перезапустить запущенную программу, чтобы заставить ее прочитать эти параметры реестра.

    Кстати, не забудьте отключить регистрацию Fusion, когда она не нужна.

    ответ дан Gary Kindel, с репутацией 11404, 6.10.2009
  • 220 рейтинг

    Я обычно использую Fusion Log Viewer ( Fuslogvw. EXE из командной строки Visual Studio или Fusion Log Viewer из меню Пуск) - моя стандартная установка:

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

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

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

    ответ дан Mike Goatly, с репутацией 5113, 15.07.2010
  • 182 рейтинг

    Если на вашем компьютере установлен Windows SDK, вы найдете «Fusion Log Viewer» в Microsoft SDK \ Tools (просто введите «Fusion» в меню «Пуск» в Vista или Windows 7/8). Запустите его, нажмите кнопку «Настройки» и выберите «Журнал ошибок привязки» или «Журнал всех привязок».

    Если эти кнопки отключены, вернитесь в меню «Пуск», щелкните правой кнопкой мыши Log Viewer и выберите «Запуск от имени администратора».

    ответ дан Samuel Jack, с репутацией 24810, 19.05.2010
  • 82 рейтинг

    Установите следующее значение реестра:

    [HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Fusion! EnableLog] (DWORD) для 1

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

    [править]: сохранить следующий текст в файл, e. g Fusion EnableLog. рег, в Формат редактора реестра Windows:

    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion]
    "EnableLog"=dword:00000001
    

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

    ответ дан user32736, с репутацией 4516, 1.11.2008
  • 57 рейтинг

    Вы можете запустить этот скрипт Powershell от имени администратора, чтобы включить FL:

    Set-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name ForceLog         -Value 1               -Type DWord
    Set-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogFailures      -Value 1               -Type DWord
    Set-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogResourceBinds -Value 1               -Type DWord
    Set-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogPath          -Value 'C:\FusionLog\' -Type String
    

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

    и отключить этот:

    Remove-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name ForceLog
    Remove-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogFailures
    Remove-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogResourceBinds
    Remove-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogPath
    
    ответ дан Tereza Tomcova, с репутацией 3026, 8.10.2015
  • 18 рейтинг

    Сценарий средства просмотра настроек журнала Fusion не является лучшим способом сделать это.

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

    ответ дан Adam Tuliper - MSFT, с репутацией 28156, 21.10.2011
  • 9 рейтинг

    Вместо использования некрасивого файла журнала вы также можете активировать журнал Fusion через ETW / xperf , включив частного поставщика DotnetRuntime (Microsoft-Windows-DotNETRuntimePrivate) с GUID 763FD754-7086-4DFE-95EB-C01A46FAF4CA и ключевым словом FusionKeyword (0x4).

    @echo off
    echo Press a key when ready to start...
    pause
    echo .
    echo ...Capturing...
    echo .
    
    "C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -on PROC_THREAD+LOADER+PROFILE -stackwalk Profile -buffersize 1024 -MaxFile 2048 -FileMode Circular -f Kernel.etl
    "C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -start ClrSession -on Microsoft-Windows-DotNETRuntime:0x8118:0x5:'stack'+763FD754-7086-4DFE-95EB-C01A46FAF4CA:0x4:0x5 -f clr.etl -buffersize 1024
    
    echo Press a key when you want to stop...
    pause
    pause
    echo .
    echo ...Stopping...
    echo .
    
    "C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -start ClrRundownSession -on Microsoft-Windows-DotNETRuntime:0x8118:0x5:'stack'+Microsoft-Windows-DotNETRuntimeRundown:0x118:0x5:'stack' -f clr_DCend.etl -buffersize 1024 
    
    timeout /t 15
    
    set XPERF_CreateNGenPdbs=1
    
    "C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -stop ClrSession ClrRundownSession 
    "C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -stop
    "C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -merge kernel.etl clr.etl clr_DCend.etl Result.etl -compress
    del kernel.etl
    del clr.etl
    del clr_DCend.etl
    

    Когда вы сейчас откроете файл ETL в PerfView и загляните под таблицу «События», вы сможете найти данные Fusion:

    Fusion events in PerfView

    ответ дан magicandre1981, с репутацией 14203, 31.03.2015
  • 3 рейтинг

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

    Сценарий будет что-то вроде:

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

    Вкратце: A --- загружает - & gt; B (устаревший) --- ссылки --- & gt; C

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

    ответ дан andrerav, с репутацией 185, 18.07.2013
  • 2 рейтинг

    Если у вас уже включено ведение журнала и вы все еще получаете эту ошибку в 64-разрядной версии Windows 7, попробуйте это в IIS 7. 5:

    1. Создание нового пула приложений

    2. Перейти к расширенным настройкам этого пула приложений

    3. Установить Включить 32-разрядное приложение на True

    4. Укажите ваше веб-приложение для использования этого нового пула

    ответ дан Adam Mendoza, с репутацией 2661, 17.04.2012