Предупреждение «регистрация привязки сборок выключена» появляется в логах ошибок .NET Framework в момент, когда приложение не может загрузить нужную сборку, а подробная диагностика привязки (Fusion Log) в системе отключена. Типичный фрагмент выглядит так: WRN: Assembly binding logging is turned OFF, после чего следует указание, что журнал можно включить через значение реестра ForceLog. Само по себе это не ошибка, а подсказка загрузчика сборок: он не смог записать детали неудачной привязки, потому что соответствующий механизм протоколирования деактивирован.

Для разработчика или администратора это предупреждение — сигнал, что реальную причину сбоя (например, FileNotFoundException или FileLoadException) придётся искать вслепую, пока логирование не включено. Ниже разберём, откуда берётся это сообщение, как безопасно включить журнал привязки сборок и как интерпретировать полученные данные.

Что означает это предупреждение

Инфраструктура .NET Framework использует механизм, известный как Fusion, для поиска и загрузки сборок. Когда приложение запрашивает сборку по имени, версии, культуре и открытому ключу, Fusion выполняет привязку: проверяет GAC, каталог приложения, пути probing, политики перенаправления версий. Если привязка завершается неудачей, в исключение добавляется строка о том, что регистрация привязки выключена.

Ключевой момент: сообщение Assembly binding logging is turned OFF не является причиной сбоя. Причина — отсутствующая, повреждённая или несовместимая по версии сборка. Предупреждение лишь сообщает, что подробный отчёт о том, где именно загрузчик искал файл и почему отклонил найденные варианты, не был записан.

💡

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

Типичные сценарии появления

Чаще всего проблема всплывает в таких ситуациях:

  • 🔧 Приложение выдаёт Could not load file or assembly с указанием конкретной сборки и её версии.
  • 📦 После обновления программы или установки нового пакета старая зависимость перестала находиться.
  • 🌐 Веб-приложение на IIS падает при старте, а в журнале событий видна та же строка про выключенную регистрацию.
  • 🧩 Плагин или сторонняя библиотека требует версию сборки, отличную от установленной, и перенаправление версий не настроено.

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

Как включить регистрацию привязки сборок через реестр

Основной способ — установить параметры в разделе реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion. Изменения применяются к процессам, запущенным после правки; уже работающие приложения нужно перезапустить. Для внесения изменений потребуются права администратора.

Параметр (DWORD)ЗначениеНазначение
ForceLog1Логировать все привязки, включая неудачные
LogFailures1Логировать только неудачные привязки
LogResourceBinds1Логировать привязки сателлитных сборок ресурсов
LogPathстрока, например C:\FusionLog\Каталог для записи логов в файлы

Пример команды для включения логирования всех ошибок привязки через командную строку с правами администратора:

reg add "HKLM\SOFTWARE\Microsoft\Fusion" /v ForceLog /t REG_DWORD /d 1 /f

reg add "HKLM\SOFTWARE\Microsoft\Fusion" /v LogPath /t REG_SZ /d "C:\FusionLog\" /f

⚠️ Внимание: каталог, указанный в LogPath, нужно создать заранее — если папки не существует, логи могут не записываться. Также учтите, что включённое логирование замедляет загрузку сборок, поэтому после диагностики параметры стоит удалить или обнулить.

☑️ Включение журнала привязки сборок

Выполнено: 0 / 5

Включение через Fuslogvw.exe

Альтернатива ручной правке реестра — утилита Assembly Binding Log Viewer, известная как Fuslogvw.exe. Она входит в состав Windows SDK и средств разработчика Visual Studio. Запустить её нужно от имени администратора, иначе настройки не сохранятся.

В окне утилиты через кнопку Settings выбирается режим: логировать только ошибки привязки или все привязки без исключения. После этого воспроизводите сбой и обновляйте список — каждая запись открывается как HTML-отчёт с полной цепочкой поиска сборки. Если записей нет, проверьте, что утилита запущена с повышенными правами и что приложение было перезапущено.

📊 Где вы столкнулись с предупреждением о выключенной регистрации привязки?
В десктопном приложении .NET
В веб-приложении на IIS
В журнале событий Windows
При работе стороннего плагина или библиотеки

Как читать журнал привязки

