Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Assemblybindungsprotokoll-Viewer zeigt Details für Assemblybindungen an. Anhand dieser Informationen können Sie diagnostizieren, warum .NET Framework zur Laufzeit keine Assembly finden kann. Diese Fehler sind in der Regel das Ergebnis einer Assembly, die an dem falschen Speicherort bereitgestellt wurde, ein systemeigenes Image, das nicht mehr gültig ist, oder eine Nichtübereinstimmung in Versionsnummern oder Kulturen. Der Fehler der Common Language Runtime beim Suchen einer Assembly wird in der Regel als TypeLoadException in Ihrer Anwendung angezeigt.
Von Bedeutung
Sie müssen fuslogvw.exe mit Administratorrechten ausführen.
Dieses Tool wird automatisch mit Visual Studio installiert. Verwenden Sie zum Ausführen des Tools visual Studio Developer Command Prompt oder Visual Studio Developer PowerShell mit Administratoranmeldeinformationen.
Geben Sie an der Eingabeaufforderung den folgenden Befehl ein:
fuslogvw
Der Viewer zeigt einen Eintrag für jede fehlgeschlagene Assemblybindung an. Für jeden Fehler beschreibt der Viewer Folgendes:
- die Anwendung, die die Bindung initiiert hat
- die Assembly, für die die Bindung verwendet wird, einschließlich Name, Version, Kultur und öffentlichem Schlüssel
- Datum und Uhrzeit des Fehlers
So wird es gemacht...
- Ändern der Protokollspeicherortansicht
- Anzeigen von Details zu einem bestimmten Fehler
- Löschen von Einträgen
- Aktualisieren der Benutzeroberfläche
- Ändern der Protokolleinstellungen
- Anzeigen des Dialogfelds "Info"
Ändern der Protokollspeicherortansicht
Wählen Sie die Standardoptionsschaltfläche aus, um Bindungsfehler für alle Anwendungstypen anzuzeigen. Standardmäßig werden Protokolleinträge in Benutzerverzeichnissen auf dem Datenträger im Wininet-Cache gespeichert.
Wählen Sie die Schaltfläche " Benutzerdefinierte Option" aus, um Bindungsfehler in einem von Ihnen angegebenen benutzerdefinierten Verzeichnis anzuzeigen. Sie müssen den benutzerdefinierten Speicherort angeben, an dem die Laufzeit die Protokolle speichern soll, indem Sie den benutzerdefinierten Protokollspeicherort im Dialogfeld " Protokolleinstellungen " auf einen gültigen Verzeichnisnamen festlegen. Dieses Verzeichnis sollte sauber sein und nur Dateien enthalten, die von der Laufzeit generiert werden. Wenn sie eine ausführbare Datei enthält, die einen Fehler generiert, wird der Fehler nicht protokolliert, da das Tool versucht, ein Verzeichnis mit demselben Namen wie die ausführbare Datei zu erstellen. Darüber hinaus schlägt ein Versuch, eine ausführbare Datei aus dem Protokollspeicherort auszuführen, fehl.
Hinweis
Der Standardmäßige Bindungsspeicherort ist dem benutzerdefinierten Bindungsspeicherort vorzuziehen. Die Laufzeit speichert den Standardbindungsspeicherort im Wininet-Cache und bereinigt sie daher automatisch. Wenn Sie einen benutzerdefinierten Bindungsspeicherort angeben, müssen Sie ihn bereinigen.
Anzeigen von Details zu einem bestimmten Fehler
Wählen Sie den Anwendungsnamen des gewünschten Eintrags im Viewer aus.
Klicken Sie auf die Schaltfläche "Protokoll anzeigen ". Alternativ können Sie auf den ausgewählten Eintrag doppelklicken.
Das Tool zeigt die folgenden Details zum ausgewählten Bindungsfehler an:
Der spezifische Grund, warum die Bindung fehlgeschlagen ist, z. B. "Datei nicht gefunden" oder "Versionskonflikt".
Informationen zur Anwendung, die die Bindung initiiert hat, einschließlich des Namens, des Stammverzeichnisses der Anwendung (AppBase) und einer Beschreibung des privaten Suchpfads, falls vorhanden.
Die Identität der Assembly, nach der das Tool sucht.
Eine Beschreibung aller Angewendeten Anwendungs-, Publisher- oder Administratorversionsrichtlinien.
Gibt an, ob die Assembly im globalen Assemblycache gefunden wurde.
Eine Liste aller Probing-URLs.
Der folgende Beispielprotokolleintrag zeigt detaillierte Informationen zu 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/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.
Löschen von Einträgen
So löschen Sie einen einzelnen Eintrag aus dem Protokoll:
Wählen Sie einen Eintrag im Viewer aus.
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 "Alle löschen ".
Aktualisieren der Benutzeroberfläche
- Klicken Sie auf die Schaltfläche " Aktualisieren ". Der Viewer erkennt während der Ausführung nicht automatisch neue Protokolleinträge. Sie müssen die Schaltfläche "Aktualisieren" verwenden, um sie anzuzeigen.
Ändern der Protokolleinstellungen
Klicken Sie auf die Schaltfläche "Einstellungen ", um das Dialogfeld " Protokolleinstellungen " zu öffnen.
Anzeigen des Dialogfelds "Info"
Klicken Sie auf die Schaltfläche "Info ".
Bindungsprotokolle für systemeigene Bilder
Standardmäßig protokolliert Fuslogvw.exe normale Assemblybindungsanforderungen. Alternativ können Sie Assemblybindungen für systemeigene Bilder protokollieren, die mit dem Ngen.exe (Native Image Generator) erstellt wurden.
Protokollassembly bindet für systemeigene Images
- Wählen Sie in der Gruppe "Protokollkategorien " die Optionsschaltfläche " Native Images " aus.
Das folgende Protokoll zeigt einen Fehler, der durch eine Abhängigkeit verursacht wurde, die nicht vorhanden war, als das systemeigene Image für die Anwendung erstellt wurde. Wenn sich die Abhängigkeiten zur Laufzeit von den Abhängigkeiten unterscheiden, wenn Ngen.exe ausgeführt wird, ist die Bindung an ein systemeigenes Image 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.
Das folgende Protokoll zeigt einen systemeigenen Imagebindungsfehler, der aufgetreten ist, da sich die Sicherheitseinstellungen auf dem Computer beim Ausführen der Anwendung von den Sicherheitseinstellungen zum Zeitpunkt der Erstellung des nativen Images unterscheiden.
*** 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 die Optionsschaltfläche " Protokoll deaktiviert" aus . Beachten Sie, dass diese Option standardmäßig ausgewählt ist.
So protokollieren Sie Assemblybindungen in Ausnahmen
Wählen Sie die Optionsschaltfläche " Ausnahmetext anmelden " aus. Nur die am wenigsten detaillierten Fusionsprotokollinformationen werden im Ausnahmetext protokolliert. Um vollständige Informationen anzuzeigen, verwenden Sie eine der anderen Einstellungen.
Weitere Informationen zu Assemblys, die als domänenneutral geladen werden, finden Sie unter "Wichtig".
So protokollieren Sie Assemblybindungsfehler
Wählen Sie die Schaltfläche " Protokollbindungsfehler an Datenträgeroption " aus.
Weitere Informationen zu Assemblys, die als domänenneutral geladen werden, finden Sie unter "Wichtig".
So protokollieren Sie alle Assemblybindungen
Wählen Sie das Optionsfeld " Alle An Datenträger binden " aus.
Weitere Informationen zu Assemblys, die als domänenneutral geladen werden, finden Sie unter "Wichtig".
Von Bedeutung
Wenn eine Assembly als domänenneutral geladen wird, z. B. durch Festlegen der LoaderOptimization Eigenschaft auf LoaderOptimization.MultiDomain oder LoaderOptimization.MultiDomainHostdurch Aktivieren der Protokollierung kann in einigen Fällen Speicher verloren gehen. Dies kann passieren, wenn ein Protokolleintrag erfolgt, wenn ein domänenneutrales Modul in eine Anwendungsdomäne geladen wird und später die Anwendungsdomäne entladen wird. Der Protokolleintrag wird möglicherweise erst freigegeben, wenn der Prozess endet. Einige Debugger aktivieren die Protokollierung automatisch.
So aktivieren Sie einen benutzerdefinierten Protokollpfad
Wählen Sie die Optionsschaltfläche " Benutzerdefinierten Protokollpfad aktivieren " aus.
Geben Sie den Pfad in das Textfeld für den benutzerdefinierten Protokollpfad ein .
Hinweis
Der Assembly binding Log Viewer (Fuslogvw.exe) verwendet den Internetdateicache zum Speichern des Bindungsprotokolls. Aufgrund gelegentlicher Beschädigung im Cache kann der Assemblybindungsprotokoll-Viewer (Fuslogvw.exe) manchmal die Anzeige neuer Bindungsprotokolle im Anzeigefenster beenden. Aufgrund dieser Beschädigung kann die .NET-Bindungsinfrastruktur (Fusion) nicht aus dem Bindungsprotokoll in das Bindungsprotokoll schreiben oder lesen. (Dieses Problem ist nicht aufgetreten, wenn Sie einen benutzerdefinierten Protokollpfad verwenden.) Um die Beschädigung zu beheben und fusion das Anzeigen von Bindungsprotokollen erneut zu ermöglichen, löschen Sie den Cache der Internetdatei, indem Sie temporäre Internetdateien aus dem Abschnitt "Browserverlauf " unter "Interneteigenschaften" löschen.
Wenn Ihre nicht verwaltete Anwendung die Common Language Runtime hostt, indem sie die IHostAssemblyManager Und-Schnittstellen IHostAssemblyStore implementiert, 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.
So aktivieren Sie die Protokollierung für Apps, die im Windows-App-Container ausgeführt werden
Aktivieren Sie einen benutzerdefinierten Protokollpfad, wie im vorherigen Verfahren beschrieben. Standardmäßig verfügen Apps, die im Windows-App-Container ausgeführt werden, über eingeschränkten Zugriff auf die Festplatte. Das angegebene Verzeichnis verfügt über Lese-/Schreibzugriff für alle Apps im App-Container.
Aktivieren Sie das Kontrollkästchen " Immersive Protokollierung aktivieren" .
Hinweis
Dieses Feld ist nur unter Windows 8 oder höher aktiviert.