Assembly Binding Log Viewer (Fuslogvw.exe)

Mise à jour : novembre 2007

L'Assembly Binding Log Viewer affiche des détails sur les liaisons d'assemblys. Ces informations vous permettent d'identifier les raisons pour lesquelles le .NET Framework ne parvient pas à trouver un assembly au moment de l'exécution. Ces échecs résultent généralement d'un assembly déployé au mauvais emplacement ou d'une incompatibilité entre les numéros de version ou les cultures. L'échec de la localisation d'un assembly par le Common Language Runtime s'affiche d'ordinaire sous la forme de TypeLoadException dans votre application.

Pour afficher le contenu du journal des liaisons d'assembly

La visionneuse affiche une entrée pour chaque liaison d'assembly ayant échoué. Pour chaque échec, la visionneuse décrit l'application qui a lancé la liaison, l'assembly concerné par la liaison (y compris le nom, la version, la culture et la clé publique), ainsi que la date et l'heure de l'échec.

Pour modifier l'affichage de l'emplacement du journal

  1. Activez la case d'option Default pour afficher les échecs des liaisons de toutes les applications. Par défaut, les entrées de journal sont stockées dans des répertoires par utilisateur sur le disque dans le cache WinInet.

  2. Activez la case d'option Custom pour afficher les échecs des liaisons dans un répertoire personnalisé que vous spécifiez. Vous devez spécifier l'emplacement personnalisé dans lequel vous souhaitez que l'exécution stocke les journaux en affectant à l'emplacement du journal personnalisé dans la boîte de dialogue Paramètres du journal la valeur d'un nom de répertoire valide. Ce répertoire doit être propre et contenir uniquement les fichiers générés par le runtime. S'il contient un exécutable qui génère un échec devant être enregistré dans le journal, ce dernier ne sera pas enregistré, car l'outil tente de créer un répertoire portant le même nom que l'exécutable. En outre, toute tentative d'exécution d'un exécutable à partir de l'emplacement du journal échouera.

    Remarque :

    L'emplacement des liaisons par défaut est préférable à l'emplacement des liaisons personnalisé. Le runtime stocke l'emplacement des liaisons par défaut dans le cache wininet et le vide par conséquent automatiquement. Si vous spécifiez un emplacement des liaisons personnalisé, vous devez vous-même le vider.

Pour afficher des détails sur un échec spécifique

  1. Sélectionnez le nom de l'application de l'entrée souhaitée dans la visionneuse.

  2. Cliquez sur le bouton Afficher le journal. Vous pouvez également double-cliquer sur l'entrée sélectionnée.

    L'outil affiche les détails suivants sur l'échec de la liaison sélectionné :

    • la raison spécifique de l'échec de la liaison, telle que « fichier introuvable » ou « incompatibilité entre les versions » ;

    • des informations sur l'application qui a lancé la liaison, parmi lesquelles son nom, le répertoire racine de l'application (AppBase) et le cas échéant, une description du chemin de recherche privé ;

    • l'identité de l'assembly recherché par l'outil ;

    • une description des stratégies de version de l'application, de l'éditeur ou de l'administrateur qui ont été appliquées ;

    • si l'assembly a été trouvé dans le Global Assembly Cache ;

    • une liste de toutes les URL recherchées.

L'exemple d'entrée de journal suivant montre des informations détaillées sur l'échec d'une liaison d'assembly.

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

Pour supprimer une seule entrée du journal

  1. Sélectionnez une entrée dans la visionneuse.

  2. Cliquez sur le bouton Delete Entry.

Pour supprimer toutes les entrées du journal

  • Cliquez sur le bouton Delete All.

Pour actualiser l'interface utilisateur

  • Cliquez sur le bouton Actualiser. La visionneuse ne détecte pas automatiquement les nouvelles entrées du journal pendant son exécution. Vous devez utiliser le bouton Actualiser pour les afficher.

Pour modifier les paramètres du journal

  • Cliquez sur le bouton Paramètres pour ouvrir la boîte de dialogue Paramètres du journal.

Pour afficher la boîte de dialogue À propos de

  • Cliquez sur le bouton À propos de.

Liaison de journaux pour des Images natives

