937 Stimmen

Aktivieren der Assembler-Fehlerprotokollierung (Fusion) in .NET

Wie aktiviere ich die Protokollierung von Assemblerfehlern (Fusion) in .NET?

52 Stimmen

Wenn jemand den Fusion Logger (fuslogvw.exe) verwenden möchte, sollte er diesen Artikel lesen: msdn.microsoft.com/de-us/library/e74a18c4(v=VS.100).aspx Dort erfahren Sie, wo Sie es herunterladen können, und weitere Informationen.

15 Stimmen

@Will - danke fürs Teilen! Als Bonus - stellen Sie sicher, dass Sie laufen fuslogvw.exe als Administrator, um Rechteprobleme zu vermeiden.

4 Stimmen

Stellen Sie außerdem sicher, dass Sie den Fusion Logger (fuslogvw.exe) ausschalten, wenn Sie fertig sind. Mein " C:\Windows\...\Temporary Der Ordner "Internet Files" enthielt 4 Millionen Protokolle. Die Gesamtgröße aller Dateien betrug 6 GiB, aber da sie viel kleiner als die Clustergröße waren, betrug der tatsächlich verwendete Speicherplatz 16 GiB.

1003voto

Gary Kindel Punkte 16334

Fügen Sie die folgenden Werte zu

HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Microsoft\\Fusion
Add:
DWORD ForceLog set value to 1
DWORD LogFailures set value to 1
DWORD LogResourceBinds set value to 1
DWORD EnableLog set value to 1
String LogPath set value to folder for logs (e.g. C:\\FusionLog\\)

Stellen Sie sicher, dass Sie den Backslash einschließen nach dem Ordnernamen und dass die Ordner existiert .

Sie müssen das ausgeführte Programm neu starten, damit es diese Registrierungseinstellungen lesen kann.

Vergessen Sie übrigens nicht, die Protokollierung der Verschmelzung zu deaktivieren, wenn sie nicht benötigt wird.

enter image description here

27 Stimmen

Garys Lösungen haben bei mir funktioniert, obwohl ich auch den IIS zurücksetzen musste. Beachten Sie, dass ich dies in einer sauberen Umgebung konfiguriert habe, in der ich keine SDKs und dergleichen installieren wollte.

0 Stimmen

Ich habe diese Einträge hinzugefügt, aber mein c# express (2010) sagt mir immer noch "Assembly binding logging is turned OFF". Wie es funktionieren?

5 Stimmen

Es wurde von einigen berichtet, dass die Änderung der Registrierung nicht sofort funktioniert. Haben Sie versucht, die Fusion-Anmeldung zu aktivieren und dann neu zu starten?

305voto

Mike Goatly Punkte 7120

Ich verwende normalerweise den Fusion Log Viewer ( Fuslogvw.exe von einer Visual Studio-Eingabeaufforderung oder Fusion Log Viewer aus dem Startmenü) - meine Standardeinstellung ist:

  • Öffnen Sie Fusion Log Viewer als Administrator
  • Klicken Sie auf Einstellungen
  • Prüfen Sie die Benutzerdefinierten Protokollpfad aktivieren Ankreuzfeld
  • Geben Sie den Ort ein, an den die Protokolle geschrieben werden sollen, z. B, c:\FusionLogs ( Das ist wichtig: Vergewissern Sie sich, dass Sie diesen Ordner tatsächlich im Dateisystem angelegt haben).
  • Vergewissern Sie sich, dass die richtige Protokollierungsstufe aktiviert ist (ich wähle manchmal einfach Alle Bindungen auf der Festplatte protokollieren nur um sicherzustellen, dass die Dinge richtig funktionieren)
  • Klicken Sie auf OK
  • Setzen Sie die Option für den Speicherort des Protokolls auf Benutzerdefiniert

Vergessen Sie nicht, die Protokollierung abzuschalten, wenn Sie fertig sind!

(Ich habe dies gerade zu einer ähnlichen Frage gepostet - ich denke, es ist auch hier relevant).

4 Stimmen

