En este post te voy a mostrar como resolví el error Unable to load file ‘System.Threading.Tasks.Extensions’ con Autofac en un proyecto de pruebas unitarias.
Mensaje de error.
=== Información de estado anterior al enlace === LOG: DisplayName = System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 (Fully-specified) LOG: Appbase = file:///C:/SVN/.../Out LOG: PrivatePath inicial = NULL Ensamblado de llamada : Microsoft.Bcl.AsyncInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51. === LOG: Este enlace empieza en el contexto de carga default. LOG: Utilización del archivo de configuración de la aplicación: C:\SVN\....DLL.config LOG: Utilizando el archivo de configuración de host: LOG: Utilizando el archivo de configuración del equipo en C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config. LOG: Referencia posterior a la directiva: System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 LOG: Intento de descarga de la nueva dirección URL file:///C:/SVN/..../Out/System.Threading.Tasks.Extensions.DLL. AVS: Al comparar el nombre de ensamblado se generó la incompatibilidad: Número de revisión ERR: Error al completar la instalación del ensamblado (hr = 0x80131040). Finalizó la búsqueda.
Contexto.
- Recientemente, tuve errores, única y exclusivamente, en la ejecución de pruebas unitarias.
- Ningún error de ejecución en productivo u otros ambientes.
- El error de ejecución ocurría en una resolución de dependencias con Autofac.
- Uso MsTest como framework de pruebas, y Resharper para ejecutarlas.
Intentos de solución.
- Intente agregar la referencia del package Nuget System.Threading.Tasks.Extensions a los proyectos de librerías de negocios, y el mismo proyecto de pruebas, sin éxito.
- Agregue referencias al package Nuget Microsoft.Bcl.AsyncInterfaces (es una dependencia de Autofac), sin éxito.
- Ajuste los bindings redirects para que tomaran la versión del package Nuget, sin éxito.
- Cambie la compilación de x64 a AnyCPU, sin éxito.
- Borre referencias sin emplear de los proyectos y limpie caché de Nuget.
Solución.
Note que el directorio de salida de las pruebas unitarias si copiaba un archivo «System.Threading.Tasks.Extensions.dll» al directorio bin. Haciendo una inspección de este con DotPeek, la versión del archivo es la 4.2.0.1. Agregue el siguiente binding redirect al archivo config de mi proyecto de pruebas.
<dependentAssembly> <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" /> </dependentAssembly>
Últimas entradas de Gustavo Sánchez (ver todo)
- NVL in SQL Server - 2023-11-01
- ¿Que es Cake Build? - 2023-02-22
- #How to fix error: MSB4019: The imported project «Microsoft.Data.Tools.Schema.SqlTasks.targets» was not found - 2023-02-20