Laden...

DLL zur Laufzeit in anderem Verzeichnis

Letzter Beitrag vor einem Jahr 4 Posts 592 Views
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.

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.

vielen Dank erstmal.

Im privatePath gehen aber leider nur Unterverzeichnisse.

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.