[CSharp.net] Assembly.LoadFile und Abhäng
i gkeiten
Helge Lenuweit
csharp.net at glengamoi.com
Wed, 10 Nov 2004 10:01:59 +0100
Habs jetzt doch gefunden... Man erweitert den Suchhorizont der aktuellen
AppDomain durch
AppDomain.CurrentDomain.AppendPrivatePath("PluginDir") ;
um den Unterordner des Ausführungsverzeichnisses, der "einbezogen"
werden soll (d.h. Ladeanforderungen an Assemblies können auch in diesem
Ordner aufgelöst werden). Alternativ ist auch ein Eintrag in das
<probing>-Element in der *.exe.config-Datei möglich.
Gruß, Helge
Christoph Wille wrote:
> Ich müßte rumgraben gehen, aber in #develop machen wir es selber, und
> da geht es.
>
> Chris
>
> At 09:17 PM 11/9/2004, you wrote:
>
>> Hi Christoph,
>>
>> danke für den Hinweis, leider habe ich aber immer noch keine
>> Lösung... Hast Du evtl. ein Beispiel oder noch eine Idee? Ich habe
>> noch einige Forschungen angestellt und weiß inzwischen, daß
>> Assembly.LoadFile die zu ladende Assembly in die ausführende
>> AppDomain lädt. Zur Lösung erzeugt man sich wohl eine neue Appdomain,
>> setzt die Basispfade über das AppdomainSetup-Objekt auf den Plugin-
>> und den Ausführungsordner und erzeugt die Objekte der fremden
>> Assembly in der neuen AppDomain. Leider wird dafür intern wohl die
>> Remoting-Infrastruktur hergenommen, und folgerichtig kommen dabei
>> merkwürdige "Klasse ist nicht als serialisierbar markiert"-Fehler.
>> Bei meinen eigenen Klassen kann ich für [Serializable] sorgen, aber
>> darüberhinaus?
>>
>> Gruß, Helge
>>
>> Christoph Wille wrote:
>>
>>> Es gibt einen Weg den Assembly Locator Mechanismus zu überschreiben.
>>>
>>> Chris
>>>
>>> At 08:07 AM 11/9/2004, you wrote:
>>>
>>>> ich habe ein Problem mit dem Laden von DLLs als Plugins, bzw. deren
>>>> Abhängigkeiten. In einem definierten Unterordner meiner Anwendung
>>>> liegen Plugin-DLLs nach einem bestimmten Namensschema, die ich zum
>>>> Start per Assembly.LoadFile und, sofern erfolgreich,
>>>> Activator.CreateInstance zum Einsatz bringe. Soweit, sogut, aber
>>>> zwei von den Dingern haben externe Abhängigkeiten, und dort
>>>> scheitert das Laden - der Plugin-Ordner wird nicht durchsucht. Lege
>>>> ich die referenzierte Library aber in den Ausführungsordner meines
>>>> Ursprungsprogramms statt meines Plugins, funktioniert es
>>>> (natürlich). Gibt es eine programmatische Lösung für dieses Problem
>>>> (außer GAC-registrieren...)?
>>>
>
>
> _______________________________________________
> CSharp.net Mailingliste, Postings senden an:
> CSharp.net@glengamoi.com
> An-/Abmeldung und Suchfunktion unter:
> http://www.glengamoi.com/mailman/listinfo/csharp.net
>
>