2016-05-13 7 views
0

Ich bin derzeit auf der Suche nach einer Möglichkeit, eine Drittanbieter-DLL (Telerik) für mein Prisma-Modul zu laden, wenn dieses in meiner Shell erforderlich ist.Prism Load dritte DLL, wenn das Modul startet

ich eine boostrapper mit einem benutzerdefinierten ModuleCatalog erstellt habe

Mein CustomModuleCatolog ist für meine Module finden DLL als IModule gekennzeichnet an sie in den verwalteten Katalog verweisen.

Das funktioniert gut.

Das einzige Problem ist, dass, wenn mein ModulA startet es Telerik.Windows.Controls.Gridview erfordert. Diese DLL wird nicht in das Shell-Projekt referenziert. Ich möchte nicht benötigte DLL in das Shell-Projekt verweisen müssen.

So bekomme ich einen Fehler, weil diese DLL nicht geladen ist.

Meine Frage ist:

Gibt es eine elegante Art und Weise mit der dritten DLL zu laden, wenn durch ein Modul (nur die fehlenden one) benötigt?

Sollte ich diese Abhängigkeit direkt von meinem CustomModuleCatalog laden, oder soll ich dies laden, wenn mein IModule.Initialize Aufruf ist? Gibt es einen anderen Weg, es zu tun?

Danke im Voraus.

+0

Können Sie uns mehr Informationen über die Fehlermeldung geben? – toumir

Antwort

1

Ich handle damit, indem ich den Ausgabeordner der Module auf den gleichen wie die Shells setze. Wenn eines meiner Module auf etwas verweist, wird es in die Ausgabe kopiert und das Modul findet es zur Laufzeit. Wenn Sie einen separaten Modulordner haben, müssen Sie das Ereignis AppDomain.AssemblyResolve in Ihrer Shell behandeln (siehe z. B. Resolve assembly references from another folder).

+0

Ich möchte wirklich mein Modul innerhalb eines Ordnernamens Modul/ModuleName1, Module/ModuleName2 etc ... Also, was Sie empfehlen, AppDomain.CurrentDomain.AssemblyResolve von meinem Shell-Projekt zu beobachten? Ich werde es versuchen :) – pix

+0

Ich schaute auf so etwas, aber ich fühle nicht, dass dies eine der elegantesten Weg ist, es zu tun. : / – pix

Verwandte Themen