De alguna manera he tenido suerte y nunca tuvo que hacer frente a este problema, a pesar de que creo que es uno común:utilizan versiones diferentes del DLL hace referencia
Tengo un proyecto web, vamos a llamarlo SomeProject
. SomeProject
tiene una referencia a una biblioteca de terceros, llamémoslo SomeThirdParty
, versión 1.0. SomeProject
también tiene una referencia a una biblioteca de clase local, llamémoslo SomeLibrary
. SomeLibrary
también tiene una referencia a SomeThirdParty
, pero una versión diferente (digamos 2.0).
La versión 1.0 y 2.0 de SomeThirdParty
comparten la mayoría de las mismas firmas, pero son implementaciones diferentes. Necesito SomeProject
para usar la implementación 1.0 y SomeLibrary
para usar la implementación 2.0 si es posible.
Compilo SomeProject
usando su referencia a log4net. La DLL que termina en el directorio bin es la que hace referencia a SomeProject
. En tiempo de ejecución, cuando el código de SomeLibrary
carreras, intenta ejecutar el código de la versión 2.0 de SomeThirdParty
, y por supuesto falla, lanzando una FileLoadException: Could not load file or assembly '
SomeThirdParty , Version=2.0.0.0, Culture=[etc.]' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.
Obviamente, podría actualizar SomeProject
a la nueva DLL o degradar SomeLibrary
a la mayor DLL, pero no sería ideal por muchas razones.
creo que la respuesta correcta implica la instalación de SomeThirdParty en la GAC, pero no estoy seguro exactamente cómo me gustaría ir haciendo esto, y cómo afectaría a otros desarrolladores y servidores.
Se aprecian todas las sugerencias que pueda tener.
Gracias por la ayuda.
Eso es lo que pensé.Realmente no quiero ir por esta ruta, ya que significaría que las asambleas se habrían instalado en el GAC en todas las máquinas de nuestros desarrolladores, y en todos los servidores, y en cualquier desarrollador entrante. Pero lo tendré en cuenta si no podemos encontrar una alternativa. Gracias. –