Caricamento dinamico DLL con AppDomain

martedì 23 febbraio 2010 - 16.43

formix Profilo | Newbie

Buongiorno a tutti.

Sono alle prese con un piccolo casino che non riesco a risolvere.
La situazione è la seguente:

Ho un Activex (una dll in C#) che dovrebbe chiamare dinamicamente una serie di altre dll in base ad un file di configurazione.
Ho provato con gli Assembly, e funziona perfettamente se non fosse che questi poi non vengono rilasciati, e mi ritrovo con le dll sempre in uso.
Sono passato quindi ad usare l'oggetto AppDomain, che ho letto risolvermi il problema.
Ed in effetti così è, se non fosse che le dll che chiama pare debbano essere nella stessa directory dell'applicazione chiamante.
Il mio problema è presto detto, l'ActiveX ovviamente viene caricato da IE nei Temporary Internet Files, ed ovviamente io qui non posso andare a salvare (tramite l'ActiveX) le dll che mi servono.

ora ho provato tutti i vari metodi dell'oggetto AppDomain :
CreateInstance
CreateInstanceAndUnwrap
CreateInstanceFrom
CreateInstanceFromAndUnwrap

ma nessuno che mi permette di caricare le dll che mi occorrono, da una directory differente, nonostante in alcuni metodi dall'MSDN viene detto, tra i parametri dei metodi "Nome e percorso del file dell'assembly in cui viene definito il tipo richiesto.".
Ma del percorso sembra proprio fregarsene.


qui il codice che utilizzo:

string dllName = Path.GetFileNameWithoutExtension(path);

AppDomain workerAppDomain = AppDomain.CreateDomain(dllName, null);
// do work on proxy
ICommonInterface workerInstance = (ICommonInterface)workerAppDomain.CreateInstanceFromAndUnwrap(path, dllName + "." + dllName);
ds = workerInstance.GetPaziente(portalPath, elem, htParametri);

// Unload worker appDomain
AppDomain.Unload(workerAppDomain);


in definitiva, qualcuno sa come poter caricare la dll da un'altra directory, oppure è a conoscenza di qualche altro modo per poter caricare dinamicamente le mie dll??

grazie mille

Marco
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5