Freigeben über


Fuslogvw.exe (Assembly Binding Log Viewer-Tool)

Aktualisiert: April 2011

Im Assembly Binding Log Viewer-Tool werden Details zu Assemblybindungen angezeigt. Mit diesen Informationen lässt sich leichter diagnostizieren, weshalb zur Laufzeit in .NET Framework keine Assembly gefunden werden kann. Diese Fehler resultieren normalerweise aus einer Assembly, die am falschen Ort bereitgestellt wird, einem systemeigenen Abbild, das nicht mehr gültig ist, oder aus Abweichungen bei Versionsnummern oder Kulturen. Wenn die Common Language Runtime eine Assembly nicht finden kann, wird dies in der Anwendung als TypeLoadException angezeigt.

Dieses Tool wird automatisch mit Visual Studio und mit dem Windows SDK installiert. Um das Tool auszuführen, empfiehlt es sich, dass Sie die Visual Studio-Eingabeaufforderung oder Windows SDK-Eingabeaufforderung (CMD-Shell) verwenden. Mit diesen Hilfsprogrammen können Sie das Tool problemlos ausführen, ohne in den Installationsordner zu navigieren. Weitere Informationen finden Sie unter Visual Studio- und Windows SDK-Eingabeaufforderungen.

  • Wenn Visual Studio auf dem Computer installiert ist: Klicken Sie auf der Taskleiste auf Start, All Programs, Visual Studio und Visual Studio Tools, und klicken Sie dann auf Visual Studio Command Prompt.

    – oder –

    Wenn das Windows SDK auf Ihrem Computer installiert ist: Klicken Sie auf der Taskleiste auf Start, All Programs, klicken Sie auf den Ordner für das Windows SDK, und klicken anschließend auf Command Prompt (oder CMD Shell).

  • Geben Sie an der Eingabeaufforderung Folgendes ein:

fuslogvw

Für jede fehlgeschlagene Assemblybindung wird ein Eintrag angezeigt. Darin werden folgende Daten angegeben: welche Anwendung die Bindung initialisiert hat, für welche Assembly die Bindung bestimmt ist (Name, Version, Kultur und öffentlicher Schlüssel) sowie Datum und Uhrzeit, wann der Fehler aufgetreten ist.

So ändern Sie die Anzeige des Protokollspeicherorts

  1. Wählen Sie das Optionsfeld Standard zur Anzeige von Bindungsfehlern für alle Anwendungstypen. Protokolleinträge werden standardmäßig auf dem Datenträger in Verzeichnissen nach Benutzer im WinInet-Cache gespeichert.

  2. Wählen Sie das Optionsfeld Benutzerdefiniert zur Anzeige von Bindungsfehlern in dem von Ihnen angegebenen Verzeichnis. Sie müssen den benutzerdefinierten Speicherort angeben, in dem die Protokolle von der Laufzeit gespeichert werden sollen, indem Sie den benutzerdefinierten Protokollspeicherort festlegen. Geben Sie dazu im Dialogfeld Protokolleinstellungen einen gültigen Verzeichnisnamen an. Dieses Verzeichnis sollte bis auf die Dateien, die von der Laufzeit generiert werden, leer sein. Wenn es eine ausführbare Datei enthält, die einen zu protokollierenden Fehler erzeugt, wird der Fehler nicht protokolliert, da das Tool versucht, ein Verzeichnis mit dem Namen der ausführbaren Datei zu erstellen. Außerdem schlägt der Versuch fehl, eine ausführbare Datei vom Protokollspeicherort auszuführen.

    HinweisHinweis

    Anstelle des benutzerdefinierten Bindungspfads wird die Verwendung des standardmäßigen Bindungspfads empfohlen.Der voreingestellte Pfad für die Standardbindung wird während der Laufzeit im WinInet-Cache gespeichert und daher auch automatisch gelöscht.Wenn Sie einen benutzerdefinierten Bindungspfad festlegen, müssen Sie diesen selbst löschen.

So zeigen Sie Details für einen bestimmten Fehler an

  1. Markieren Sie den Anwendungsnamen des gewünschten Eintrags.

  2. Klicken Sie auf die Schaltfläche Protokolldatei anzeigen. Alternativ können Sie auch auf den markierten Eintrag doppelklicken.

    Für den markierten Bindungsfehler werden folgende Details angezeigt:

    • Der Grund, warum die Bindung fehlgeschlagen ist, z. B. "Datei nicht gefunden" oder "Versionskonflikt".

    • Daten zur Anwendung, welche die Bindung initialisiert hat, z. B. Name und Stammverzeichnis (AppBase) der Anwendung sowie gegebenenfalls eine Beschreibung des privaten Suchpfades.

    • Die Identität der gesuchten Assembly.

    • Gegebenenfalls eine Beschreibung aller angewendeten Versionsrichtlinien (Anwendung, Herausgeber oder Administrator).

    • Angabe, ob die Assembly im globalen Assemblycache vorhanden ist.

    • Eine Liste aller bei der Untersuchung verwendeten URLs.

Das folgende Beispiel zeigt einen Protokolleintrag mit den Details einer fehlgeschlagenen Assemblybindung.

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

So löschen Sie einen Eintrag aus dem Protokoll

  1. Markieren Sie einen Eintrag.

  2. Klicken Sie auf die Schaltfläche Eintrag löschen.

So löschen Sie alle Einträge aus dem Protokoll

  • Klicken Sie auf die Schaltfläche Alles löschen.

So aktualisieren Sie die Benutzeroberfläche

  • Klicken Sie auf die Schaltfläche Aktualisieren. Neue Protokolleinträge werden nicht automatisch in die Anzeige aufgenommen. Sie werden erst angezeigt, wenn Sie auf Aktualisieren klicken.

