Referenz zwei gleiche Baugruppen, die nur den öffentlichen Schlüssel zu unterscheiden

Mein Visual Studio 2008-Projekt verweist auf zwei (externe) Baugruppen (A+B) beide geschehen zu sein, verweisen auf dieselbe Dritte Baugruppe (C). Allerdings, die Montage Einer erwartet Baugruppe C, um einen öffentlichen Schlüssel, die Verschieden ist von dem, was Baugruppe B es erwartet haben.

Hier ist ein Beispiel für die offensichtliche Ausnahme:

Konnte nicht geladen, Datei oder assembly 'Newtonsoft.Json, Version=3.5.0.0, Culture=neutral, PublicKeyToken=9ad232b50c3e6444' oder eine Ihrer Abhängigkeiten. Die befindet assembly manifest definition entspricht nicht den Assemblyverweis. (Ausnahme von HRESULT: 0x80131040)

Natürlich, ich wäre nicht in der Lage, beide Versionen von C (nur unterschiedlich durch eine public-key) im selben Verzeichnis, deren Dateinamen gleich sind. Zweitens habe ich gefunden, dass die Verwendung von Montage-Bindung aus der Konfigurations-Datei erlaubt nur die version mapping, nicht öffentliche-Schlüssel-mapping.

Ich habe auch versucht es mit einer der Baugruppen C in ein separates Verzeichnis und konfigurieren Sie die CLR, um die Suche in diesem Verzeichnis wird beim laden von Baugruppen. Ich konnte nicht bekommen, dass die Arbeit, leider.

Ich bin mir bewusst, dass eine Neukompilierung des externen Bibliotheken (einer von Ihnen geschieht, werden open-Source -) würde dieses problem beheben, aber ich will nicht hinzufügen, dass die Belastung für meine Wartung zu planen, wenn es nicht absolut notwendig ist.

Also meine Frage ist: wie würde ich mich auf beide 'Versionen' von assembly C, die unterscheiden sich nur durch den öffentlichen Schlüssel?

UPDATE

Stolperte ich über diese Antwort auf eine Verwandte Frage, die einen interessanten Lösung mit ilmerge. Ich habe nicht überprüfte es noch nicht, aber es kann nützlich sein, um jemand zu kämpfen mit diesem problem.

  • Ich hatte ähnliches problem und this ist, wie ich es behoben.
Schreibe einen Kommentar