c# - una - Utilice.net DLL con referencias rotas
referencias rotas visual studio (3)
El problema básicamente es que está haciendo referencia a ''Assembly_X'' que hace referencia a los ensamblados ''Assembly_YY'' versiones 12.3.0.0 y 65535.65535.65535.65535 y que solo hizo referencia a ''Assembly_YY'' versión 12.3.0.0 en su aplicación y no hizo referencia a 65535.65535.65535.65535
Ahora de acuerdo con la explicación del problema en Microsoft Docs , y su ejemplo, que no tiene el código fuente para los ensamblajes, debe:
Agregue una referencia a la versión 65535.65535.65535.65535 de ''Assembly_YY'' de la DLL para que se compile y permita que la aplicación se ejecute. Puede proporcionar un archivo de configuración de la aplicación que incluya un elemento <dependentAssembly>
que use <assemblyIdentity>
y <assemblyIdentity> elementos secundarios para especificar la ubicación de la versión 12.3.0.0 de la DLL.
Tengo que usar una DLL como API en mi aplicación (C #, .NET 4.5). Puedo hacer referencia a la DLL normalmente. Ningún error en absoluto. Pero si quiero usar cualquier clase de esta DLL, obtengo el siguiente error de compilación:
Error CS1705 Ensamblaje ''Assembly_X'' con identidad ''Assembly_X, Versión = 12.3.0.0, Culture = neutral, PublicKeyToken = c878e80841e75d00'' usa ''Assembly_YY, Version = 65535.65535.65535.65535, Culture = neutral, PublicKeyToken = c878e80841e75p00'' '''' '''' '''' ''; ensamblado ''Assembly_YY'' con identidad ''Assembly_YY, versión = 12.3.0.0, Culture = neutral, PublicKeyToken = c878e80841e75d00''
Luego revisé la DLL (Assembly_X) en ILSpy. Assembly_X tiene dos referencias a Assembly_YY: una con la versión 12.3.0.0 y otra con la versión 65535.65535.65535.65535.
Probé el "bindingRedirect" en el App.config. Pero como el error ocurre durante el tiempo de compilación, esto no ayuda.
No tengo el código fuente de Assembly_X o Assembly_YY.
¿Cómo puedo usar este DLL o repararlo?
ACTUALIZAR
Los desarrolladores de la dll finalmente respondieron a mi llamada de ayuda. Lo único que saben acerca de esto es usar Visual Studio 2013 en lugar de Visual Studio 2015 o 2017. Parece que VS 2013 no está molesto por estas referencias dobles.
Escriben, que el error es creado por una herramienta de cifrado para la dll. Gracias a todos por sus ideas y ayuda.
Está haciendo referencia a una versión más alta de DLL que la que tiene actualmente. Deberá agregar la referencia al ensamblaje de la versión superior:
''Assembly_YY, Version=65535.65535.65535.65535, Culture=neutral, PublicKeyToken=c878e80841e75d00''
para solucionar esto.
Ahora mismo estás haciendo referencia
''Assembly_X'' with identity ''Assembly_X, Version=12.3.0.0, Culture=neutral, PublicKeyToken=c878e80841e75d0
Si se trata de una biblioteca descargable, búsquelo en el administrador de paquetes de nuget y descárguelo. Si es una biblioteca escrita por usted, obtenga la última versión de la biblioteca y agréguela a su proyecto.
Parece que la primera DLL está haciendo referencia a una biblioteca que es una versión más alta que la otra DLL que está utilizando.
así que tienes 3 DLL para considerar: A, B & Bv2
Su proyecto hace referencia a A y B, pero A hace referencia a Bv2 (una versión actualizada de B) SO cuando va a utilizar las funciones de A, genera un error porque encuentra B en lugar de Bv2.