Co to jest najlepsza praktyka w świecie .NET do zarządzania przechodnimi zależnościami powodującymi konflikt wersji?Zależność przejściowa powodująca konflikt Wersję tego samego pliku DLL
szczegółowo: Projekt A zależy od projektu B, który z kolei zależy od biblioteki C
również
Projekt A zależy również od projektu X, która zależy od różnych i (potencjalnie) niezgodnej wersji biblioteki C
A-> B-> Cv1.0
&
A-> X> Cv2.0
gdzie
CV1 .0 <> Cv2.0
Czy istnieje sposób, aby to zadziałało?
Czy można to zrobić BEZ korzystania z GAC?
Czy można to zrobić, nawet jeśli B i X są tylko w formacie binarnym (źródło niedostępne)?
Innymi słowy, istnieje sposób, w którym każdy z projektów B i X może korzystać z własnych zależności, jeśli są używane razem w Projekcie A, nie powodując konfliktów.
UWAGA: Rozumiem, że w idealnej sytuacji nie powinienem mieć tego problemu w ogóle, ale w miarę rozszerzania się zewnętrznych bibliotek, będzie to nieunikniony efekt uboczny. Zastanawiam się więc, czy powinien się pojawić jak najlepiej sobie z tym poradzić.
Idealnie powinieneś odbudować lub zaktualizować B tak, aby zależało to od aktualnej wersji C. Jeśli nie możesz tego zrobić, możesz spróbować ponownie mapować wersje. http://stackoverflow.com/a/11126867/48082 Nie gwarantuje to działania! – Cheeso
Uzgodniono, że najlepiej oczyścić swoje projekty, aby uniknąć sytuacji na miejscu, ale nie zawsze jest to możliwe, stąd pytanie. – Newtopian
remapping DLL w jakiś sposób jest dobry tylko wtedy, gdy obie wersje są kompatybilne ze sobą. Najgorszy scenariusz polega na tym, że w przypadku, gdy nie są kompatybilne, istnieje sposób, aby każda średnia zależność korzystała z wersji, dla której została stworzona i nadal wykonuje pracę, której oczekuje od niej główny projekt. – Newtopian