Impossible de trouver l'assembly (chargement dynamique de DLL)

Résolu
cs_vincnet68 Messages postés 100 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 24 mai 2013 - 23 mai 2013 à 12:21
cs_vincnet68 Messages postés 100 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 24 mai 2013 - 24 mai 2013 à 09:08
Bonjour,

J'ai une application qui charge dynamiquement des dll (plugin) d'après une liste dans un fichier.
Le chargement se fait via :
 Assembly.LoadFrom(@plugInFolder + "\" + dllName);


La dll apparaît bien lorsque je fait :
AppDomain.CurrentDomain.GetAssemblies()


Puis je désérialize un fichier qui utilise cette assembly (Binary) et j'obtient l'erreur suivante :
Impossible de trouver l'assembly '...'

Je ne comprend pas,

Est-ce que quelqu'un pourrait m'aider.

Merci

Vincnet68

2 réponses

cs_vincnet68 Messages postés 100 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 24 mai 2013 1
24 mai 2013 à 09:08
Merci pour ta réponse, elle m'a permis de trouver une autre solution.

Voilà ce que je fait :
Chargement de la dll
Assembly assembly =   Assembly.LoadFrom(@plugInFolder + "\" + dllName);


Ajout dans program.cs
static void Main()
{
 //.......
AppDomain.CurrentDomain.AssemblyResolve +  = new ResolveEventHandler(CurrentDomain_AssemblyResolve);
//........
}

static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
        {
            string dllFile = args.RequestingAssembly.ManifestModule.Name;
            if (System.IO.File.Exists(PlugInFolder + args.Name))
                return Assembly.LoadFrom(PlugInFolder + dllFile);
            else
                return Assembly.LoadFrom(System.Windows.Forms.Application.StartupPath + "\" + dllFile);

        }

Au vu de ce que donne args.RequestingAssembly.ManifestModule.Name je suis étonné que cela fonctionne mais ça marche.

J'espère que ça pourra servir à quelqu'un.
1