me sale este error:
No se pudo cargar el archivo o ensamblado 'Microsoft.Practices.ServiceLocation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' o una de sus dependencias. La definición del manifiesto del ensamblado ubicado no coincide con la referencia del ensamblado. (Excepción de HRESULT: 0x80131040)
¿Cómo resuelvo esto con un enlace de redirección de ensamblaje, si ya tengo otra versión existente de Microsoft.Practices.ServiceLocation en mi proyecto?
Un método es volver a compilar todos los paquetes de NuGet para usar la misma versión de Microsoft.Practices.ServiceLocation . A nivel pragmático, esto simplemente no es práctico: necesitamos un método más fácil.
Un mejor método es usar una redirección de enlace de ensamblado. Esto funciona muy bien, si la interfaz es la misma. Esta solución está probada y comprobada, y se está ejecutando en producción en varias empresas del FTSE .
Así es como se ve la aplicación.config:
<?xml version="1.0" encoding="utf-8"?> <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.Practices.ServiceLocation" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-1.2.0.0" newVersion="1.2.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration> Ajuste la versión de destino a cualquier versión que ya tenga, que suele ser 1.2.0.0 o 1.3.0.0 .
El PublicKeyToken debe coincidir con el ensamblado de destino. Puedes extraerlo usando el siguiente comando:
sn.exe -T assembly.dllEjemplo:
C:\test>"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64\sn.exe" -TC:\svn\lib\TargetDll.dll Microsoft (R) .NET Framework Strong Name Utility Version 4.0.30319.17929 Copyright (c) Microsoft Corporation. All rights reserved. Public key token is ac3efa7c033c2bd5 c:\test> Para conocer otras formas de obtener PublicKeyToken , consulte Obtención de PublicKeyToken de ensamblados .Net .
El PublicKeyToken no cambia con la versión del ensamblado, por ejemplo, es lo mismo si el ensamblado es v1.0.0.0 o v2.0.0.0 .