Laden...

Zwei Abhängigkeiten benutzen die gleiche 3rd-Party Dll in untersch. Versionen

Erstellt von backspeck42 vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.268 Views
B
backspeck42 Themenstarter:in
35 Beiträge seit 2019
vor 4 Jahren
Zwei Abhängigkeiten benutzen die gleiche 3rd-Party Dll in untersch. Versionen

Hallo Leute,

wünsch euch erstmal nen schönen Sonntag. Wie der Titel des Posts schon sagt, suche ich heute keine Suchtberatung, aber habe ein Problem mit den Projektabhängigkeiten und Dll-Versionen.
Ich Nutze zwei REST-API-Wrapper-Librarys, für 2 Verschiedene API's. Beides sind Pakete von Drittanbietern (mit Nuget dem Projekt zugefügt). Ich nutze diese beiden Wrapper-Librarys aus drei verschiedenen Projekten heraus: 1 Winform-Projekt (.net 4.6.1), eine .net Core Konsolenanwendung und ein "normales" Konsolenprojekt (4.6.1).
Nun habe ich das Problem, dass ich, wenn ich die "normale" Konsolenanwendungstarte, bekomme ich in Library A eine Ausnahme, dass die NewtonSoft.Json.dll in Version 10.0.0.0 nicht geladen werden kann. Das kommt daher, dass Library B ebenfalls Newtonsoft.Json aber in Version 12 verwendet. Kann sie dummerweise auch nicht einfach beide ins Verzeichnis legen - die Namen sind ja gleich.
Wenn ich nun dll ersetze, mit der 10.0.0.0'er Version, kommt die Ausnahme natürlich dann in Library B (NewtonSoft.Json.dll in Version 12.0.0.0 konnte nicht galaden werden).
Eigenartigerweise läuft es in der Winform-Anwendung sowie in der .Net-Core Anwendung problemlos - und das obwohl im bin-Verzeichnis der Winforms Anwendung auch NUR Newtonsoft.Json.dll 12.0.3 liegt. Komischerweise kommt in diesem Falle keine Exception.
Auch unter .NET-Core keine Probleme.

Achja:
Damit es noch etwas komplizierter wird - ich spreche die beiden Libs nicht direkt aus den Projekten an, sondern Verwende sie in einer eigenen Lib, die ich dann wiederum aus den Projekten heraus verwende. Diese Lib ist .Net-Standard 2.0.

Ich weiß klingt konfus - ich bin es auch und steh auch dem Schlauch ... aber vlt. hat ja jemand ne Idee zum Sonntag...

...danke schon mal!

T
2.219 Beiträge seit 2008
vor 4 Jahren

Was du brauchst ist ein Config Eintrag in den Projekten um beide auf die gleiche Assembly Version umzubiegen.
Schau mal ob du dies so lösen kannst.
Hab sowas auch schon in einem Projekt gehabt und durch einen Redirect mit oldVersion 0.0.0 dann auf die aktuellste Version gestellt und es lief ohne Probleme.

Doku

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

B
backspeck42 Themenstarter:in
35 Beiträge seit 2019
vor 4 Jahren

Hallo T-Virus,

vielen Dank für deine Antwort. Genau das suchte ich!

Verstehe nur nicht:

When you create a desktop app in Visual Studio that targets the .NET Framework 4.5.1 or a later version, the app uses automatic binding redirection.

Demnach müsste es das doch automatisch machen? Oder ist eine Konsolenanwendung keine Desktopapp? So wie vermutlich bei meiner Winform-App - beide sind ja 4.6.1.

Naja vielen Dank jedenfalls, ich schau mir das mal in Ruhe an...

16.807 Beiträge seit 2008
vor 4 Jahren

Klingt nicht konfus; taucht oft auf, wenn Projekte eher konfus organisiert sind.
Kann das sein, dass in Deiner Konsolenanwendung eben schon Binding Redirects definiert sind, die aber nicht passen - in den anderen eben nicht?
Würde das Verhalten erklären.