Compartilhar via


Fuslogvw.exe (Visualizador de Log de Associação de Assembly)

O Visualizador de Log de Associação do Assembly exibe detalhes das associações de assembly. Essas informações ajudam você a diagnosticar por que o .NET Framework não pode localizar um assembly em runtime. Essas falhas geralmente são o resultado de um assembly implantado no local errado, uma imagem nativa que não é mais válida ou uma incompatibilidade em números de versão ou culturas. A falha do Common Language Runtime em localizar um assembly normalmente aparece como um TypeLoadException em seu aplicativo.

Importante

Você deve executar fuslogvw.exe com privilégios de administrador.

Essa ferramenta é instalada automaticamente com o Visual Studio. Para executar a ferramenta, use o Prompt de Comando do Desenvolvedor do Visual Studio ou o PowerShell do Desenvolvedor do Visual Studio com credenciais de administrador.

No prompt de comando, digite o seguinte comando:

fuslogvw

O visualizador exibe uma entrada para cada associação de assembly com falha. Para cada falha, o visualizador descreve:

  • o aplicativo que iniciou a associação
  • o assembly para o qual a associação é, incluindo nome, versão, cultura e chave pública
  • a data e a hora da falha

Como...

Alterar o modo de exibição de local de log

  1. Selecione o botão de opção Padrão para exibir falhas de associação para todos os tipos de aplicativo. Por padrão, as entradas de log são armazenadas em diretórios por usuário no disco no cache wininet.

  2. Selecione o botão de opção Personalizado para exibir falhas de associação em um diretório personalizado que você especificar. Você deve especificar o local personalizado em que deseja que o runtime armazene os logs definindo o local de log personalizado na caixa de diálogo Configurações de Log como um nome de diretório válido. Esse diretório deve ser limpo e conter apenas arquivos gerados pelo runtime. Se ele contiver um executável que gere uma falha ao ser registrado em log, a falha não será registrada porque a ferramenta tenta criar um diretório com o mesmo nome que o executável. Além disso, uma tentativa de executar um executável no local do log falhará.

    Observação

    O local de associação padrão é preferível ao local de associação personalizado. O runtime armazena o local de associação padrão no cache wininet e, portanto, limpa-o automaticamente. Se você especificar um local de associação personalizado, será responsável por limpá-lo.

Exibir detalhes sobre uma falha específica

  1. Selecione o nome do aplicativo da entrada desejada no visualizador.

  2. Clique no botão Exibir Log . Como alternativa, você pode clicar duas vezes na entrada selecionada.

    A ferramenta exibe os seguintes detalhes sobre a falha de associação selecionada:

    • O motivo específico pelo qual a associação falhou, como "arquivo não encontrado" ou "incompatibilidade de versão".

    • Informações sobre o aplicativo que iniciou a associação, incluindo seu nome, o diretório raiz do aplicativo (AppBase) e uma descrição do caminho de pesquisa privado, se houver um.

    • A identidade do assembly que a ferramenta está procurando.

    • Uma descrição de todas as políticas de versão de Aplicativo, Publicador ou Administrador que foram aplicadas.

    • Se o assembly foi encontrado no cache de assembly global.

    • Uma lista de todas as URLs de investigação.

A entrada de log de exemplo a seguir mostra informações detalhadas sobre uma associação de assembly com falha.

*** 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/graphicfailtest.resources.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/graphicfailtest.resources/graphicfailtest.resources.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/graphicfailtest.resources.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/graphicfailtest.resources/graphicfailtest.resources.EXE.
LOG: All probing URLs attempted and failed.

Excluir entradas

Para excluir uma única entrada do log:

  1. Selecione uma entrada no visualizador.

  2. Clique no botão Excluir Entrada .

Para excluir todas as entradas do log:

  • Clique no botão Excluir Tudo .

Atualizar a interface do usuário

  • Clique no botão Atualizar . O visualizador não detecta automaticamente novas entradas de log enquanto está em execução. Você deve usar o botão Atualizar para exibi-los.

Alterar as configurações de log

Clique no botão Configurações para abrir a caixa de diálogo Configurações de Log .

Exibir a caixa de diálogo Sobre

Clique no botão Sobre .

Logs de associação para imagens nativas

Por padrão, Fuslogvw.exe registra solicitações normais de associação de assembly. Como alternativa, você pode registrar associações de assembly para imagens nativas que foram criadas usando o Ngen.exe (Gerador de Imagem Nativa).

Associações de assembly de log para imagens nativas

  • No grupo Categorias de Log , selecione o botão de opção Imagens Nativas .

O log a seguir mostra uma falha causada por uma dependência que não existia quando a imagem nativa foi criada para o aplicativo. Se as dependências em runtime forem diferentes das dependências quando Ngen.exe for executado, a associação a uma imagem nativa não será permitida.

*** 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.

O log a seguir mostra uma falha de associação de imagem nativa que ocorreu porque as configurações de segurança no computador quando o aplicativo foi executado eram diferentes das configurações de segurança no momento em que a imagem nativa foi criada.

*** 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.

A caixa de diálogo Configurações de Log

Você pode usar a caixa de diálogo Configurações de Log para executar as ações a seguir.

Para desabilitar o registro em log

  • Selecione o botão de opção Log desabilitado . Observe que essa opção é selecionada por padrão.

Para registrar associações de assembly em exceções

  • Selecione o botão de opção De texto de exceção De logon . Somente as informações de log de fusão menos detalhadas são registradas no texto de exceção. Para exibir informações completas, use uma das outras configurações.

    Consulte a observação Importante sobre assemblies carregados como neutros de domínio.

Para registrar falhas de associação do assembly de log

  • Selecione o botão de opção Associar falhas de log ao disco .

    Consulte a observação Importante sobre assemblies carregados como neutros de domínio.

Para registrar todas as associações de assembly

  • Selecione o botão Registrar todas as associações à opção de disco .

    Consulte a observação Importante sobre assemblies carregados como neutros de domínio.

Importante

Quando um assembly é carregado como neutro de domínio, por exemplo, definindo a LoaderOptimization propriedade LoaderOptimization.MultiDomain como ou LoaderOptimization.MultiDomainHost, ativar o registro em log pode vazar memória em alguns casos. Isso pode acontecer se uma entrada de log for feita quando um módulo neutro de domínio for carregado em um domínio de aplicativo e, posteriormente, o domínio do aplicativo for descarregado. A entrada de log pode não ser liberada até que o processo seja encerrado. Alguns depuradores ativam automaticamente o registro em log.

Para habilitar um caminho de log personalizado

  1. Selecione o botão Habilitar caminho de log personalizado .

  2. Insira o caminho na caixa de texto Caminho de log personalizado .

Observação

O Visualizador de Log de Associação do Assembly (Fuslogvw.exe) usa o cache de arquivos da Internet para armazenar seu log de associação. Devido à corrupção ocasional no cache, o Visualizador de Log de Associação do Assembly (Fuslogvw.exe) às vezes pode parar de mostrar novos logs de associação na janela de exibição. Como resultado dessa corrupção, a infraestrutura de associação do .NET (fusão) não pode gravar ou ler do log de associação. (Esse problema não será encontrado se você usar um caminho de log personalizado.) Para corrigir a corrupção e permitir que a fusão mostre logs de associação novamente, desmarque o cache de arquivos da Internet excluindo arquivos temporários da Internet da seção Histórico de navegação em propriedades da Internet.

Se o aplicativo não gerenciado hospedar o common language runtime implementando o e IHostAssemblyStore as IHostAssemblyManager interfaces, as entradas de log não poderão ser armazenadas no cache wininet. Para exibir entradas de log para hosts personalizados que implementam essas interfaces, você deve especificar um caminho de log alternativo.

Para habilitar o registro em log para aplicativos em execução no contêiner de aplicativos do Windows

  1. Habilite um caminho de log personalizado, conforme descrito no procedimento anterior. Por padrão, os aplicativos que estão em execução no contêiner de aplicativos do Windows têm acesso limitado ao disco rígido. O diretório especificado terá acesso de leitura/gravação para todos os aplicativos no contêiner do aplicativo.

  2. Marque a caixa de seleção Habilitar registro em log imersivo .

    Observação

    Essa caixa só está habilitada no Windows 8 ou posterior.

Consulte também