¿Cuál es la mejor práctica en el mundo de .NET para administrar dependencias transitivas que causan conflictos de versión?Dependencia transitiva que causa una versión conflictiva de la misma DLL
En detalles: Proyecto A depende de Proyecto B que a su vez depende de biblioteca C
también
Proyecto A también depende de Proyecto X que depende de una (potencialmente) versión incompatible de biblioteca diferente y C.
A-> B-> Cv1.0
&
A-> X-> Cv2.0
donde
Cv1 0.0 <> Cv2.0
¿Hay una manera de hacer este trabajo?
¿Se puede hacer SIN usar el GAC?
¿Se puede hacer incluso si B y X están en formato binario solamente (fuente no accesible)?
En otras palabras, hay una manera en que yo pueda tener el proyecto B y X cada uno con sus propias dependencias cuando se usan juntos en el proyecto A sin causar conflictos.
NOTA: Me doy cuenta de que, idealmente, no debería tener este problema en absoluto, pero a medida que se expanda la dependencia de las bibliotecas externas, esto será un efecto secundario inevitable. Entonces me pregunto si debería ocurrir la mejor forma de lidiar con eso.
Idealmente, debería volver a compilar o actualizar B para que dependa de la versión actual de C. Si no puede hacerlo, puede intentar reasignar las versiones. http://stackoverflow.com/a/11126867/48082 ¡Esto no está garantizado para funcionar! – Cheeso
Estoy de acuerdo en que idealmente uno debe limpiar sus proyectos para evitar la situación en el primer lugar, pero esto no siempre es posible, de ahí la pregunta. – Newtopian
reasignando DLL de alguna manera es bueno solo si ambas versiones son compatibles entre sí. El peor escenario posible es que, en caso de que no sean compatibles, existe una forma de que cada una de las dependencias intermedias utilice la versión para la que fue creada y aún realizar el trabajo que el proyecto principal espera de ellas. – Newtopian