Запись Fusion Log показывает последовательность шагов загрузчика: откуда поступил запрос (вызывающая сборка), какие пути проверялись, какие политики издателя и перенаправления версий применялись, и на каком этапе произошёл отказ. Ищите строки LOG: с попытками загрузки и финальное ERR: с описанием результата.

Типичная картина: загрузчик ищет сборку версии, скажем, 2.0.0.0, а в каталоге приложения лежит 3.1.0.0. Тогда решение — либо положить нужную версию рядом с исполняемым файлом, либо добавить binding redirect в конфигурационный файл приложения (app.config или web.config):

<dependentAssembly>

<assemblyIdentity name="Example.Library" publicKeyToken="32ab4ba45e0a69a1" culture="neutral"/>

<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0"/>

</dependentAssembly>

Значение publicKeyToken и точные номера версий нужно брать из реальной сборки и из текста ошибки — подставлять «примерные» значения бессмысленно, перенаправление просто не сработает.

💡

Имя сборки, версию и publicKeyToken удобно смотреть в тексте исходного исключения или через команду "sn -T имя_сборки.dll" из инструментов разработчика.

Когда логирование стоит отключить

Постоянно включённый ForceLog на рабочей машине или сервере — плохая идея. Каждая загрузка сборки сопровождается записью на диск, что заметно замедляет холодный старт приложений и засоряет диск HTML-файлами. На сервере с IIS объём логов может расти особенно быстро.

После завершения диагностики удалите добавленные значения реестра или установите их в ноль:

reg delete "HKLM\SOFTWARE\Microsoft\Fusion" /v ForceLog /f

reg delete "HKLM\SOFTWARE\Microsoft\Fusion" /v LogPath /f

⚠️ Внимание: перед правкой реестра создайте точку восстановления или экспортируйте изменяемый раздел. Ошибочные изменения в других ветках реестра способны нарушить работу системы.
Почему лог пустой, хотя ForceLog включён

Наиболее частые причины — приложение не перезапущено после правки реестра, папка LogPath не существует, либо сбой происходит в 64-разрядном процессе, а настройки проверялись в контексте другой разрядности. Также убедитесь, что смотрите логи того же пользователя, под которым работает приложение — пулы приложений IIS часто работают под отдельными учётными записями.

Что делать, если причина так и не найдена

Если журнал показывает, что сборка находится и загружается, но приложение всё равно падает, проблема может быть глубже: несовпадение разрядности процесса (x86 против x64), повреждённый GAC, конфликт зависимостей внутри самой библиотеки. Здесь полезны дополнительные инструменты — просмотр зависимостей сборки, проверка целевой платформы проекта, анализ журнала событий Windows.

В сложных случаях имеет смысл свериться с документацией конкретного приложения или библиотеки: у поставщика могут быть заявленные требования к версиям .NET Framework и известные конфликты зависимостей. Это надёжнее, чем подбор перенаправлений версий методом проб.

💡

Порядок действий всегда один: включить Fusion Log → воспроизвести ошибку → прочитать цепочку поиска сборки → устранить несовпадение версий → отключить логирование.

Частые вопросы

Опасно ли включать регистрацию привязки сборок?

Само по себе логирование безопасно — оно лишь записывает отчёты о загрузке сборок. Риск связан только с правкой реестра, поэтому изменения вносите аккуратно и с правами администратора, а после диагностики отключайте.

Работает ли этот метод в .NET Core и .NET 5+?

Механизм Fusion Log относится к классическому .NET Framework. В современных версиях .NET диагностика загрузки сборок выполняется иначе — через события трассировки и переменные окружения, поэтому описанные ключи реестра там не применяются.

Почему ошибка осталась после включения логирования?

Логирование не исправляет ошибку — оно только показывает её причину. Устранить сбой нужно отдельно: добавить недостающую сборку, настроить перенаправление версий или установить требуемый пакет.

Где искать Fuslogvw.exe, если SDK не установлен?

Утилита распространяется в составе Windows SDK и Visual Studio. Если устанавливать их не хочется, достаточно ручной правки реестра — логи будут записываться в папку, указанную в LogPath, и откроются в браузере.

Нужно ли перезагружать компьютер после правки реестра?

Перезагрузка системы не требуется. Достаточно перезапустить само приложение или пул приложений IIS, чтобы загрузчик сборок считал новые параметры.