Поделиться через


Средство просмотра журнала привязки сборок (Fuslogvw.exe)

Обновлен: Ноябрь 2007

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

Чтобы просмотреть содержимое журнала привязки сборок

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

Чтобы изменить представление местоположения журнала

  1. Чтобы просмотреть сбои привязки для всех типов приложений, выберите параметр По умолчанию. Записи журнала по умолчанию хранятся в каталогах для отдельных пользователей на жестком диске в кэше Wininet.

  2. Чтобы просмотреть ошибки привязки в пользовательском каталоге, выберите параметр Настраиваемый. Необходимо указать пользовательское местоположение, где среда выполнения должна хранить журналы, задав для пользовательского расположения журнала в диалоговом окне Параметры журнала имя допустимого каталога. Этот каталог должен быть чист и должен содержать только файлы, создаваемые средой выполнения. Если в этом каталоге находится исполняемый файл, создающий ошибку, которую требуется занести в журнал, ошибка не будет зарегистрирована в журнале, так как инструмент просмотра попытается создать каталог с именем исполняемого файла. Кроме того, попытка запустить исполняемый файл из местоположения журнала завершится сбоем.

    e74a18c4.alert_note(ru-ru,VS.90).gifПримечание.

    Установленное по умолчанию местоположение привязки предпочтительнее пользовательского местоположения привязки. Среда выполнения хранит местоположение привязки, используемое по умолчанию, в кэше Wininet и потому автоматически очищает его. Пользовательское местоположение привязки необходимо очищать вручную.

Чтобы просмотреть подробный отчет о конкретной ошибке

  1. Выберите имя приложения нужной записи в средстве просмотра.

  2. Нажмите кнопку Просмотреть журнал. Также можно дважды щелкнуть выбранную запись.

    Будут отображены следующие сведения о выбранной ошибке привязки:

    • Причина возникновения ошибки, например "файл не найден" или "несоответствие версий".

    • Сведения о приложении, выполнявшем привязку, в том числе имя, корневой каталог приложения (AppBase) и описание частного пути поиска, если он существует.

    • Идентификация сборки, которую ищет средство.

    • Описание любых примененных политик версий приложения, издателя и администратора.

    • Сведения о том, была ли обнаружена сборка в глобальном кэше сборок.

    • Список всех проверенных URL-адресов.

Приведенная ниже запись журнала содержит подробные сведения о неудачной привязке сборки.

** Assembly Binder Log Entry (3/5/2007 @ 12:54:20 PM) **

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  C:\WINNT\Microsoft.NET\Framework\v2.0.50727\fusion.dll
Running under executable  C:\Program Files\Microsoft.NET\FrameworkSDK\Samples\Tutorials\resourcesandlocalization\graphic\cs\graphicfailtest.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: DisplayName = graphicfailtest.resources, Version=0.0.0.0, Culture=en-US, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = C:\Program Files\Microsoft.NET\FrameworkSDK\Samples\Tutorials\resourcesandlocalization\graphic\cs\
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = NULL
Calling assembly : graphicfailtest, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
===

LOG: Processing DEVPATH.
LOG: DEVPATH is not set. Falling through to regular bind.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Post-policy reference: graphicfailtest.resources, Version=0.0.0.0, Culture=en-US, PublicKeyToken=null
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/en-US/graphicfailtest.resources.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/en-US/graphicfailtest.resources/graphicfailtest.resources.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/en-US/graphicfailtest.resources.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/en-US/graphicfailtest.resources/graphicfailtest.resources.EXE.
LOG: All probing URLs attempted and failed.

Чтобы удалить запись из журнала

  1. Выберите запись в средстве просмотра.

  2. Нажмите кнопку Удалить запись.

Чтобы удалить все записи из журнала

  • Нажмите кнопку Удалить все.

Чтобы обновить интерфейс пользователя

  • Нажмите кнопку Обновить. Во время работы программы новые записи не выявляются автоматически. Чтобы отобразить их, необходимо нажать кнопку Refresh .

Чтобы изменить параметры журнала

  • Нажмите кнопку Параметры, чтобы открыть диалоговое окно Параметры журнала.

Чтобы просмотреть диалоговое окно "О"

  • Нажмите кнопку О.

Привязка журналов для образов в машинном коде

По умолчанию Fuslogvw.exe включает в журнал обычные запросы на привязку сборок. Можно также включать в журнал привязки сборок для образов в машинном коде, которые были созданы с использованием Генератор образов в машинном коде (Ngen.exe).

Чтобы включать в журнал привязки для образов в машинном коде

  • В группе Категории журналов выберите параметр Образ в машинном коде.

В следующем ниже журнале показана ошибка, вызванная зависимостью, которая не существовала в момент создания образа в машинном коде для приложения. Если зависимости времени выполнения отличаются от зависимостей при выполнении Ngen.exe, привязка к образу в машинном коде не допускается.

