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

Я получаю: "Не удалось загрузить файл или сборку" Bla "или одну из ее зависимостей. Была предпринята попытка загрузить программу с неверным форматом".

Часть подробной информации гласит:

"WRN: ведение журнала привязки сборки отключено. Чтобы включить ведение журнала ошибок привязки сборки, задайте для параметра реестра [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) значение 1. Примечание. При сбое привязки сборки наблюдается некоторое снижение производительности. ведение журнала. Чтобы отключить эту функцию, удалите значение реестра [HKLM\Software\Microsoft\Fusion!EnableLog]."

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

\Fusion 
    (Default)   value not set
    \GACChangeNotification
    \NativeImagesIndex
    \PublisherPolicy

Что мне не хватает?

10 ответов

Решение

Хорошее место, чтобы начать расследование любой неудачной привязки - использовать утилиту "fuslogvw.exe". Это может дать вам необходимую информацию, связанную с ошибкой привязки, чтобы вам не приходилось возиться с какими-либо значениями реестра, чтобы включить регистрацию привязки.

Fuslogvw MSDN страница

Утилита должна находиться в папке Microsoft SDK, которая может выглядеть примерно так, в зависимости от вашей операционной системы:"C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v {SDK version} A \ Bin \ FUSLOGVW.exe "

1) Запустите эту утилиту (она имеет графический интерфейс) и установите для параметров значение "Журнал ошибок привязки к диску".

2) Нажмите "Удалить все", чтобы очистить список всех предыдущих ошибок привязки.

3) Воспроизведите ошибку привязки в вашем приложении

4) В утилите нажмите Обновить. Затем вы должны увидеть ошибку привязки, зарегистрированную в списке.

5) Вы можете просмотреть информацию об ошибке привязки, выбрав ее в списке и нажав "Просмотр журнала"

Первое, что я ищу, - это путь, по которому приложение ищет сборку. Вы также должны убедиться, что номер версии рассматриваемой сборки соответствует ожидаемому.

Просто создайте новый DWORD(32) под ключом Fusion. Присвойте DWORD значение EnableLog и установите для него значение 1. Затем перезапустите IIS, обновите страницу с ошибками, и в сообщении об ошибке отобразятся журналы привязки сборки.

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

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

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

  4. Укажите ваше веб-приложение, чтобы использовать этот новый пул

Снимок экрана (IIS-ApplicationPool

Для меня 'Bla' файл был dll System.Net.http, который отсутствовал в моей папке BIN. Я только добавил это, и это работало отлично. Не изменил ни один ключ реестра или что-то в этом роде.

Вместо создания нового пула приложений, вы можете перейти к существующему пулу приложений->щелкните правой кнопкой мыши на расширенном параметре -> включить 32-битное приложение----- установите в значение TRUE

За ответ на pierce.jason выше мне повезло:

Просто создайте новый DWORD(32) под ключом Fusion. Присвойте DWORD значение LogFailures и установите для него значение 1. Затем перезапустите IIS, обновите страницу с ошибками, и в сообщении об ошибке отобразятся журналы привязки сборки.

Эта ошибка возникает для меня в приложении Windows при вызове DLL сервера от клиента. После перезагрузки системы работает нормально

В моем случае проблема решилась, когда я очистил решение и снова собрал его. Стоит попробовать!

Когда у меня была такая же проблема, я исправил ее, удалив существующую key.snk в этом проекте и добавление нового ключа.

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

Другие вопросы по тегам