Freigeben über


Assembly Binding Log Viewer-Tool (Fuslogvw.exe)

Einer der schwierigsten Aspekte bei der Arbeit mit lokalisierten Ressourcen besteht darin, das Laden dieser Ressourcen zu debuggen. Bei der Arbeit mit einem ResourceManager werden Ressourcenanforderungen an die Common Language Runtime übergeben, die für das Suchen, Laden und Binden an diese Ressource zuständig ist. Im Quellcode führt ein einziger Aufruf zum Laden einer Ressource möglicherweise eine Reihe von Bindeanforderungen an die Common Language Runtime aus.

Das Assembly Binding Log Viewer-Tool unterstützt Sie bei der Analyse des Ressourcenladeprozesses. Detaillierte Informationen über das Binden der Ressourcen werden auf URL-Basis von der WinInet-Komponente von Windows verwaltet. WinInet gibt die Einträge leider nicht unbedingt in chronologischer Reihenfolge zurück.

Standardmäßig werden Bindeaufrufe nicht protokolliert. Um die Protokollierung zu aktivieren, muss unter dem Eintrag HKLM\Software\Microsoft\Fusion der Windows-Registrierung zunächst ein DWORD-Wert erstellt werden. Auf der ersten Protokollierungsebene werden nur fehlgeschlagene Ressourcenbindungen angezeigt. Um dies zu ermöglichen, müssen Sie einen LogResourceBinds DWORD-Wert erstellen und seinen Wert auf einen anderen Wert als den Standardwert 0 setzen.

Sie können einen Ressourcenbindefehler verursachen, indem Sie eine entsprechende Ressourcensatellitenassembly löschen oder umbenennen. Wenn Sie z. B. die \en-US\Graphic.resources.dll und die \en\Graphic.resources.dll löschen und dann das Graphic-Beispiel ausführen, erzeugt FusLogVW das in der folgenden Abbildung gezeigte Protokoll:

Diese beiden Protokolleinträge geben an, dass die Common Language Runtime zuerst versucht hat, eine Ressource für die en-US-Kultur zu finden. Da dies nicht möglich war, versuchte sie, eine Ressource für die en-Kultur zu laden. Als auch dies fehlschlug, lud sie schließlich eine Ressource aus der Hauptassembly (die, weil sie erfolgreich war, nicht protokolliert wurde).

Viele Entwickler möchten jedoch über die gesamte Bindungsaktivität informiert werden. In diesem Fall muss der DWORD-Wert von ForceLog auf einen anderen Wert als den Standardwert 0 gesetzt werden. Ab diesem Punkt werden nachfolgende Bindeaufrufe – d. h. erfolgreiche und fehlgeschlagene – protokolliert. Die folgende Abbildung zeigt ein typisches Protokoll:

Wenn Sie eine der Ressourcenbindungen auswählen (in diesem Fall Locale=en-US) und auf Protokolldatei anzeigen klicken, wird ein Browserfenster mit einem detaillierten Protokoll geöffnet (siehe folgende Abbildung).

Dieser spezifische Protokolleintrag zeigt, dass die Ressource erfolgreich geladen wurde, nachdem die Common Language Runtime den globalen Assemblycache (GAC) und die Unterverzeichnisse der Anwendung durchsucht hatte. Um die Anzahl der Dateien zu reduzieren, die die Common Language Runtime zu laden versucht, und um die Leistung zu steigern, werden die Ressourcen nur in Dateien mit der Erweiterung DLL gesucht.