c# - redirects - manifest probing privatepath




Aktivieren der Assembly Bind-Fehlerprotokollierung(Fusion) in.NET (6)

Anstatt eine hässliche Protokolldatei zu verwenden, können Sie Fusion-Protokoll auch über ETW/xperf aktivieren, indem Sie den DotnetRuntime Private-Provider ( Microsoft-Windows-DotNETRuntimePrivate ) mit GUID 763FD754-7086-4DFE-95EB-C01A46FAF4CA und dem FusionKeyword Schlüsselwort (0x4) aktivieren. auf.

@echo off
echo Press a key when ready to start...
pause
echo .
echo ...Capturing...
echo .

"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -on PROC_THREAD+LOADER+PROFILE -stackwalk Profile -buffersize 1024 -MaxFile 2048 -FileMode Circular -f Kernel.etl
"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -start ClrSession -on Microsoft-Windows-DotNETRuntime:0x8118:0x5:'stack'+763FD754-7086-4DFE-95EB-C01A46FAF4CA:0x4:0x5 -f clr.etl -buffersize 1024

echo Press a key when you want to stop...
pause
pause
echo .
echo ...Stopping...
echo .

"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -start ClrRundownSession -on Microsoft-Windows-DotNETRuntime:0x8118:0x5:'stack'+Microsoft-Windows-DotNETRuntimeRundown:0x118:0x5:'stack' -f clr_DCend.etl -buffersize 1024 

timeout /t 15

set XPERF_CreateNGenPdbs=1

"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -stop ClrSession ClrRundownSession 
"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -stop
"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -merge kernel.etl clr.etl clr_DCend.etl Result.etl -compress
del kernel.etl
del clr.etl
del clr_DCend.etl

Wenn Sie nun die ETL-Datei in PerfView öffnen und unter der Ereignistabelle nachsehen, können Sie die Fusion-Daten finden:

Wie aktiviere ich die Assembly-Bind-Fehlerprotokollierung (Fusion) in .NET?



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

  • Öffnen Sie den Fusion Log Viewer
  • Klicken Sie auf Einstellungen
  • Aktivieren Sie das Kontrollkästchen Benutzerdefinierte Protokollpfade aktivieren
  • Geben Sie den Speicherort ein, in den die Protokolle geschrieben werden sollen, z. B. c:\FusionLogs ( wichtig: stellen Sie sicher, dass Sie diesen Ordner tatsächlich im Dateisystem erstellt haben.)
  • Stellen Sie sicher, dass die richtige Protokollierungsstufe aktiviert ist (manchmal wähle ich nur Alle Verbindungen zur Festplatte protokollieren aus, um sicherzustellen, dass alles richtig funktioniert)
  • Klicken Sie auf OK
  • Legen Sie die Protokollspeicherortoption auf Benutzerdefiniert fest

Denken Sie daran, das Abmelden abzubrechen, sobald Sie fertig sind!

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


Legen Sie den folgenden Registrierungswert fest:

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

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

[Bearbeiten]: Speichern Sie den folgenden Text in einer Datei, zB FusionEnableLog.reg, im Windows Registry Editor Format:

Windows Registry Editor Version 5.00

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

Führen Sie dann die Datei aus dem Windows Explorer aus und ignorieren Sie die Warnung vor einem möglichen Schaden.


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

Hinweis: Stellen Sie sicher, dass das für den LogPath-Eintrag angegebene Verzeichnis vorhanden ist. Wenn das Verzeichnis nicht existiert, sind Ihre Protokolle nicht abrufbar.

und diese zum 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

Wenn Sie bereits die Protokollierung aktiviert haben und diesen Fehler unter Windows 7 64 Bit immer noch erhalten, versuchen Sie dies in IIS 7.5:

  1. Erstellen Sie einen neuen Anwendungspool

  2. Wechseln Sie zu den erweiterten Einstellungen dieses Anwendungspools

  3. Setzen Sie die 32-Bit-Anwendung aktivieren auf True

  4. Weisen Sie Ihre Webanwendung darauf hin, diesen neuen Pool zu verwenden





assemblies