Par défaut, Fuslogvw.exe enregistre les demandes de liaison d'assembly normales. Vous pouvez également enregistrer des liaisons d'assemblys pour les images natives qui ont été créées à l'aide du Outil Native Image Generator Tool (Ngen.exe).

Pour enregistrer des liaisons d'assemblys pour les images natives

  • Dans le groupe Catégories de journaux, activez la case d'option Images natives.

Le journal suivant affiche un échec provoqué par une dépendance qui n'existait pas au moment de la création de l'image native pour l'application. Si les dépendances au moment de l'exécution diffèrent des dépendances lorsque Ngen.exe est exécuté, la liaison à une image native n'est pas autorisée.

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

Le journal suivant montre un échec de liaison à une image native qui s'est produit parce que les paramètres de sécurité sur l'ordinateur au moment où l'application a été exécutée étaient différents des paramètres de sécurité en vigueur au moment où l'image native a été créée.

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

La boîte de dialogue Paramètres du journal

Vous pouvez utiliser la boîte de dialogue Paramètres du journal pour effectuer les actions suivantes.

Pour désactiver l'enregistrement

  • Activez la case d'option Enregistrement dans un journal désactivé. Notez que cette option est sélectionnée par défaut.

Pour enregistrer des liaisons d'assemblys dans les exceptions

  • Activez la case d'option Enregistrer dans un journal le texte de l'exception.

    Consultez la Remarque importante relative aux assemblys chargés comme étant indépendants du domaine.

Pour enregistrer des échecs de liaison d'assemblys

  • Activez la case d'option Enregistrer dans un journal sur le disque les échecs de liaison.

    Consultez la Remarque importante relative aux assemblys chargés comme étant indépendants du domaine.

Pour enregistrer toutes les liaisons d'assemblys

  • Activez la case d'option Enregistrer dans un journal sur le disque toutes les liaisons.

    Consultez la Remarque importante relative aux assemblys chargés comme étant indépendants du domaine.

Remarque importante :

Lorsqu'un assembly est chargé comme étant indépendant du domaine, par exemple en définissant la propriété LoaderOptimization à LoaderOptimization.MultiDomain ou LoaderOptimization.MultiDomainHost, l'activation de l'enregistrement peut entraîner une fuite de mémoire dans certains cas. Cela peut arriver si une entrée de journal est faite lorsqu'un module indépendant du domaine est chargé dans un domaine d'application, et qu'ultérieurement le domaine d'application est déchargé. L'entrée de journal ne peut pas être diffusée avant la fin du processus. Certains débogueurs activent automatiquement l'enregistrement.

Pour activer un chemin de journal personnalisé

  1. Activez la case d'option Activer le chemin du journal personnalisé.

  2. Entrer le chemin d'accès dans la zone de texte Chemin du journal personnalisé.

Remarque :

L'Assembly Binding Log Viewer (Fuslogvw.exe) utilise le cache Internet Explorer (IE) pour stocker son journal de liaison. En raison de perte d'intégrité occasionnelle du cache IE, l'Assembly Binding Log Viewer (Fuslogvw.exe) peut cesser d'afficher les nouveaux journaux de liaison dans la fenêtre d'affichage. Suite à cette perte d'intégrité, l'infrastructure de liaison .NET (fusion) ne peut pas écrire ou lire dans le journal de liaison. (Ce problème ne se pose pas si vous utilisez un chemin d'accès de journal personnalisé.) Pour résoudre le problème de perte d'intégrité et permettre à la fusion d'afficher à nouveau les journaux de liaison, videz le cache IE en supprimant les fichiers Internet temporaires à partir de la boîte de dialogue Options Internet d'Internet Explorer.

Si votre application non managée héberge le Common Language Runtime en implémentant les interfaces IHostAssemblyManager et IHostAssemblyStore, les entrées de journal ne peuvent pas être stockées dans le cache de wininet. Pour consulter les entrées de journal correspondant aux hôtes personnalisés qui implémentent ces interfaces, vous devez spécifier un autre chemin d'accès au journal.

Voir aussi

Concepts

Global Assembly Cache

Méthode de localisation des assemblys par le runtime

Référence

Outils du .NET Framework

TypeLoadException

Invite de commandes du Kit de développement SDK