So ändern Sie die Protokolleinstellungen

  • Klicken Sie auf die Schaltfläche Einstellungen, um das Dialogfeld Protokolleinstellungen zu öffnen.

So zeigen Sie das Dialogfeld Info an

  • Klicken Sie auf die Schaltfläche Info.

Binden von Protokollen für systemeigene Abbilder

Standardmäßig protokolliert Fuslogvw.exe normale Assembly-Bindungsanforderungen. Alternativ können Sie Assemblybindungen für systemeigene Abbilder protokollieren, die mit dem Ngen.exe (Native Image Generator) erstellt wurden.

So protokollieren Sie Assemblybindungen für systemeigene Abbildungen

  • Wählen Sie in der Gruppe Kategorien protokollieren das Optionsfeld Systemeigene Abbilder aus.

Im folgenden Protokoll wird ein Fehler aufgeführt, der von einer Abhängigkeit ausgelöst wurde, die nicht vorhanden war, als das systemeigene Abbild für die Anwendung erstellt wurde. Wenn sich die Abhängigkeiten zur Laufzeit von den Abhängigkeiten beim Ausführen von Ngen.exe unterscheiden, ist das Binden an ein systemeigenes Abbild nicht zulässig.

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

Im folgenden Protokoll wird ein Bindungsfehler für das systemeigene Abbild aufgeführt, der auftrat, weil sich die Sicherheitseinstellungen auf dem Computer, auf dem die Anwendung ausgeführt wurde, von den Sicherheitseinstellungen unterschieden, die beim Erstellen des systemeigenen Abbilds festgelegt waren.

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

Das Dialogfeld Protokolleinstellungen

Sie können das Dialogfeld Protokolleinstellungen verwenden, um die folgenden Aktionen auszuführen.

So deaktivieren Sie die Protokollierung

  • Wählen Sie das Optionsfeld Protokoll deaktiviert aus. Beachten Sie, dass diese Option in der Standardeinstellung aktiviert ist.

So protokollieren Sie Assemblybindungen in Ausnahmen

  • Wählen Sie das Optionsfeld In Ausnahmetext protokollieren aus.

    Im wichtigen Hinweis finden Sie Informationen über Assemblys, die als domänenneutrale Assemblys geladen werden.

So protokollieren Sie Assemblybindungsfehler

  • Wählen Sie das Optionsfeld Fehler von Bindungen an Datenträger protokollieren aus.

    Im wichtigen Hinweis finden Sie Informationen über Assemblys, die als domänenneutrale Assemblys geladen werden.

So protokollieren Sie alle Assemblybindungen

  • Wählen Sie das Optionsfeld Alle Bindungen an Datenträger protokollieren aus.

    Im wichtigen Hinweis finden Sie Informationen über Assemblys, die als domänenneutrale Assemblys geladen werden.

Wichtiger HinweisWichtig

Wenn eine Assembly als domänenneutrale Assembly geladen wird, z. B. durch Festlegen der LoaderOptimization-Eigenschaft auf LoaderOptimization.MultiDomain oder LoaderOptimization.MultiDomainHost, kann das Aktivieren der Protokollierung in einigen Fällen zu Speicherverlust führen.Dies kann der Fall sein, wenn beim Laden eines domänenneutralen Moduls in eine Anwendungsdomäne ein Protokolleintrag erfolgt und später die Anwendungsdomäne entladen wird.Der Protokolleintrag wird möglicherweise erst freigegeben, wenn der Prozess beendet wird.Einige Debugger aktivieren die Protokollierung automatisch.

So aktivieren Sie einen benutzerdefinierten Protokollpfad

  1. Wählen Sie das Optionsfeld Benutzerdefinierten Protokollpfad aktivieren aus.

  2. Geben Sie den Pfad in das Textfeld Benutzerdefinierter Protokollpfad ein.

HinweisHinweis

Das Fuslogvw.exe (Assembly Binding Log Viewer-Tool) verwendet den Internet Explorer (IE)-Cache zum Speichern des Bindungsprotokolls.Aufgrund gelegentlicher Beschädigungen des IE-Caches ist es möglich, dass Fuslogvw.exe (Assembly Binding Log Viewer-Tool) keine neuen Bindungsprotokolle mehr im Ansichtsfenster anzeigt.In Folge einer solchen Beschädigung kann die .NET-Bindungsinfrastruktur (Fusion) weder in das Bindungsprotokoll schreiben noch daraus lesen.(Dieses Problem tritt nicht auf, wenn Sie einen benutzerdefinierten Protokollpfad verwenden.) Um die Beschädigung zu beheben und Fusion wieder das Anzeigen von Bindungsprotokollen zu ermöglichen, löschen Sie den IE-Cache, indem Sie im Dialogfeld Internetoptionen von Internet Explorer die temporären Internetdateien löschen.

Wenn die nicht verwaltete Anwendung die Common Language Runtime durch Implementieren der IHostAssemblyManager-Schnittstelle und der IHostAssemblyStore-Schnittstelle hostet, können Protokolleinträge nicht im WinInet-Cache gespeichert werden.Um Protokolleinträge für benutzerdefinierte Hosts anzuzeigen, die diese Schnittstellen implementieren, müssen Sie einen alternativen Protokollpfad angeben.

Siehe auch

Referenz

TypeLoadException

Visual Studio- und Windows SDK-Eingabeaufforderungen

Konzepte

Globaler Assemblycache

So sucht Common Language Runtime nach Assemblys

Weitere Ressourcen

.NET Framework-Tools

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

April 2011

Hinzugefügte Informationen zur Verwendung der Visual Studio- und Windows SDK-Eingabeaufforderungen.

Informationsergänzung.