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

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

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

     HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion
     Добавить:
     Значение DWORD ForceLog установлено равным 1
     DWORD LogFailures задает значение 1
     DWORD LogResourceBinds устанавливает значение 1
     Значение DWORD EnableLog установлено равным 1
     String LogPath задает значение для папки для журналов (например, C: \ FusionLog \)
    

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

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

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

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

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

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

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

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

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

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

    [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 и проигнорируйте предупреждение о возможном повреждении.

    Вы можете запустить этот сценарий 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 

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

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

    Вместо использования уродливого файла журнала вы также можете активировать журнал Fusion через ETW / xperf , включив частный провайдер DotnetRuntime ( Microsoft-Windows-DotNETRuntimePrivate ) с GUID 763FD754-7086-4DFE-95EB-C01A46FAF4CA и FusionKeyword словом 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 и смотрите в таблице Events, вы можете найти данные Fusion:

    События Fusion в PerfView

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

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

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

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

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

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

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

    2. Перейдите в Дополнительные настройки этого пула приложений.

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

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

    Interesting Posts

    Как сделать чистую установку Windows 8 без предварительной установки Windows или ключа?

    Как интегрировать Console2 через Cygwin (WinXP)?

    Как сделать Ctrl-Z и bg одним нажатием клавиши, чтобы процесс продолжался в фоновом режиме?

    Быстрое векторное rsqrt и обратное с SSE / AVX в зависимости от точности

    Вызов Java из MATLAB?

    Передача массива данных в качестве входного параметра в процедуру Oracle

    Разделить строку на C в каждом пробеле

    Добавление внешней библиотеки в студию Android

    Плохо ли использовать два слота, которые не смежны друг с другом?

    Как сделать .jar из проекта Android Studio

    Создание кнопки в панели инструментов Android

    PM: изображение спящего режима отсутствует или не может быть загружено

    Могу ли я добавлять и удалять элементы enums во время выполнения в Java

    Будет ли держать всех моих поклонников на 100% -ной скорости вреда моему компьютеру?

    Ноутбук случайно пробуждается = Hibernate / Low Battery?

    Давайте будем гением компьютера.