Classe VS.Net 2005 basée sur interface VS.Net 2003 ?
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 :evilred:
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:
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 ?