2016-08-22 3 views
0

ich diese Struktur ReferenzSet manully Montage

--Loader.exe 
--Core.dll 
--Plugins/Test.dll 

--C:\Program Files\Program\Program.exe 

Assembly Test.dll Bezug auf core.dll hat, die in Ordnung ist. Wenn ich Loader.exe ausführe, injiziere ich Core.dll in einen anderen Prozess (Program.exe) und versuche dann, die Assembly Test.dll zu laden. Das Problem ist, dass sich Test.dll in dem Pfad C: \ Programme \ Program \ instad des Pfads, in dem es geladen wurde, nach Referenz Core.dll sucht.

Lösung: (Ich suche)

Ich simly für Art und Weise suchen, wie Bezug zu laden vom Pfad Instand von Prozesspfad des anderen auszuführen.

Frage:

Sie nicht verstehen, wenn core.dll Lasten Versammlung, die sich auf core.dll hat, warum es von selbst nicht geladen werden kann?

Antwort

2

Das Verzeichnis, aus dem referenzierte Assemblys geladen werden, wird durch die Konfiguration des AppDomain bestimmt, in dem der Code ausgeführt wird, insbesondere durch die Eigenschaften AppDomain.BaseDirectory und AppDomain.RelativeSearchPath. Standardmäßig werden die Assemblys aus dem Verzeichnis geladen, das Ihre Einstiegspunkt-Assembly enthält (normalerweise Ihre Haupt-EXE-Anwendungsassembly). Um diese Pfade anzupassen, müssen Sie eine benutzerdefinierte AppDomain erstellen. Alternativ können Sie die Baugruppen manuell laden, z. B. mit Assembly.LoadFile oder Assembly.LoadFrom.

+0

Ich verstehe, was Sie mir sagen wollen, und ich bekomme es jetzt. Dank dafür. Jedenfalls habe ich versucht, das mit diesen Links zu lösen [http://blogs.microsoft.co.il/sasha/2010/05/06/assembly-private-bin-path-pitfall/] und [dies] (https://mhusseini.wordpress.com/2013/07/17/loading-assemblies-in-new-appdomain-und-unloading-them/) und kann es nicht funktionieren .. Laden Sie Assembly in eine andere Domäne (In AppDomain Ich habe LoadFile benutzt, wenn ich eine andere Domain erstelle, lade ich nur) – Vacko