Das ist sehr gut möglich.
Wenn Sie in verschiedenen Assemblys (oder in Ihrem Projekt und der hinzugefügten Assembly) einen identischen Namespace und Typnamen definiert haben, tritt ein Konflikt mit jedem Code auf, der versucht, den einen oder anderen dieser Typen zu verwenden.
Wenn Sie sicherstellen, dass Sie eindeutige Namespaces haben, wie auch Ihre Referenzen, hätten Sie dieses Problem nicht.
Eine andere Möglichkeit hat mit verschiedenen Versionen einer Abhängigkeit zu tun - wenn Ihr Projekt (zum Beispiel) eine Protokollierungsbibliothek in Version 1.2 verwendet, die hinzugefügte Assembly jedoch von derselben Assembly abhängig ist, jedoch von einer anderen Version (z. B. 1.3) und entweder von Ihrem Projekt Wenn die hinzugefügte Assembly für die Verwendung einer bestimmten Version konfiguriert / erstellt wurde, tritt ein Konflikt auf und der Build schlägt fehl.
Diese beiden Probleme können mithilfe von Assembly-Aliasen behoben werden, wie hier beschrieben .
Da dies niemand anderes erwähnte, fragten Sie:
Nur für diesen Fall gibt es eine saubere Lösung, ohne Einschränkungen und ohne lästige Problemumgehungen. Sie können Assembly-Alises definieren, damit der Compiler weiß, auf welche er sich an der richtigen Stelle beziehen soll.
Besuchen Sie http://blogs.msdn.com/b/ansonh/archive/2006/09/27/774692.aspx
quelle
Ja, das ist sehr gut möglich.
Angenommen, Sie haben einen Verweis auf eine DLL hinzugefügt, die die alte Version von Lucene.Net verwendet, und Sie möchten die neueste Version einschließen.
Sie können dieses Problem mithilfe externer Aliase lösen: http://msdn.microsoft.com/en-us/library/ms173212.aspx
quelle
Sie können beliebig viele verschiedene Versionen einer Assembly in den globalen Assemblycache einfügen, sofern diese einen starken Namen haben. Dies kann hilfreich sein, wenn verschiedene Anwendungen maschinell unterschiedliche Versionen einer Baugruppe verwenden sollen. Die Verwendung verschiedener Versionen einer Baugruppe in EINER Anwendung führt jedoch weiterhin zu Problemen.
Was ist der Grund für Sie, beide Versionen gleichzeitig zu benötigen?
quelle
Sicher. Sie können den Compilerfehler "Ambiguous Reference" erhalten, wenn zwei Objekte nicht unterschieden werden können. Normalerweise können Sie den vollständigen Pfad im Code angeben, was kein Problem verursacht. Wenn die DLLs jedoch vollständig identisch wären, könnten Sie in keiner Weise zwischen zwei Objekten unterscheiden. Sya wir haben zwei DLLs:
System.IO, das die File-Klasse enthält
und
MyProject.IO, das eine Dateiklasse enthält
Wenn Sie so etwas haben würden ...
... Sie hätten eine mehrdeutige Referenz, da es keine Möglichkeit gibt zu sagen, um welche Datei es sich handelt. Dies würde es beheben:
Die einzige Möglichkeit, dies zu beheben, wäre, wenn der Pfad von "File" in beiden Assemblys identisch wäre. Dies würde jedoch die unwahrscheinliche Situation erfordern, in der zwei DLLs eine identische Namespace-Struktur hatten. Zum Beispiel würde meine obige Situation niemals eintreten, da dort niemand das Projekt "System" nennen wird (mit Ausnahme der tatsächlichen Entwickler des .Net-Frameworks).
quelle