Bonjour
"Nouveau" sur VS.Net 2005, je suis en train de faire des tests de développement de plugins (sur base d'une interface réalisée en VB.Net 2003, ça ça fonctionne bien) à intégrer dans un frontal développé lui aussi en 2003.
Le hic : mon test montre que la classe compilée en VB.Net 2005 n'est pas "lisible" par le frontal en VB.Net 2003, malgré qu'elle soit bien basée sur une interface correcte
J'aurais pensé qu'on pouvait indépendamment "lire" des DLL quelle que soit la version du moment que l'interface utilisée soit la même...
En clair, j'ai :
- 1 exécutable MonAppli.exe (VB.Net 2003)
- 1 interface iPlugin.dll (VB.Net 2003)
- des plugins Plugin01.dll, Plugin02.dll, etc... développés en VB.Net 2003
Je veux rajouter de nouveaux plugins mais développés en VB.Net 2005 ! Et j'obtiens le message : "Le format du fichier Plugin2005.dll n'est pas valide"
Voici le code de chargement des plugins dans mon .exe :
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 '-------------------- CHARGEMENT DES PLUGINS -------------------- Dim _oTypes() As Type 'Liste de types Dim _sPluginDirectory As String = IO.Path.GetDirectoryName( _ System.Reflection.Assembly.GetCallingAssembly.Location) 'Répertoire courant Dim _sPlugs() As String = IO.Directory.GetFiles(_sPluginDirectory, "GI*.dll") 'Filtre sur les DLL For Each _sPlug As String In _sPlugs 'Pour chaque DLL du répertoire Try 'Tentative de chargement de l'assembly Dim _oAss As System.Reflection.Assembly = _ System.Reflection.Assembly.LoadFrom(_sPlug) _oTypes = _oAss.GetTypes() For Each _oType As Type In _oTypes 'Pour chaque type contenu dans l'assembly If Not _oType.GetInterface("GIAUBE.iPlugin") Is Nothing Then 'Plug-in trouvé ! 'Création d'une instance du plugin pour récup des infos le concernant Dim _Obj As Object = _oAss.CreateInstance(_oType.Namespace & "." & _oType.Name) 'Ajout de l'icône dans la ListImage et attribution à l'item dans la liste _oChargement.SetLoading("Chargement du module " & CType(_Obj, iPlugin).Libellé & "...") ilsIcones.Images.Add(CType(_Obj, iPlugin).Icone) With _oLvwPlugins 'Ajout de l'élément correspondant dans le ListView Dim _It As New ListViewItem(CType(_Obj, iPlugin).Libellé, ilsIcones.Images.Count - 1) _It.SubItems.Add(_oType.Namespace & "." & _oType.Name) 'Type à implémenter _It.SubItems.Add(CType(_Obj, iPlugin).Description) 'Description _It.SubItems.Add(_sPlug) 'Chemin DLL _It.Tag = CType(_Obj, iPlugin).IDPlugin 'ID module correspondant .Items.Add(_It) End With End If Next Catch ex As Exception 'Rien MsgBox(ex.Message) End Try Next '-------------------- FIN DU CHARGEMENT DES PLUGINS --------------------
Avez-vous une solution à ce problème ?
Partager