Assembly Binding Log Viewer (Fuslogvw.exe)
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
- Exécutez Fuslogvw.exe à partir de Invite de commandes du Kit de développement SDK.
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
Sélectionnez 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.
Sélectionnez 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.
Notes
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
Sélectionnez le nom de l'application de l'entrée souhaitée dans la visionneuse.
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/2002 @ 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\v1.0.3705\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
Sélectionnez une entrée dans la visionneuse.
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.
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
- Sélectionnez 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
Sélectionnez 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
Sélectionnez 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
Sélectionnez 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.
Important
Lorsqu'un assembly est chargé comme étant indépendant du domaine, par exemple en définissant la propriété LoaderOptimization à System.LoaderOptimization.MultiDomain ou System.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é
Sélectionnez la case d'option Activer le chemin du journal personnalisé.
Entrer le chemin d'accès dans la zone de texte Chemin du journal personnalisé.
Notes
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
Référence
Outils du .NET Framework
TypeLoadException Class
Invite de commandes du Kit de développement SDK
Concepts
Global Assembly Cache
Méthode de localisation des assemblys par le runtime