Beachten Sie, dass Sie in Fällen, in denen Sie die Runtime selbst von einer nativen Anwendung aus hosten, aus irgendeinem Grund einen benutzerdefinierten Protokollpfad verwenden müssen, da sonst nichts protokolliert wird.

0 Stimmen

Zumindest in meiner Situation musste ich die benutzerdefinierten Protokollpfade nicht einstellen. Alles, was ich tun musste, war, die Protokollierung zu aktivieren, z.B. "Log all binds to disk" im Einstellungsdialog.

52 Stimmen

Als Administrator ausführen war in meinem Fall erforderlich, ansonsten waren alle Optionen deaktiviert.

196voto

Samuel Jack Punkte 31654

Wenn Sie das Windows SDK auf Ihrem Rechner installiert haben, finden Sie den "Fusion Log Viewer" unter Microsoft SDK \Tools (geben Sie einfach "Fusion" in das Startmenü von Vista oder Windows 7/8 ein). Starten Sie es, klicken Sie auf die Schaltfläche Einstellungen und wählen Sie "Bindungsfehler protokollieren" oder "Alle Bindungen protokollieren".

Wenn diese Schaltflächen deaktiviert sind, gehen Sie zurück zum Startmenü, klicken Sie mit der rechten Maustaste auf den Log Viewer und wählen Sie "Als Administrator ausführen".

6 Stimmen

Diese Schaltflächen sind bei mir deaktiviert - warum?

14 Stimmen

@Tim, das habe ich noch nie gesehen - könnte das mit Admin-Rechten zu tun haben? Es ist schließlich HKEY_LOCAL_MACHINE, das geändert wird.

2 Stimmen

"Einstellungen, Bindungsfehler protokollieren" reichte aus, um mein Problem zu finden.

116voto

Tereza Tomcova Punkte 4609

Sie können dieses Powershell-Skript als Administrator ausführen, um FL zu aktivieren:

Set-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name ForceLog         -Value 1               -Type DWord
Set-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogFailures      -Value 1               -Type DWord
Set-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogResourceBinds -Value 1               -Type DWord
Set-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogPath          -Value 'C:\FusionLog\' -Type String
mkdir C:\FusionLog -Force

und diese zu deaktivieren:

Remove-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name ForceLog
Remove-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogFailures
Remove-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogResourceBinds
Remove-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogPath

7 Stimmen

Danke! Ich habe mir erlaubt, Ihre Befehle in dieser Kern . Und ich habe die Erstellung der c:\FusionLog dir, damit man das nicht vergisst ;-)

0 Stimmen

Die Befehlszeile regiert! Ich könnte dies mit der besten bisher erfundenen Technologie zur Wiederverwendung von Code, dem "Ausschneiden und Einfügen", schnell wiedergeben. Danke!

0 Stimmen

Diese Antwort ist viel nützlicher, ich habe sie letztes Mal in meine Skripte aufgenommen. Jetzt einige Monate später, kam ich hier zurück und sah den Thread wieder. Erinnern Sie mich daran, wie ich es zum letzten Mal verwenden.

94voto

user32736 Punkte 9821

Setzen Sie den folgenden Registrierungswert:

[HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Fusion !EnableLog] (DWORD) auf 1

Zum Deaktivieren setzen Sie den Wert auf 0 oder löschen ihn.

[Bearbeiten]:Speichern Sie den folgenden Text in einer Datei, z.B. FusionEnableLog.reg, in Windows-Registrierungseditor-Format:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion]
"EnableLog"=dword:00000001

Führen Sie die Datei dann über den Windows-Explorer aus und ignorieren Sie die Warnung über mögliche Schäden.

4 Stimmen

Nicht, dass der Eintrag nicht existieren würde - Sie müssen ihn selbst erstellen. Zumindest habe ich das getan, als ich diese Frage kurz vor dem Absturz heute Morgen beantworten wollte :)

4 Stimmen

Was bedeutet das ! Schlüssel oder Wert? Was ist mit 64-Bit-Systemen?

2 Stimmen

Dies funktioniert nicht. Der Wert ist ForceLog und nicht EnableLog, und es ist ein zusätzlicher Schritt erforderlich (siehe: thepursuitofalife.com/ )

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X