Сообщение «Регистрация привязки сборок выключена» (в английском варианте — Assembly binding logging is turned OFF) появляется в тексте ошибок .NET Framework при сбое загрузки библиотеки и означает не саму причину сбоя, а лишь то, что журнал диагностики привязок сборок (Fusion Log) отключён. Сама ошибка обычно звучит как FileNotFoundException, FileLoadException или «Не удается загрузить файл или сборку», а строка про выключенную регистрацию — это подсказка, что подробности сбоя можно увидеть, включив логирование.
Разберёмся, что стоит за этим сообщением, как включить регистрацию привязки сборок через реестр и штатную утилиту fuslogvw.exe, и как по журналу найти реальную причину — отсутствующую DLL, конфликт версий или повреждённый GAC.
Что означает это сообщение
Когда приложение на базе .NET Framework запрашивает сборку (DLL-библиотеку), среда CLR выполняет так называемую привязку — ищет нужную версию библиотеки в каталоге программы, в глобальном кэше сборок (GAC) и по путям, заданным в конфигурации. Если поиск завершается неудачей, программа получает исключение, а в его текст добавляется приписка о том, что регистрация привязки выключена.
Важно понимать: сама по себе выключенная регистрация не является ошибкой. Логирование привязок отключено по умолчанию, потому что оно замедляет загрузку сборок и создаёт файлы журнала на диске. Сообщение лишь говорит: «чтобы увидеть, где именно система искала библиотеку, включите журнал».
⚠️ Внимание: не пытайтесь «исправить» проблему, просто включив логирование. Журнал — это диагностический инструмент. Реальную причину (отсутствующий файл, неверную версию, битые разрешения) придётся устранять отдельно.
Как включить регистрацию через реестр
Основной способ активировать Fusion Log — добавить параметры в реестр Windows. Потребуются права администратора. Откройте редактор реестра (Win + R → regedit) и перейдите в раздел:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion
Если раздела Fusion нет, создайте его вручную. Затем добавьте параметры типа DWORD (32 бита):
- 🔧
ForceLog=1— записывать в журнал все привязки, включая успешные; - 📁
LogPath(строковый параметр) — путь к папке для логов, напримерC:\FusionLog; папку нужно создать заранее; - ⚠️
LogFailures=1— регистрировать только неудачные привязки (если ForceLog не нужен); - 🧩
LogResourceBinds=1— логировать привязки ресурсных (satellite) сборок, опционально.
После внесения изменений перезапустите проблемное приложение — перезагрузка системы обычно не требуется, так как CLR читает параметры при старте процесса. Воспроизведите ошибку и проверьте указанную папку: в ней появятся HTM-файлы с подробным отчётом по каждой привязке.
☑️ Включение журнала привязки сборок
Включение через утилиту fuslogvw.exe
Альтернативный способ — графическая утилита Assembly Binding Log Viewer (fuslogvw.exe), которая входит в состав Windows SDK и устанавливается вместе с Visual Studio. Она делает то же самое, что и правка реестра, но через интерфейс.
Запустите утилиту от имени администратора — иначе кнопки настроек будут неактивны. В окне нажмите Settings и выберите нужный режим:
- 🟢 Log disabled — регистрация выключена (состояние по умолчанию);
- 🔴 Log in exception text — добавлять данные о привязке прямо в текст исключения;
- 🟡 Log bind failures to disk — записывать на диск только сбойные привязки;
- 🔵 Log all binds to disk — полный журнал всех привязок, самый «тяжёлый» режим.
Для большинства случаев достаточно режима записи сбоев на диск. Утилита показывает логи в собственном окне по кнопке Refresh, а двойной щелчок по записи открывает детальный отчёт в браузере.
Как читать журнал и найти причину
Каждый HTM-файл журнала содержит «журнал попыток привязки»: последовательность каталогов и источников, где CLR искал сборку. Ключевые строки отчёта — имя запрошенной сборки, её версия, а также строки LOG: с попытками загрузки и итоговым результатом.
Типичные сценарии, которые видны в журнале:
| Признак в журнале | Вероятная причина | Что проверить |
|---|---|---|
| Файл не найден ни в одном каталоге | DLL отсутствует или не скопирована | Папку программы, зависимости установщика |
| Найдена сборка, но версия не совпадает | Конфликт версий библиотеки | Перенаправления версий в app.config / bindingRedirect |
| Ошибка доступа при загрузке | Недостаточно прав на файл или папку | Разрешения NTFS, блокировку антивирусом |
| Сбой при загрузке из GAC | Повреждённый кэш сборок или не та разрядность | Разрядность приложения (x86/x64), целостность .NET Framework |
| Ошибка сигнатуры строгого имени | Подменённая или пересобранная сборка | Источник библиотеки, цифровую подпись файла |
Обратите внимание на строку с архитектурой процесса. Частая ситуация: 64-разрядное приложение пытается загрузить 32-разрядную DLL (или наоборот), и журнал показывает сбой именно по этой причине. Проверьте, совпадает ли разрядность библиотеки с разрядностью процесса.
Как отключить регистрацию после диагностики
Оставлять логирование включённым постоянно не стоит: каждая загрузка сборки будет порождать файлы на диске и немного замедлять запуск .NET-приложений. После завершения диагностики верните исходное состояние.
Для отключения удалите созданные параметры (ForceLog, LogPath, LogFailures) из раздела HKLM\SOFTWARE\Microsoft\Fusion или установите их значения в 0. Если использовали fuslogvw.exe, достаточно выбрать в настройках режим Log disabled. Папку с накопленными журналами можно удалить.
Если ошибка остаётся после включения журнала
Включение логирования само по себе ничего не чинит — оно лишь показывает, где обрывается поиск сборки. Если по журналу причина неочевидна, действуйте от простого к сложному.
Сначала переустановите проблемное приложение или пакет, которому принадлежит недостающая библиотека (например, распространяемый пакет Visual C++ или конкретную версию .NET Framework). Затем проверьте целостность системных файлов командой sfc /scannow в командной строке от имени администратора. Для разработчиков дополнительный шаг — проверка bindingRedirect в конфигурационном файле приложения.
⚠️ Внимание: не скачивайте отдельные DLL со сторонних сайтов и не копируйте их в системные папки — это частый источник конфликтов версий и заражения системы. Библиотеки следует получать с официальным установщиком программы или пакетом .NET.
⚠️ Внимание: перед любыми правками реестра создайте точку восстановления или экспортируйте изменяемый раздел через меню «Файл → Экспорт» в regedit. Ошибочное изменение чужих разделов может нарушить работу системы.
Почему сообщение появляется даже при успешном запуске других программ
Журнал привязок глобален для всей системы, но текст о выключенной регистрации добавляется только в исключения загрузки сборок. Программы, у которых все зависимости на месте, работают без упоминания Fusion Log независимо от того, включён он или нет. Поэтому сообщение всегда сопровождает конкретный сбой конкретного приложения.
Частые вопросы
Регистрация привязки сборок выключена — это вирус или сбой Windows?
Нет, это штатное информационное сообщение .NET Framework. Оно указывает, что подробный журнал загрузки библиотек отключён. Сама проблема — в исключении, которое сопровождает это сообщение (отсутствующая или несовместимая сборка).
Нужно ли перезагружать компьютер после правки реестра?
Обычно достаточно перезапустить проблемное приложение: параметры Fusion считываются при старте процесса. Перезагрузка системы для включения журнала не требуется.
Не могу найти fuslogvw.exe на компьютере — что делать?
Утилита входит в Windows SDK и Visual Studio и по умолчанию в чистой системе отсутствует. Если устанавливать SDK не хочется, используйте способ через реестр — он полностью равнозначен.
Можно ли оставить логирование включённым навсегда?
Технически можно, но нежелательно: создаются лишние файлы журнала и добавляется небольшая задержка при загрузке сборок. После завершения диагностики параметры лучше удалить или обнулить.
Журнал включил, но папка пустая — в чём причина?
Проверьте, что папка из LogPath существует и у процесса есть права на запись в неё. Также убедитесь, что вы воспроизвели ошибку после включения логирования, а редактор реестра или fuslogvw запускались с правами администратора.