** Assembly Binder Log Entry (12/8/2006 @ 5:22:07 PM) **

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  E:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll
Running under executable  E:\test\App.exe
--- A detailed error log follows. 

LOG: Start binding of native image App, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
LOG: IL assembly loaded from E:\test\App.exe.
LOG: Start validating native image App, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
LOG: Start validating all the dependencies.
LOG: [Level 1]Start validating native image dependency mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
LOG: Dependency evaluation succeeded.
LOG: [Level 1]Start validating IL dependency b, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
WRN: Dependency assembly was not found at ngen time, but is found at binding time. Disallow using this native image.
WRN: No matching native image found.
LOG: Bind to native image assembly did not succeed. Use IL image.

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

** Assembly Binder Log Entry (12/8/2006 @ 5:29:09 PM) **

The operation failed.
Bind result: hr = 0x80004005. Unspecified error

Assembly manager loaded from:  E:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll
Running under executable  E:\test\Application101622.exe
--- A detailed error log follows. 

LOG: Start binding of native image Application101622, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
LOG: IL assembly loaded from E:\test\Application101622.exe.
LOG: Start validating native image Application101622, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
LOG: Start validating all the dependencies.
LOG: [Level 1]Start validating native image dependency mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
LOG: Dependency evaluation succeeded.
LOG: [Level 1]Start validating IL dependency Dependency101622, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
LOG: Dependency evaluation succeeded.
LOG: Validation of dependencies succeeded.
LOG: Start loading all the dependencies into load context.
LOG: Loading of dependencies succeeded.
LOG: Bind to native image succeeded.
Native image has correct version information.
Attempting to use native image E:\Windows\assembly\NativeImages_v2.0.50727_64\Application101622\1ac7fadabec4f72575d807501e9fdc72\Application101622.ni.exe.
Rejecting native image because it failed the security check. The assembly's permissions must have changed since the time it was ngenned, or it is running with a different security context.
Discarding native image.

Диалоговое окно "Параметры журнала"

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

Чтобы отключить ведение журнала

  • Выберите параметр Журнал отключен. Обратите внимание, что этот параметр выбран по умолчанию.

Чтобы включать в журнал привязки сборок в исключениях

  • Выберите параметр Запись в текст исключения.

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

Чтобы включать в журнал сбои привязки сборок

  • Выберите параметр Запись ошибок привязки на диск.

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

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

  • Выберите параметр Запись всех привязок на диск.

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

e74a18c4.alert_caution(ru-ru,VS.90).gifВажное примечание.

Если сборка загружается как нейтральная к домену, например при установке для свойства LoaderOptimization значения LoaderOptimization.MultiDomain или LoaderOptimization.MultiDomainHost, включение ведения журнала в некоторых случаях может привести к утечкам памяти. Это может произойти в том случае, если запись вносится в журнал при загрузке нейтрального к домену модуля в домен приложения с последующей выгрузкой домена приложения. Запись в журнале не может быть освобождена до завершения данного процесса. Некоторые отладчики включают привязку автоматически.

Чтобы разрешить пользовательский путь к журналу

  1. Выберите параметр Разрешить пользовательский путь к журналу.

  2. Введите путь в текстовом поле Пользовательский путь к журналу.

e74a18c4.alert_note(ru-ru,VS.90).gifПримечание.

Средство просмотра журнала привязки сборок (Fuslogvw.exe) использует для хранения своего журнала привязок кэш обозревателя Internet Explorer (IE). В связи с тем, что время от времени происходит повреждение кэша обозревателя Internet Explorer, Средство просмотра журнала привязки сборок (Fuslogvw.exe) иногда прекращает отображение новых журналов привязки в окне просмотра. В результате таких сбоев инфраструктура привязки в платформе .NET (fusion) не может выполнять запись в журнал привязок или считывание из него. (Эта проблема не возникает при выборе пользовательского пути к журналу). Чтобы устранить эту неполадку и позволить объекту fusion снова отображать привязки, следует очистить кэш IE посредством удаления временных файлов Интернета в диалоговом окне "Свойства обозревателя".

Если неуправляемое приложение размещает общеязыковую среду выполнения посредством реализации интерфейсов IHostAssemblyManager и IHostAssemblyStore, хранение записей журнала в кэше Wininet невозможно. Чтобы просмотреть записи журнала для пользовательских размещающих объектов, которые реализуют эти интерфейсы, необходимо задать альтернативный путь к журналу.

См. также

Основные понятия

Глобальный кэш сборок

Обнаружение сборок в среде выполнения

Ссылки

Инструменты .NET Framework

TypeLoadException

Командная строка пакета SDK