Fuslogvw.exe (Visualizador de Registos de Enlaces de Assemblagem)
O Visualizador de Registos de Enlaces de Assemblagem apresenta os detalhes dos enlaces de assemblagem. Estas informações ajudam-no a diagnosticar o motivo pelo qual o .NET Framework não consegue localizar uma assemblagem no tempo de execução. Normalmente, estas falhas são o resultado de uma assemblagem implementada na localização errada, de uma imagem nativa que já não é válida ou de um erro de correspondência em números de versões ou culturas. Normalmente, a falha do runtime de idioma comum para localizar uma assemblagem aparece como uma TypeLoadException na sua aplicação.
Importante
Tem de executar fuslogvw.exe com privilégios de administrador.
Esta ferramenta é instalada automaticamente com o Visual Studio. Para executar a ferramenta, utilize a Linha de Comandos do Programador do Visual Studio ou o PowerShell para Programadores do Visual Studio com credenciais de administrador.
Na linha de comandos, introduza o seguinte comando:
fuslogvw
O visualizador apresenta uma entrada para cada enlace de assemblagem com falhas. Para cada falha, o visualizador descreve:
- a aplicação que iniciou o enlace
- a assemblagem a que se destina o enlace, incluindo o nome, a versão, a cultura e a chave pública
- a data e hora da falha
Como...
- Alterar a vista de localização do registo
- Ver detalhes sobre uma falha específica
- Eliminar entradas
- Atualizar a interface de utilizador
- Alterar as definições de registo
- Ver a caixa de diálogo Acerca de
Alterar a vista de localização do registo
Selecione o botão Opção predefinida para ver falhas de enlace para todos os tipos de aplicações. Por predefinição, as entradas de registo são armazenadas em diretórios por utilizador no disco na cache wininet.
Selecione o botão Opção personalizada para ver falhas de enlace num diretório personalizado que especificar. Tem de especificar a localização personalizada onde pretende que o runtime armazene os registos ao definir a localização do registo personalizado na caixa de diálogo Definições de Registo para um nome de diretório válido. Este diretório deve estar limpo e conter apenas ficheiros gerados pelo runtime. Se contiver um executável que gere uma falha a registar, a falha não será registada 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 a partir da localização do registo falhará.
Nota
A localização predefinida do enlace é preferível à localização de enlace personalizada. O runtime armazena a localização de enlace predefinida na cache wininet e, por conseguinte, limpa-a automaticamente. Se especificar uma localização de enlace personalizada, é responsável por limpá-la.
Ver detalhes sobre uma falha específica
Selecione o nome da aplicação da entrada pretendida no visualizador.
Clique no botão Ver Registo . Em alternativa, pode fazer duplo clique na entrada selecionada.
A ferramenta apresenta os seguintes detalhes sobre a falha de enlace selecionada:
O motivo específico da falha do enlace, como "ficheiro não encontrado" ou "erro de correspondência da versão".
Informações sobre a aplicação que iniciou o enlace, incluindo o respetivo nome, o diretório de raiz da aplicação (AppBase) e uma descrição do caminho de pesquisa privado, se existir um.
A identidade da assemblagem que a ferramenta procura.
Uma descrição de todas as políticas de versão de Aplicação, Publicador ou Administrador que tenham sido aplicadas.
Se a assemblagem foi encontrada na cache de assemblagem global.
Uma lista de todos os URLs de pesquisa.
A seguinte entrada de registo de exemplo mostra informações detalhadas sobre um enlace de assemblagem com falhas.
*** 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.
Eliminar entradas
Para eliminar uma única entrada do registo:
Selecione uma entrada no visualizador.
Clique no botão Eliminar Entrada .
Para eliminar todas as entradas do registo:
- Clique no botão Eliminar Tudo .
Atualizar a interface de utilizador
- Clique no botão Atualizar . O visualizador não deteta automaticamente novas entradas de registo enquanto estiver em execução. Tem de utilizar o botão Atualizar para os apresentar.
Alterar as definições de registo
Clique no botão Definições para abrir a caixa de diálogo Definições de Registo .
Ver a caixa de diálogo Acerca de
Clique no botão Acerca de.
Registos de enlace para imagens nativas
Por predefinição, Fuslogvw.exe regista pedidos normais de enlace de assemblagem. Em alternativa, pode registar vinculações de assemblagem para imagens nativas criadas com o Ngen.exe (Gerador de Imagens Nativas).
Vinculações de assemblagem de registos para imagens nativas
- No grupo Categorias de Registo , selecione o botão de opção Imagens Nativas .
O registo seguinte mostra uma falha causada por uma dependência que não existia quando a imagem nativa foi criada para a aplicação. Se as dependências no tempo de execução forem diferentes das dependências quando Ngen.exe é executada, não é permitido vincular a uma imagem nativa.
*** 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 registo seguinte mostra uma falha de enlace de imagem nativa que ocorreu porque as definições de segurança no computador quando a aplicação foi executada eram diferentes das definiçõ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 Definições de Registo
Pode utilizar a caixa de diálogo Definições de Registo para efetuar as seguintes ações.
Para desativar o registo
- Selecione o botão de opção Registar desativado . Tenha em atenção que esta opção está selecionada por predefinição.
Para vincular a assemblagem de registos em exceções
Selecione o botão de opção Iniciar sessão de texto de exceção . Apenas as informações de registo de fusão menos detalhadas são registadas no texto de exceção. Para ver informações completas, utilize uma das outras definições.
Veja a nota Importante relativamente às assemblagens que são carregadas como neutras em domínio.
Para registar falhas de enlace de assemblagem
Selecione o botão de opção Registar falhas de enlace no disco .
Veja a nota Importante relativamente às assemblagens que são carregadas como neutras em domínio.
Para registar todos os enlaces de assemblagem
Selecione o botão Registar todas as ligações ao disco .
Veja a nota Importante relativamente às assemblagens que são carregadas como neutras em domínio.
Importante
Quando uma assemblagem é carregada como neutra em domínios, por exemplo, ao definir a propriedade como LoaderOptimization.MultiDomain ou LoaderOptimization.MultiDomainHost, ativar o LoaderOptimization registo pode perder memória em alguns casos. Isto pode acontecer se for feita uma entrada de registo quando um módulo neutro em domínio é carregado para um domínio de aplicação e, posteriormente, o domínio da aplicação é descarregado. A entrada de registo poderá não ser lançada até que o processo termine. Alguns depuradores ativam automaticamente o registo.
Para ativar um caminho de registo personalizado
Selecione o botão Ativar caminho de registo personalizado .
Introduza o caminho na caixa de texto Caminho de registo personalizado .
Nota
O Visualizador de Registos de Enlace de Assemblagem (Fuslogvw.exe) utiliza a cache de ficheiros da Internet para armazenar o registo de enlace. Devido a danos ocasionais na cache, o Visualizador de Registos de Enlace de Assemblagem (Fuslogvw.exe) pode, por vezes, deixar de mostrar novos registos de enlace na janela de visualização. Como resultado deste dano, a infraestrutura de enlace .NET (fusão) não consegue escrever ou ler a partir do registo de enlace. (Este problema não é encontrado se utilizar um caminho de registo personalizado.) Para corrigir os danos e permitir que a fusão mostre registos de enlace novamente, limpe a cache de ficheiros da Internet ao eliminar ficheiros temporários da Internet da secção Histórico de navegação nas propriedades da Internet.
Se a sua aplicação não gerida alojar o runtime de idioma comum ao implementar as IHostAssemblyManager
interfaces e IHostAssemblyStore
, em seguida, as entradas de registo não podem ser armazenadas na cache wininet. Para ver entradas de registo para anfitriões personalizados que implementam estas interfaces, tem de especificar um caminho de registo alternativo.
Para ativar o registo de aplicações em execução no contentor de aplicações do Windows
Ative um caminho de registo personalizado, conforme descrito no procedimento anterior. Por predefinição, as aplicações que estão a ser executadas no contentor de aplicações do Windows têm acesso limitado ao disco rígido. O diretório especificado terá acesso de leitura/escrita para todas as aplicações no contentor da aplicação.
Selecione a caixa de verificação Ativar registo envolvente .
Nota
Esta caixa só está ativada no Windows 8 ou posterior.