begin process at 2010 02 09 22:57:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Exécution

 > 

Décharger une Dll


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Décharger une Dll

dimanche 27 mai 2007 à 16:22:13 | Décharger une Dll

M5i9k

Bonjour à tous,

je voudrais creer une application qui puisse charger un assembly et le décharger pour permettre de le mettre à jour puis de le recharger.
J'ai essayé de la manière suivante :

            Assembly a = Assembly.LoadFrom("test.dll");
            Type t = a.GetType("ActionsDll.Actions");
            object target = Activator.CreateInstance(t);
            string ret = (string)t.InvokeMember("Execute",BindingFlags.InvokeMethod,null, target, new object[]{"msgBox"});

pour charger un assembly comntenu dans test.dll qui contient une fonction Execute. Pendant l'execution du programme, je ne peux plus supprimer la dll. Je voudrais donc la décharger mais je ne trouve pas comment faire sauf en utilisant AppDomain mais je trouve cela trop compliqué pour ce que je veux faire :

AppDomain n = AppDomain.CreateDomain("test");
object target = n.CreateInstanceAndUnwrap("test.dll","ActionsDll.Actions");
...

N'y à t'il pas moyen de décharger un assembly qui à été charger dans l'AppDomain courant???

merci de vos réponse
dimanche 27 mai 2007 à 16:35:06 | Re : Décharger une Dll

coq

Administrateur CodeS-SourceS

Salut,

Non, il n'est vraiment pas possible de décharger un assembly du domaine d'application courant.



/*
coq
MVP Visual C#
CoqBlog
*/

dimanche 27 mai 2007 à 16:55:34 | Re : Décharger une Dll

coq

Administrateur CodeS-SourceS
Et un peu de lecture, si tu veux approfondir le sujet :-) : Jason Zander's WebLog : Why isn't there an Assembly.Unload method?



/*
coq
MVP Visual C#
CoqBlog
*/
dimanche 27 mai 2007 à 17:26:39 | Re : Décharger une Dll

M5i9k

Ok je te remercie pour la réponse et le lien, je dois donc utiliser un AppDomain mais je n'arrive pas à suivre les étapes, peux tu me donner un bout de code que je puisse reprendre?

1) Je créé un AppDomain :
AppDomain a = AppDomain.CreateDomain("test");

2) Je charge l'assembly dans ce nouveau AppDomain (test.dll)

3) J'appelle la fonction Execute de l'assembly (string ActionsDll.Execute(string))

4) Je décharge l'assembly

Peux tu me montrer comment faire le plus simple possible car dans les exemples que j'ai vus, il faut creer une classe qui contient un arrayList d'assembly et je ne comprends pas le fonctionnement, je n'ai besoin que d'un assembly.
Merci d"avance.
dimanche 27 mai 2007 à 22:09:07 | Re : Décharger une Dll

M5i9k

Voici le code que j'essaye de faire fonctionner mais qui ne fonctionne pas :

AppDomain n = AppDomain.CreateDomain("test");
Assembly a = n.Load("ActionsDll");
Type t = a.GetType("ActionsDll.Actions");
object target = n.CreateInstance("ActionsDll","ActionsDll.Actions");

j'ai renommé test.dll en ActionsDll.dll qui est son nom à la compilation.
dimanche 3 juin 2007 à 00:00:34 | Re : Décharger une Dll

coq

Administrateur CodeS-SourceS
Salut,

Comme le dit la doc, le problème est que, la classe Assembly n'héritant pas de MarshalByRefObject, la méthode AppDomain.Load ne doit pas être utilisée pour charger un assembly dans un autre domaine d'application que celui courant.
Tu peux passer pour un "loader" similaire à ce que j'ai fait dans cette source là par exemple : http://www.csharpfr.com/codes/PORTEE-VALEUR-CHAMP-STATIC_41444.aspx


/*
coq
MVP Visual C#
CoqBlog
*/
dimanche 3 juin 2007 à 00:01:39 | Re : Décharger une Dll

coq

Administrateur CodeS-SourceS
"Tu peux passer pour un"
Je voulais bien entendu dire
"Tu peux passer par un"




/*
coq
MVP Visual C#
CoqBlog
*/
lundi 4 juin 2007 à 21:54:51 | Re : Décharger une Dll

M5i9k

Je te remercie pour tes réponses et ta source coq je regarde cela.



Cette discussion est classée dans : test, dll, assembly, décharger, appdomain


Répondre à ce message

Sujets en rapport avec ce message

ressources qu'est ce qui est le mieux ? [ par revlis ] en c# .net, j'ai mis des fichiers (wav et ico) dans une dll a part. et dans ma class principal, je recupère l'assemblySystem.Reflection.Assembly ress C# : Comment decharger un DLL par David LARDY [ par microdav ] Bonjour,Dans mon prog en C# je charge plusieurs DLL dynamiquement puis les utilise tres bien de la façon suivante :>using System.Reflection ; >Assembl Création dll N° assembly... [ par Syruis ] Bonjour, je me suis mis au C# pour faire une dll qui devrait me servir en ASP. Donc pour l'integrer a l'asp 'Appel ASP il faut importer le dll .. r Nant et les versions de dll / assembly [ par code05 ] Salut ! Disons que que j'ai une dll de nom : assembly.dllJ'aimerais à l'aide de l'outil Nant (dans le fichier xml) récupérer la version de cette dll.J L'assembly référencé 'Interop.DAO.dll' n'a pas un nom fort [ par ArnaudFabry ] Bonjour,Je programme un service web en VB.NET.Il y a quelques mois le source marchait. Maintenant je voudrais le modifier seulement j'ai l'erreur suiv DLLImport Au Secours !!!!!!! [ par blueangel ] Bonjour tout le monde ,Voila je veux créer une DLL en c# le pb c'est que cette dll fait référence à une autre DLL ecrite en c++pour tester le programm Importer DLL VB dans du C# [ par blat ] Hello :)Tout d'abord je tiens à m'excuser au cas où ma question ne serait pas posée au bon endroit, j'ai pas trouvé où la mettre...Voila mon problème. Erreur de configuration [ par pma3d ] Bonjour à tous. Voilà, pour ceux qui suivent mes posts, mon projet avance. Je pensais en avoir terminé avec les difficultés, mais hier, j'ai encore e Problème au déploiement d'un site avec une DLL [ par tanginthemiddle ] Bonjour,J'ai fait une petit DLL de test en VB6. Celle-ci renvoie simplement une chaîne de caractère.Mon site ASP.net  fais juste un appel à cette DLL


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,265 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales