Compartilhar via


Fuslogvw.exe (Visualizador do Log de Associações de Assembly)

O Visualizador de Log de Associação do Assembly exibe detalhes das associações de assembly. Essas informações ajudam a diagnosticar por que o .NET Framework não pode localizar um assembly no tempo de execução. Essas falhas normalmente são o resultado de um assembly implantado no local incorreto, de uma imagem nativa que não é mais válida ou de uma incompatibilidade em números de versão ou culturas. A falha no Common Language Runtime em localizar um assembly costuma aparecer 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 do assembly com falha. Para cada falha, o visualizador descreve:

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

Como...

Alterar a exibição do local do log

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

  2. Selecione o botão de opção Personalizar para exibir falhas de associação em um diretório personalizado especificado. Você deve especificar o local personalizado no qual 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 estar limpo e conter apenas arquivos gerados pelo runtime. Se ele contiver um executável que gere uma falha a ser registrada em log, a falha não será registrada em log porque a ferramenta tenta criar um diretório com o mesmo nome do executável. Além disso, haverá falha em uma tentativa de executar um executável com base no local do log.

    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, o limpa 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. Também é possível clicar duas vezes na entrada selecionada.

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

    • Um motivo específico para a falha na associação como, por exemplo, "arquivo não encontrado" ou "incompatibilidade 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 uma.

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

    • Uma descrição de qualquer política da versão Aplicativo, Editor ou Administrador aplicada.

    • Se o assembly estava ou não no cache de assembly global.

    • Uma lista de todas as URLs de sondagem.

A entrada do log de exemplo a seguir mostra informações detalhadas sobre uma associação do 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 durante a execução. Você deve usar o botão Atualizar para exibi-las.

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.

Associar logs para imagens nativas

Por padrão, Fuslogvw.exe registra em log solicitações de associação normais. Também é possível registrar em log associações de assembly para imagens nativas criadas usando o Ngen.exe (Gerador de Imagens Nativas).

Registrar em log associações de assembly 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 no tempo de execução forem diferentes das dependências durante a execução de Ngen.exe, 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 seguir mostra uma associação de imagem nativa com falha ocorrida 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

É possível 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. Essa opção não permanece selecionada por padrão.

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

  • Selecione o botão de opção Registrar em log o texto de exceção. Apenas as informações de log da fusão menos detalhadas são registradas em log em texto de exceção. Para exibir informações completas, use uma das outras configurações.

    Consulte a observação Importante a respeito de assemblies carregados como tendo domínio neutro.

Para registrar em log falhas na associação do assembly

  • Selecione o botão de opção Registrar falhas na associação em disco.

    Consulte a observação Importante a respeito de assemblies carregados como tendo domínio neutro.

Para registrar em log todas as associações de assembly

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

    Consulte a observação Importante a respeito de assemblies carregados como tendo domínio neutro.

Importante

Quando um assembly é carregado como tendo domínio neutro, por exemplo, definindo-se a propriedade LoaderOptimization como LoaderOptimization.MultiDomain ou a LoaderOptimization.MultiDomainHost, a ativação do registro em log pode causar perda de memória em alguns casos. Isso poderá acontecer se uma entrada de log for feita quando um módulo de domínio neutro for carregado em um domínio do aplicativo e, posteriormente, o domínio do aplicativo for descarregado. A entrada de log talvez não seja liberada até o término do processo. Alguns depuradores ativam o registro em log automaticamente.

Para habilitar um caminho de log personalizado

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

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

Observação

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

Se o aplicativo não gerenciado hospedar o Common Language Runtime implementando as interfaces IHostAssemblyManager e IHostAssemblyStore, as entradas de log não poderão ser armazenadas no cache de wininet. Para exibir entradas de log para hosts personalizadas 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 do aplicativo do Windows

  1. Habilite um caminho de log personalizado, conforme descrito no procedimento anterior. Por padrão, os aplicativos em execução no contêiner do aplicativo do Windows têm acesso limitado no disco rígido. O diretório especificado terá acesso de leitura/gravação em 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.

Confira também