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