IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Décharger une Dll de mon programme


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut Décharger une Dll de mon programme
    Bonjour ,

    J'ai un programme qui utilise une DLL externe (d'un autre projet) en référence.

    je cherche une méthode pour décharger ma DLL et la recharger depuis mon programme ?


    merci pour vos réponses

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Une fois qu'un assembly est chargé dans un domaine d'application (AppDomain), le seul moyen de le déchargé est de décharger l'AppDomain lui-même. Donc si tu as chargé cette DLL directement dans l'AppDomain principal de ton appli, le seul moyen est de redémarrer l'application...

    Après, tu peux créer un nouvel AppDomain et charger ta DLL dedans, mais c'est nettement plus compliqué, parce que tu ne peux plus manipuler la DLL directement depuis l'AppDomain principal ; tout doit se faire via des appels cross-AppDomain, et c'est vraiment galère... Les systèmes de plugin utilisent souvent ce genre de chose, pour isoler le plugin et pouvoir le décharger séparément.

  3. #3
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    Merci finalement j'ai opté pour une solution comme plus simple :
    charger dans un autre assambly

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    byte[] bytes = System.IO.File.ReadAllBytes("ClassConfig2.Dll");
    Assembly a = Assembly.Load(bytes);
    // Get the type to use.
    Type myType = a.GetType("ClassConfig.ClassConfig");
     // Create an instance. 
    object obj = Activator.CreateInstance(myType);
    et ça marche même si les types de ma dll ne sont pas reconnu dans l'application mais j'ai trouvé une méthode pour dépasser ça.

    Merci

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Bah là tu charges quand même l'assembly en mémoire, et tu ne peux pas le décharger... En fait, si je comprends bien, ta question était plutôt "comment ne pas verrouiller le fichier dll"

  5. #5
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    Mon besoin c'est :

    comment je peux modifier une dll charger par mon application (self update).

    Car cette DLL est compile par mon application.

    au premier temps j'ai ma dll de base qui contient une classe de données.
    et par la suite si ces données sont changées, de générer une autre dll avec les nouvelles données et décharger l'ancienne dll et charger la nouvelle.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par azstar Voir le message
    Mon besoin c'est :

    comment je peux modifier une dll charger par mon application (self update).

    Car cette DLL est compile par mon application.

    au premier temps j'ai ma dll de base qui contient une classe de données.
    et par la suite si ces données sont changées, de générer une autre dll avec les nouvelles données et décharger l'ancienne dll et charger la nouvelle.
    A mon avis ta solution ne fonctionne pas dans ce cas ; si tu recharges l'assembly de la même façon, ça ne changera rien aux instances déjà créées des types de cet assembly. Enfin tu peux essayer, mais je suis un peu dubitatif...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment mais une DLL dans un programme
    Par zizo89 dans le forum Delphi
    Réponses: 1
    Dernier message: 20/04/2007, 23h25
  2. une IHM pour mon programme fortran
    Par mehdouchi dans le forum Fortran
    Réponses: 5
    Dernier message: 09/09/2005, 16h00
  3. importation d'un fonction d'une dll dans mon application
    Par jeannot27 dans le forum C++Builder
    Réponses: 7
    Dernier message: 11/07/2005, 15h35
  4. Integrer une musique dans mon programme
    Par Tutux84 dans le forum C
    Réponses: 2
    Dernier message: 29/01/2005, 12h41
  5. [] Utiliser AVI d'une DLL dans mon programme
    Par seb.49 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/05/2003, 14h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo