Mi proyecto de Visual Studio 2008 hace referencia a dos ensamblajes (externos) (A + B) que hacen referencia al mismo tercer ensamblaje (C). Sin embargo, el conjunto A espera que el conjunto C tenga una clave pública que es diferente de lo que el conjunto B espera que tenga.Referencia dos ensamblados iguales, solo las claves públicas son diferentes
He aquí un ejemplo de la excepción obvia:
No se pudo cargar el archivo o ensamblado 'Newtonsoft.Json, Version = 3.5.0.0, Culture = neutral, PublicKeyToken = 9ad232b50c3e6444' o uno de sus dependencias. La definición del manifiesto del ensamblaje ubicado no coincide con la referencia de ensamblaje. (Excepción de HRESULT: 0x80131040)
Por supuesto, yo no sería capaz de poner las dos versiones del C (sólo se diferencian por la clave pública) en el mismo directorio, ya que sus nombres de archivo son iguales. En segundo lugar, descubrí que usar el enlace de ensamblaje desde el archivo de configuración solo permite el mapeo de versión, no el mapeo de clave pública.
También traté de colocar uno de los ensamblajes C en un directorio aparte y configurar el CLR para buscar en ese directorio al cargar ensamblajes. No pude hacer que eso funcione por desgracia.
Soy consciente de que volver a compilar una de las bibliotecas externas (uno de ellos pasa a ser de código abierto) sería solucionar este problema, pero no quiero añadir que carga para mi plan de mantenimiento si no es absolutamente necesario.
Así que mi pregunta es: ¿cómo haría referencia a las dos "versiones" del conjunto C, que solo difieren en clave pública?
ACTUALIZACIÓN
yo nos topamos con this answer a una pregunta relacionada, proporcionando una solución interesante usando ILMerge. Todavía no lo he comprobado, pero puede ser útil para cualquier persona que tenga problemas con este problema.
tuve un problema similar y [esto] (http://stackoverflow.com/questions/2460542/using-different-versions-of-the-same-assembly-in-the-same-folder/2461746#2461746) es como lo resolví –