Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : VB.Net - Gestion de plugins (Assembly, Appdomain) [ Système / Exécution ] (olixelle)

vendredi 27 octobre 2006 à 14:08:56 | VB.Net - Gestion de plugins (Assembly, Appdomain)

olixelle

Bonjour,

je réalise une applicaiton dans laquelle je souhaite implémenter un systeme de plugins.
J'ai donc un .exe central et dans un répertoire "plugins", des dll qui sont les plugins
Au démarrage de l'appli, je parcours le répertoire plugins, a chaque fois que je rencontre une dll, je la charge en tant qu'assembly, je verifie via la réflexion si l'assembly contient un type implémentant une interface et si c'est le cas, j'instancie ce type pour l'ajouter dans mon appli.

Tout ca marche très bien

2 ème étape, je souhaite ajouter un gestionnaire de plugin dans mon appli: le gestionnaire pourrait ajouter ou supprimer des plugins.
Concernant la suppression de plugins, je veux supprimer les dll correspondante. Cependant, pour les supprimer, je dois déréférencer l'assembly de mon appli. Par contre, on ne peut pas déréférencer comme ca, on est obligé de décharger l'appdomain correspondant

Il faudrait donc que je puisse créer pour chaque plugin (dll, assembly) un appdomain correspondant.

Et c'est la ou je bloque, je n'arrive pas à créer un appdomain par plugin....

Si vous avez des idées, je commence vraiment à bloquer la :(

Rollerman

_________________________________________________________________________________________________

'*****************************************************************************************************

'fonction scannant un répertoire et retournant un arraylist avec la liste des plugins trouvés

PublicSub load_plugins(ByVal e_plugins_directory AsString)

'init les arraylist

singleton.t_plugins =

New ArrayList

'parcours le dossier plugins pour charger les plugins

Dim chemin AsString = e_plugins_directory

Dim d AsString

'pour chaque répertoire dans le répertoire plugin

ForEach d In IO.Directory.GetDirectories(chemin)

'cree un domain pour le repertoire

Dim setup_test AsNew AppDomainSetup

Dim domain_name AsString = "domain_" & d.Substring(d.LastIndexOf("\") + 1)

setup_test.ApplicationBase = d

setup_test.PrivateBinPath = d

current_domain = AppDomain.CreateDomain(domain_name,

Nothing, setup_test)

'parse les dll du dossier

current_directory_plugin = d

current_domain.DoCallBack(

AddressOf scan_plugin_folder)

Next

EndSub

PublicSub scan_plugin_folder()

'parse les fichiers

Dim f AsString

ForEach f In IO.Directory.GetFiles(current_directory_plugin)

'si c une dll

If f.EndsWith(".dll") Then

'on charge la dll par réflexion

Dim monAssembly As [Assembly]

Try

monAssembly = System.Reflection.Assembly.LoadFrom(f)

'parcourt les type de l'assembly

Dim MonType As Type

ForEach MonType In monAssembly.GetTypes()

'pour chaque type, on regarde si il hérite de uc_multimedia

If MonType.BaseType.Name = "uc_multimedia" Then

'instancie & ajoute au tableau

singleton.t_plugins.Add(current_domain.CreateInstanceFrom(monAssembly.FullName, MonType.Name))

EndIf

Next

Catch ex As Exception

'rien, c'est que ce n'est pas une assembly valide

EndTry

EndIf

Next

EndSub





Cette discussion est classé dans : dll, plugin, domain, assembly, plugins


Répondre à ce message

Sujets en rapport avec ce message

CallBack : interconnection [ par ABF ] Bonjour, J'ai testé plusieurs choses : - plugins - dll Mon soucis est de faire une sorte de mix entre les 2. En fait j'ai une appli principale et Publication et dll StdFormat [ par LaNono ] Bonjour tout le monde Je suis en train de publier mon application pour l'installer sur d'autres postes. J'ai utilisé pour cela l'action "Publier" de [HELP!!]Creer une DLL et l'utiliser dans un EXE [ par Broniz ] Bonjour,Je sais que plusieurs exemples et tutoriels ont déja été posé sur le sujet, mais je n'ai reussi à en faire fonctionner aucun ...J'ai un Projet Problème de DLL et interface [ par dragon ] Bonjour tout le monde,j'ai un petit problème sous Visual Basic 2005je veux ajouter la possibilité de charger des plugin dans mon application. J'ai réc DLL/Plugin avec Visual Basic 2008 Express (VB.NET) [ par sebastien_hebrard ] Bonjour tout le monde, Je souhaiterais savoir s'il est possible de développer des composants DLL/Plugin avec la version Visual Basic 2008Express (VB Assembly & DLL [ par Djzlouk ] Bonjour.Je trouve pas de Doc sur le net à ce sujet et ca m'embete un peu, donc je poste ici à tout hasard. On sait jamais y a p'etre quelqu'un qui con [.NET] Référence et emplacement [ par alicvb ] Bonjour,Je travaille sous VB.NET 2005.Voici mon problème : Mon projet contient une projet principal (PP) une dll que j'ai créé (PD) et plein de sous p Outlook et DLL VB.Net ? [ par Pijay ] Bonjour à tous,Je suis actuellement en train de développer une DLL en VB.Net.Dans un premier temps, j'ai réussi à développer une DLL qui contient une Acces Outlook à partir d'une DLL VB.Net [ par Pijay ] Bonjour à tous,Je suis actuellement en train de développer une DLL en VB.Net.Dans un premier temps, j'ai réussi à développer une DLL qui contient une Création de dll com à partir d'une dll.NET [ par trainkill ] Bonjour,Je suis en train de faire une classe d'assembly afin de générer une dll com afin de pouvoir utiliser des méthodes d'une autre dll.net (fournie


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,686 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.