Laden...

DLL zur Laufzeit in anderem Verzeichnis

Erstellt von RobinW vor 11 Monaten Letzter Beitrag vor 11 Monaten 519 Views
R
RobinW Themenstarter:in
2 Beiträge seit 2023
vor 11 Monaten
DLL zur Laufzeit in anderem Verzeichnis

Hallo,

ich verzweifle gerade an an folgendem Problem:

Ich habe ein Programm welches unter "C:\Test" läuft, in diesem benötige ich Methoden aus einer DLL, diese befindet sich zur Laufzeit unter "C:\Programme\Common Files\Test".

Wenn ich das Programm ausführe und die DLL im .exe Verzeichnis liegt, funktioniert es logischerweise.

Gibt es irgendwie eine Möglichkeit die DLL über einen festen Pfad einzubinden?

Ich habe versucht die DLL über Assembly.LoadFile einzubinden, da bekomme ich immer eine Missing.Method.Exception 😦

Eventuell kann mir hier jemand auf die Sprünge helfen.

16.834 Beiträge seit 2008
vor 11 Monaten

Sowas geht, auch wenns nicht wirklich empfohlen ist - vor allem nicht auf externe Verzeichnisse, über assemblyBinding und probing

Siehe Verweis auf DLL im kompilierte Projekt in ein Unterverzeichnis bringen

Gibt aber ein paar seltene Szenarien, wo das derzeit nicht unterstützt wird.
probing privatePath="..." doesn't work in .Net 5.0

Edit: interessant, ich dachte hier würden mittlerweile auch vollständige Pfade funktionieren.

R
RobinW Themenstarter:in
2 Beiträge seit 2023
vor 11 Monaten

vielen Dank erstmal.

Im privatePath gehen aber leider nur Unterverzeichnisse.

2.079 Beiträge seit 2012
vor 11 Monaten

Du kannst das Laden der Assembly auch selber implementieren:

https://learn.microsoft.com/en-us/dotnet/api/system.appdomain.assemblyresolve

Das Beispiel ist etwas doof, im Wesentlichen geht's nur um das AssemblyResolve-Event, das aufgerufen wird, wenn er eine Assembly nicht findet. Dort bekommst Du dann den Namen mitgeteilt und kannst die Assembly selber nach deinen eigenen Regeln von einer Datei laden.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.