@Will - спасибо, что поделились! В качестве бонуса - убедитесь, что вы работаете fuslogvw.exeот имени администратора, чтобы избежать каких-либо проблем с правами.
SliverNinja - MSFT
13
@ Я не согласен с тем, что установка fuslogvw - «лучший» ответ. Если бы вы могли получить только инструмент без установки всего пакета Windows SDK в среде, которая, вероятно, не является средой разработки, у вас был бы смысл.
Кокси
2
@ Конечно, но ответ, на который вы ссылаетесь, не охватывает ничего из этого.
Кокси
8
@ Будь добр, не будь таким ребяческим. Вы - один из тех, кто пытается собрать представителя, предлагая ответ, который, хотя и полезен, сообщество оценило как менее полезный, чем другие, один из которых намного проще, а другой практически такой же.
Кокси
Ответы:
868
Добавьте следующие значения в
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion
Добавить:
DWORD ForceLog установить значение 1
DWORD LogFailures установить значение 1
DWORD LogResourceBinds установить значение 1
DWORD EnableLog установить значение 1
String LogPath устанавливает значение в папку для журналов (например, C: \ FusionLog \)
Убедитесь, что вы указали обратную косую черту после имени папки и что папка существует .
Вам нужно перезапустить программу, которую вы запускаете, чтобы заставить ее читать эти параметры реестра.
Кстати, не забудьте отключить регистрацию Fusion, когда она не нужна.
Решения Гэри работали для меня, хотя я также должен был выполнить сброс IIS. Обратите внимание, что я настроил это в чистой среде, где я не хотел устанавливать SDK и тому подобное.
Мишес
5
Некоторые сообщили, что изменение реестра не сразу. Вы пытались включить регистрацию Fusion и перезагрузить компьютер?
Гари Киндель
54
Вам нужно перезапустить любую программу, которую вы используете, чтобы она прочитала эти настройки реестра
Orion Edwards,
50
Fusion Log Viewer сделает все это за вас. Перейдите в Пуск -> Программы -> Visual Studio xxxx> Инструменты Visual Studio> Командная строка Visual Studio (запускается от имени администратора) и введите «fuslogvw». В настройках вы настраиваете логирование.
r3mark
10
Чтобы включить / выключить ведение журналов, я создал файлы .reg, основанные на ответе Гари Кинделя: включение и отключение .
Откройте Fusion Log Viewer от имени администратора
Нажмите настройки
Проверьте Включить пользовательский путь журнала флажок
Введите местоположение, в которое вы хотите записывать журналы, например, c:\FusionLogs( Важно: убедитесь, что вы действительно создали эту папку в файловой системе.)
Убедитесь, что включен правильный уровень ведения журнала (иногда я просто выбираю « Журнал всех привязок к диску», чтобы убедиться, что все работает правильно)
Нажмите ОК
Установите опцию расположения журнала в Custom
Не забудьте выключить выход, как только вы закончите!
(Я только что опубликовал это на похожем вопросе - я думаю, что это актуально и здесь.)
Обратите внимание, что в тех случаях, когда вы сами размещаете среду выполнения из нативного приложения, вам по какой-то причине потребуется использовать собственный путь к журналу, иначе вы ничего не зарегистрируете.
jpierson
По крайней мере, в моей ситуации мне не нужно было устанавливать собственные пути к журналам. Все, что мне нужно было сделать, это включить регистрацию, например, «Записать все привязки к диску» в диалоговом окне настроек.
Джош
42
Запуск от имени администратора требовался в моем случае, иначе все параметры были отключены.
Везенков
2
Примечание: создайте папку с правами администратора!
Таброк
6
Убедитесь, что вы работаете fuslogvwне только как администратор, но и из правильного пути Windows SDK, который использует проект Visual Studio, выбрасывающий исключение. Проверьте его csproj и найдите SDK внутри (мой узел sdk назван TargetFrameworkSDKToolsDirectory). Использование несоответствующей версии fuslogvw, похоже, не улавливает исключения (что имеет смысл ...)
Veverke
191
Если на вашем компьютере установлен Windows SDK, вы найдете «Fusion Log Viewer» в Microsoft SDK \ Tools (просто введите «Fusion» в меню «Пуск» в Vista или Windows 7/8). Запустите его, нажмите кнопку «Настройки» и выберите «Журнал ошибок привязки» или «Журнал всех привязок».
Если эти кнопки отключены, вернитесь в меню «Пуск», щелкните правой кнопкой мыши Log Viewer и выберите «Запуск от имени администратора».
Не то чтобы запись, вероятно, не существовала - вам придется ее создать. По крайней мере, я сделал это, когда собирался ответить на этот вопрос незадолго до крушения этим утром :)
Джон Скит
3
Что это ! жадный? Ключ или значение? Как насчет 64-битных систем?
Бруно Мартинес
48
на самом деле, это работает ... вам просто нужно запустить iisreset afterwords, чтобы заставить его работать.
Ник Демайо
4
@ Норман: Поскольку этот конкретный параметр используется для того, чтобы ошибки Asp.Net отображали сообщения об ошибках привязки сборки на страницах ошибок, а не для сохранения журналов в файл. @OP: +1. Отредактировано, чтобы включить файл .reg. ! Я не видел ни одного формата, кроме сообщения об ошибке, которое отправило меня на эту страницу в поисках ответов.
Брайан
2
Вам не нужно сбрасывать IIS - только соответствующий пул приложений. Или, по крайней мере, это было все, что мне нужно было сделать.
Кенни Эвитт
81
Вы можете запустить этот скрипт Powershell от имени администратора, чтобы включить FL:
Спасибо! Я позволил себе ввести ваши команды в эту суть . И я добавил создание c:\FusionLogdir, чтобы люди не забыли об этом ;-)
Оливер
Правила командной строки! Я мог бы быстро воспроизвести это, используя лучшую на сегодняшний день технологию повторного использования кода, называемую «вырезать и вставить». Спасибо.
В ASP.NET иногда было сложно заставить это работать правильно. Этот скрипт прекрасно работает и был включен в список инструментов Скотта Хансельмана . Я лично использовал это в течение многих лет, и это никогда не подводило меня.
ps УБЕДИТЕСЬ, что вы отключите его после запуска, иначе эта папка может стать достаточно большой
Адам Тулипер - MSFT
Вот почему я использую ETW, чтобы регистрировать данные, только если они мне действительно нужны, а не все время в уродливом большом файле журнала.
magicandre1981
13
Вместо использования некрасивого файла журнала вы также можете активировать журнал 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-MaxFile2048-FileModeCircular-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 15set XPERF_CreateNGenPdbs=1"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe"-stop ClrSessionClrRundownSession"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:
@YuriBondarchuk это активирует его по требованию, и у вас есть больше данных в ETL (другие процессы, данные файловой версии), чтобы вы могли передать файлы другим пользователям, и они могут получить НАМНОГО больше информации по сравнению с обычным журналом слияния
чувак, ты спас мой день, мне понадобилось около 8 часов, чтобы решить проблему. огромное спасибо. :)
Дика Арта Каруня
3
Просто немного информации, которая может помочь другим; если вы делаете что-то вроде поиска во всех сборках в некотором каталоге классов, которые наследуют / реализуют классы / интерфейсы, то убедитесь, что вы удаляете устаревшие сборки, если вы получаете эту ошибку, относящуюся к одной из ваших собственных сборок.
Сценарий будет что-то вроде:
Сборка А загружает все сборки в какую-то папку
Сборка B в этой папке устарела, но ссылки на сборку C
Сборка C существует, но пространства имен, имена классов или некоторые другие детали могли бы измениться за время, прошедшее с того момента, как сборка B стала устаревшей (в моем случае пространство имен было изменено в процессе рефакторинга)
Вкратце: A --- нагрузки -> B (несвежие) --- ссылки ---> C
Если это происходит, единственным сигнальным знаком является пространство имен и имя класса в сообщении об ошибке. Изучите это внимательно. Если вы не можете найти его в своем решении, скорее всего, вы пытаетесь загрузить устаревшую сборку.
На всякий случай, если вам интересно узнать, где находится FusionLog.exe - вы знаете, что он у вас есть, но не можете его найти? В последние несколько лет я искал FUSLOVW снова и снова. После перехода на .NET 4.5 номер версии FUSION LOG взорвался. Это места, где его можно найти на вашем диске, в зависимости от установленного вами программного обеспечения:
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Tools \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Инструменты
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin
fuslogvw.exe
от имени администратора, чтобы избежать каких-либо проблем с правами.Ответы:
Добавьте следующие значения в
Убедитесь, что вы указали обратную косую черту после имени папки и что папка существует .
Вам нужно перезапустить программу, которую вы запускаете, чтобы заставить ее читать эти параметры реестра.
Кстати, не забудьте отключить регистрацию Fusion, когда она не нужна.
источник
Я обычно использую Fusion Log Viewer ( Fuslogvw.exe из командной строки Visual Studio или Fusion Log Viewer из меню «Пуск») - мои стандартные настройки:
c:\FusionLogs
( Важно: убедитесь, что вы действительно создали эту папку в файловой системе.)Не забудьте выключить выход, как только вы закончите!
(Я только что опубликовал это на похожем вопросе - я думаю, что это актуально и здесь.)
источник
fuslogvw
не только как администратор, но и из правильного пути Windows SDK, который использует проект Visual Studio, выбрасывающий исключение. Проверьте его csproj и найдите SDK внутри (мой узел sdk названTargetFrameworkSDKToolsDirectory
). Использование несоответствующей версии fuslogvw, похоже, не улавливает исключения (что имеет смысл ...)Если на вашем компьютере установлен Windows SDK, вы найдете «Fusion Log Viewer» в Microsoft SDK \ Tools (просто введите «Fusion» в меню «Пуск» в Vista или Windows 7/8). Запустите его, нажмите кнопку «Настройки» и выберите «Журнал ошибок привязки» или «Журнал всех привязок».
Если эти кнопки отключены, вернитесь в меню «Пуск», щелкните правой кнопкой мыши Log Viewer и выберите «Запуск от имени администратора».
источник
Установите следующее значение реестра:
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion! EnableLog] (DWORD) в 1
Чтобы отключить, установите 0 или удалите значение.
[править]: сохраните следующий текст в файл, например, FusionEnableLog.reg, в формате редактора реестра Windows:
Затем запустите файл из проводника Windows и проигнорируйте предупреждение о возможном повреждении.
источник
Вы можете запустить этот скрипт Powershell от имени администратора, чтобы включить FL:
и этот отключить:
источник
c:\FusionLog
dir, чтобы люди не забыли об этом ;-)Чейнджера сценарий Fusion Log Settings просмотра это не ни один бар лучший способ сделать это.
В ASP.NET иногда было сложно заставить это работать правильно. Этот скрипт прекрасно работает и был включен в список инструментов Скотта Хансельмана . Я лично использовал это в течение многих лет, и это никогда не подводило меня.
источник
Вместо использования некрасивого файла журнала вы также можете активировать журнал Fusion через ETW / xperf , включив частный поставщик DotnetRuntime (
Microsoft-Windows-DotNETRuntimePrivate
) с GUID763FD754-7086-4DFE-95EB-C01A46FAF4CA
иFusionKeyword
ключевым словом (0x4).Теперь, когда вы открываете файл ETL в PerfView и просматриваете таблицу «События», вы можете найти данные Fusion:
источник
Я написал программу просмотра журнала привязки сборки под названием Fusion ++ и поместил ее на GitHub .
Вы можете получить последнюю версию здесь или через chocolatey (
choco install fusionplusplus
).Я надеюсь, что вы и некоторые посетители здесь сможете сэкономить на этом несколько достойных минут.
источник
Если у вас уже включено ведение журнала и вы все еще получаете эту ошибку в 64-разрядной версии Windows 7, попробуйте это в IIS 7.5:
Создать новый пул приложений
Перейдите в Дополнительные настройки этого пула приложений.
Установите для параметра Включить 32-разрядное приложение значение True
Укажите ваше веб-приложение, чтобы использовать этот новый пул
источник
Просто немного информации, которая может помочь другим; если вы делаете что-то вроде поиска во всех сборках в некотором каталоге классов, которые наследуют / реализуют классы / интерфейсы, то убедитесь, что вы удаляете устаревшие сборки, если вы получаете эту ошибку, относящуюся к одной из ваших собственных сборок.
Сценарий будет что-то вроде:
Вкратце: A --- нагрузки -> B (несвежие) --- ссылки ---> C
Если это происходит, единственным сигнальным знаком является пространство имен и имя класса в сообщении об ошибке. Изучите это внимательно. Если вы не можете найти его в своем решении, скорее всего, вы пытаетесь загрузить устаревшую сборку.
источник
Для тех, кто немного ленив, я рекомендую запускать его как bat-файл, когда вы захотите включить его:
источник
На всякий случай, если вам интересно узнать, где находится FusionLog.exe - вы знаете, что он у вас есть, но не можете его найти? В последние несколько лет я искал FUSLOVW снова и снова. После перехода на .NET 4.5 номер версии FUSION LOG взорвался. Это места, где его можно найти на вашем диске, в зависимости от установленного вами программного обеспечения:
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Tools \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Инструменты
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin
источник
В моем случае помогло ввести имя диска в нижнем регистре
Неправильно - C: \ someFolder
Правильно - c: \ someFolder
источник