Transitive Abhängigkeit, die eine Konfliktversion derselben DLL verursacht

9

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.

    
Newtopian 04.07.2012, 21:23
quelle

1 Antwort

4

Es gibt viele ähnliche Fragen zu Stack Overflow. Für z.B. 2 verschiedene Versionen von log4net in derselben Lösung referenzieren

Zusammenfassung:

  1. Stellen Sie sicher, dass Sie die Assembly C in den Ordnern 1.0 und 2.0 innerhalb des Ordners mit der ausführbaren Hauptdatei bereitstellen.
  2. Ändern Sie die Datei app.config und fügen Sie Folgendes ein:
%Vor%

Sie können das öffentliche Schlüsseltoken von C mit sn -T C.dll

abrufen

Wenn 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.

    
Amit Mittal 05.07.2012, 08:17
quelle