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:
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)
Là, je comprends pas. 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.