c# .net vb.net binding assemblies

c# - Cómo habilitar el registro de fallos de enlace de ensamblaje(Fusion) en.NET



vb.net binding (10)

¿Cómo habilito el registro de fallos de enlace de ensamblaje (Fusion) en .NET?


Agregue los siguientes valores a

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/)

Asegúrese de incluir la barra diagonal inversa después del nombre de la carpeta y que la carpeta exista .

Debe reiniciar el programa que está ejecutando para forzarlo a leer esas configuraciones de registro.

Por cierto, no se olvide de desactivar el registro de fusión cuando no sea necesario.


En caso de que se esté preguntando acerca de la ubicación de FusionLog.exe, ¿sabe que la tiene pero no la puede encontrar? Estuve buscando FUSLOVW en los últimos años una y otra vez. Después de pasar a .NET 4.5, el número de la versión de FUSION LOG ha explotado. En estos lugares 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 Tools

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


En lugar de usar 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 palabra clave FusionKeyword (0x4) en.

@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 ahora abre el archivo ETL en PerfView y mira debajo de la tabla de Eventos, puede encontrar los datos de Fusion:


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.



Normalmente uso el Visor de registros de Fusion ( Fuslogvw.exe desde un indicador de comandos de Visual Studio o el Visor de registros de Fusion desde el menú de inicio). Mi configuración estándar es:

  • Abra Fusion Log Viewer como administrador
  • Haga clic en configuración
  • Marque la casilla de verificación Habilitar ruta de registro personalizada
  • Ingrese la ubicación en la que desea que se escriban los registros, por ejemplo, c:/FusionLogs ( Importante: asegúrese de haber creado esta carpeta en el sistema de archivos).
  • Asegúrate de que el nivel correcto de registro esté activado (a veces simplemente selecciono Registrar todos los enlaces al disco solo para asegurarme de que todo funcione correctamente)
  • Haga clic en OK
  • Establezca la opción de ubicación de registro en Personalizada

¡Recuerda apagar la sesión una vez que hayas terminado!

(Acabo de publicar esto en una pregunta similar, creo que también es relevante aquí).


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

Nota: Asegúrese de que el directorio proporcionado para la entrada LogPath exista. Si el directorio no existe, entonces sus registros no serán recuperables.

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


Si tiene el SDK de Windows instalado en su máquina, encontrará el "Visor de registro de Fusion" en Microsoft SDK / Tools (solo escriba "Fusion" en el menú de inicio en Vista o Windows 7/8). Inícielo, haga clic en el botón Configuración y seleccione "Error de enlace de registro" o "Registrar todos los enlaces".

Si estos botones están desactivados, regrese al menú de inicio, haga clic con el botón derecho en el Visor de registro y seleccione "Ejecutar como administrador".


Si ya tiene habilitado el registro y aún recibe este error en Windows 7 64 bit, intente esto en IIS 7.5:

  1. Crear un nuevo grupo de aplicaciones

  2. Ir a la Configuración avanzada de este grupo de aplicaciones

  3. Establecer la aplicación Habilitar 32 bits en Verdadero

  4. Apunta tu aplicación web para usar este nuevo grupo


Solo un poquito de información que podría ayudar a otros; Si hace algo parecido a buscar en todos los ensamblajes en algún directorio las clases que heredan / implementan clases / interfaces, entonces asegúrese de limpiar los ensamblajes obsoletos si recibe este error relacionado con uno de sus propios ensamblajes.

El escenario sería algo así como:

  1. El ensamblaje A carga todos los ensamblajes en alguna carpeta
  2. El ensamblaje B de esta carpeta está obsoleto, pero hace referencia al ensamblado C
  3. El ensamblaje C existe, pero los espacios de nombres, los nombres de las clases o algún otro detalle podrían haber cambiado en el tiempo transcurrido desde que el ensamblaje B quedó obsoleto (en mi caso, un espacio de nombres se cambió a través de un proceso de refactorización)

En resumen: A --- cargas -> B (obsoleto) --- 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ínalo de cerca. Si no puede encontrarlo en ninguna parte de su solución, es probable que esté intentando cargar un ensamblaje obsoleto.