Bonjour,
Je cherche depuis un moment sans résultat donc je vous soumets mon problème:
Je possède des DLL indépendantes : Audi.dll, VW.dll, Peugeot.dll, etc... qui implémentent la même interface IVoiture.
J'ai dans une autres DLL "Garage" une classe de gestion GarageManager qui implémente IGarage et qui charge dynamiquement une dll voiture. IVoiture appartient à cette assembly. Cette assembly est donc référencée dans toutes les DLL voiture.
Pour celà:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 //Chargement logique de la DLL. Assembly assembly = Assembly.Load("Audi ,version:1.0.0.0"); // Introspection des types try { foreach (Type type in assembly.GetTypes()) { if (type.Name == "Moteur") { // Un type correspond, création d'un objet maVoiture = (IVoiture) Activator.CreateInstance(type); } } } catch (ReflectionTypeLoadException ex) { Exception[] test = ex.LoaderExceptions; }
Tout celà fonctionne sauf dans le cas où je signe mes assemblies.
à la ligne assembly.GetTypes(), j'obtiens une erreur:
Là, je comprends pas.Impossible de charger le fichier ou l'assembly 'Garage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ou une de ses dépendances. La définition trouvée du manifeste de l'assembly ne correspond pas à la référence de l'assembly. (Exception de HRESULT : 0x80131040)Ce n'est pas un problème de GAC puisque le chargement de la DLL est OK.
Quelqu'un peut-il m'expliquer?
Si non, je vais me sentir obliger d'utiliser le chargement physique avec LoadFrom().
Merci.
Partager