¿Cómo habilito el registro de fallas de enlace de ensamblaje (Fusion) en .NET?
fuslogvw.exe
como administrador para evitar problemas de derechos.
¿Cómo habilito el registro de fallas de enlace de ensamblaje (Fusion) en .NET?
fuslogvw.exe
como administrador para evitar problemas de derechos.
Respuestas:
Agregue los siguientes valores a
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion Añadir: DWORD ForceLog establece el valor en 1 DWORD LogFailures establece el valor en 1 DWORD LogResourceBinds establece el valor en 1 DWORD EnableLog establece el valor en 1 String LogPath establece el valor en la carpeta para registros (por ejemplo, C: \ FusionLog \)
Asegúrese de incluir la barra diagonal inversa después del nombre de la carpeta y de que la carpeta existe .
Debe reiniciar el programa que está ejecutando para obligarlo a leer la configuración del registro.
Por cierto, no olvides desactivar el registro de fusión cuando no sea necesario.
Por lo general, uso Fusion Log Viewer ( Fuslogvw.exe desde un símbolo del sistema de Visual Studio o Fusion Log Viewer desde el menú de inicio). Mi configuración estándar es:
c:\FusionLogs
( Importante: asegúrese de haber creado esta carpeta en el sistema de archivos).¡Recuerde desactivar el cierre de sesión una vez que haya terminado!
(Acabo de publicar esto en una pregunta similar, creo que también es relevante aquí).
fuslogvw
no solo como administrador sino también desde la ruta correcta del SDK de Windows que está utilizando el proyecto de Visual Studio que arroja la excepción. Verifique su csproj y busque SDK dentro (mi nodo sdk se llama TargetFrameworkSDKToolsDirectory
). El uso de una versión de fuslogvw no coincidente parece no detectar las excepciones (lo cual tiene sentido ...)
Si tiene el SDK de Windows instalado en su máquina, encontrará el "Visor de registro de Fusion" en Microsoft SDK \ Tools (simplemente escriba "Fusion" en el menú de inicio en Vista o Windows 7/8). Ejecútelo, haga clic en el botón Configuración y seleccione "Registrar error de enlace" o "Registrar todos los enlaces".
Si estos botones están deshabilitados, regrese al menú de inicio, haga clic con el botón derecho en el Visor de registro y seleccione "Ejecutar como administrador".
Establezca el siguiente valor de registro:
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion! EnableLog] (DWORD) a 1
Para deshabilitar, establezca en 0 o elimine el valor.
[editar]: guarde el siguiente texto en un archivo, por ejemplo, FusionEnableLog.reg, en el formato del Editor del Registro de Windows:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion]
"EnableLog"=dword:00000001
Luego ejecute el archivo desde el explorador de Windows e ignore la advertencia sobre posibles daños.
Puede ejecutar este script de Powershell como administrador para habilitar FL:
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
y este para deshabilitar:
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
c:\FusionLog
directorio para que la gente no lo olvide ;-)
El script del cambiador del Visor de configuración de registro de Fusion no es la mejor manera de hacerlo.
En ASP.NET , a veces ha sido complicado hacer que esto funcione correctamente. Este script funciona muy bien y también figura en la lista de herramientas de Scott Hanselman . Lo he usado personalmente durante años y nunca me ha decepcionado.
En lugar de utilizar un archivo de registro feo, también puede activar el registro de Fusion a través de ETW / xperf activando el proveedor privado DotnetRuntime ( Microsoft-Windows-DotNETRuntimePrivate
) con GUID 763FD754-7086-4DFE-95EB-C01A46FAF4CA
y la FusionKeyword
palabra clave (0x4) activada.
@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
Cuando abre el archivo ETL en PerfView y mira debajo de la tabla Eventos, puede encontrar los datos de Fusion:
Escribí un visor de registro de enlace de ensamblaje llamado Fusion ++ y lo puse en GitHub .
Puede obtener la última versión desde aquí o mediante chocolatey ( choco install fusionplusplus
).
Espero que usted y algunos de los visitantes aquí puedan ahorrar algunos valiosos minutos de por vida.
Si ya tiene habilitado el registro y aún recibe este error en Windows 7 de 64 bits, intente esto en IIS 7.5:
Crear un nuevo grupo de aplicaciones
Vaya a la Configuración avanzada de este grupo de aplicaciones
Establezca Habilitar aplicación de 32 bits en Verdadero
Apunte su aplicación web para usar este nuevo grupo
Solo un poquito de información que podría ayudar a otros; si hace algo en la línea de buscar en todos los ensamblados en algún directorio las clases que heredan / implementan clases / interfaces, entonces asegúrese de limpiar los ensambles obsoletos si obtiene este error relacionado con uno de sus propios ensamblajes.
El escenario sería algo como:
En resumen: A --- cargas -> B (rancio) --- referencias ---> C
Si esto sucede, el único signo revelador es el espacio de nombres y el nombre de clase en el mensaje de error. Examínelo de cerca. Si no puede encontrarlo en ninguna parte de su solución, es probable que esté intentando cargar un conjunto obsoleto.
Para aquellos que son un poco vagos, les recomiendo ejecutar esto como un archivo bat para cuando quieran habilitarlo:
reg add "HKLM\Software\Microsoft\Fusion" /v EnableLog /t REG_DWORD /d 1 /f
reg add "HKLM\Software\Microsoft\Fusion" /v ForceLog /t REG_DWORD /d 1 /f
reg add "HKLM\Software\Microsoft\Fusion" /v LogFailures /t REG_DWORD /d 1 /f
reg add "HKLM\Software\Microsoft\Fusion" /v LogResourceBinds /t REG_DWORD /d 1 /f
reg add "HKLM\Software\Microsoft\Fusion" /v LogPath /t REG_SZ /d C:\FusionLog\
if not exist "C:\FusionLog\" mkdir C:\FusionLog
En caso de que se pregunte sobre la ubicación de FusionLog.exe: ¿sabe que lo tiene, pero no puede encontrarlo? Estaba buscando FUSLOVW en los últimos años una y otra vez. Después de pasar a .NET 4.5, el número de versión de FUSION LOG ha explotado. Hay lugares donde se puede encontrar en su disco, dependiendo del software que haya instalado:
C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ x64
C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ x64
C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Tools \ x64
C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Herramientas
C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Herramientas
C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin