Was ist die beste Vorgehensweise in der .NET-Welt, um transitive Abhängigkeiten zu verwalten, die Versionskonflikte verursachen?
Im Detail: Projekt A hängt von Projekt B ab, das wiederum von Bibliothek C abhängt.
auch
Projekt A hängt auch von Projekt X ab, das von einer VERSCHIEDENEN und (möglicherweise) inkompatiblen Version von Bibliothek C abhängt.
A- & gt; B- & gt; Cv1.0
& amp; amp;
A- & gt; X- & gt; Cv2.0
wo
Cv1.0 & lt; & gt; Cv2.0
Gibt es eine Möglichkeit, dies zum Laufen zu bringen?
Kann es ohne Verwendung des GAC getan werden?
Kann es auch gemacht werden, wenn B und X nur im Binärformat sind (Quelle nicht zugänglich)?
Mit anderen Worten gibt es einen Weg, auf dem ich Projekt B und X verwenden kann, die jeweils ihre eigenen Abhängigkeiten verwenden, wenn sie in Projekt A zusammen verwendet werden, ohne Konflikte zu verursachen.
HINWEIS: Mir ist klar, dass ich dieses Problem im Idealfall nicht haben sollte, aber wenn sich die Abhängigkeit von externen Bibliotheken ausdehnt, wird dies ein unvermeidlicher Nebeneffekt sein. Also frage ich mich, ob es vorkommen sollte, wie man damit umgehen soll.
Es gibt viele ähnliche Fragen zu Stack Overflow. Für z.B. 2 verschiedene Versionen von log4net in derselben Lösung referenzieren
Zusammenfassung:
%Vor%
Sie können das öffentliche Schlüsseltoken von C mit sn -T C.dll
abrufenWenn v1.0 und v2.0 von C unterschiedliche öffentliche Schlüssel haben (obwohl dies im Idealfall nicht der Fall sein sollte), fügen Sie zwei dependentAssembly-Tags hinzu.
Tags und Links .net c# dll dependency-management transitive-dependency