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


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

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

Это средство устанавливается автоматически с Visual Studio и пакетом SDK Windows. Чтобы запустить инструмент, мы рекомендуем использовать командную строку Visual Studio или командную строку пакета Windows SDK (командную оболочку). Эти служебные программы позволяют легко работать с инструментом, не переходя к папке установки. Дополнительные сведения см. в разделе Командная строка Visual Studio и пакета Windows SDK.

  • Если на компьютере установлена среда Visual Studio: на панели задач последовательно щелкните Start, All Programs, Visual Studio, Visual Studio Tools и Visual Studio Command Prompt.

    – или –

    Если на компьютере установлен пакет Windows SDK: на панели задач щелкните Start, выберите All Programs и откройте папку с пакетом Windows SDK, затем щелкните Command Prompt (или CMD Shell).

  • В командной строке введите следующее:

fuslogvw

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

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

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

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

    ПримечаниеПримечание

    Установленное по умолчанию местоположение привязки предпочтительнее пользовательского местоположения привязки.Среда выполнения хранит местоположение привязки, используемое по умолчанию, в кэше 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

Важное примечаниеВажно

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

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

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

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

ПримечаниеПримечание

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

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

См. также

Ссылки

TypeLoadException

Командная строка Visual Studio и пакета Windows SDK

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

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

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

Другие ресурсы

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

Журнал изменений

Дата

Журнал

Причина

Апрель 2011

Добавлены сведения об использовании командных строк Visual Studio и Windows SDK.

Улучшение информации.