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

Windows Forms Discussion :

[C#] Load et Unload assembly en c#


Sujet :

Windows Forms

  1. #1
    PST
    PST est déconnecté
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [C#] Load et Unload assembly en c#
    Voilà je crée un domaine et je charge un assembly dedans. J'Unload le domaine mais l'assembly reste locké. Est ce que quelqu'un sait comment délocker l'assembly ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    System.AppDomain	_l_app = AppDomain.CreateDomain("Mon domaine");
    _l_app.Load("MyAssembly.Class.Tests, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
    AppDomain.Unload(_l_app);
    Lorsque j'essaie de supprimer la dll, celle-ci refuse car elle me signale qu'elle est locké par le processus.

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut Re: [C#] Load et Unload assembly en c#
    Essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    string a = "MyAssembly.Class.Tests,"
         + "Version=1.0.0.0,"
         + "Culture=neutral,"
         + "PublicKeyToken=null";
    AppDomain _l_app = AppDomain.CreateDomain("Mon domaine");
    Assembly MonAssembly = _l_app.Load(a);
    //... etc
     
    //liberation
    MonAssembly = null;
    AppDomain.Unload(_l_app);
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    PST
    PST est déconnecté
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Non ça marche pas

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 94
    Points
    94
    Par défaut
    Salut,

    Juste en passant, c'est quoi un domaine?

  5. #5
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par joujoukinder
    Salut, Juste en passant, c'est quoi un domaine?
    un article est en cours en attendant MSDN Classe AppDomain
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  6. #6
    DrQ
    DrQ est déconnecté
    Membre expérimenté
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Points : 1 515
    Points
    1 515
    Par défaut
    Regardes du côté des shadow copy, pour le moment je ne pas t'aider plus sur le sujet je n'ai pas eu à l'utiliser.
    Si tu ne fais pas une shadow copy automatiquement ta DLL sera locké par le processus. Alors qu'avec un shadow copy il fait une copie de la DLL qu'il charge ensuite ce qui te permet de la supprimer.
    1)http://www.developpez.com/cours/
    2)Recherche
    3)Posez votre question en suivant les règles
    _oOo-DrQ-oOo_

  7. #7
    PST
    PST est déconnecté
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Visiblement les hadow copy ne changent rien au problème.
    ça fait bien des copies des dll mais les originaux restent bloqués.
    Je me suis servis de l'aide de la msdn pour construire le code et ça ne marche pas.

  8. #8
    DrQ
    DrQ est déconnecté
    Membre expérimenté
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Points : 1 515
    Points
    1 515
    Par défaut
    Pour éviter tout problème il faut créer un nouveau domaine dans lequel l'assembly doit être chargée. Il faut que ça soit une classe du nouveau domaine qui charge l'assembly en shadow copy pour que ça marche.

    Par contre je n'ai pas de code là dessus pour t'aider. C'est juste suite à une discution avec quelqu'un qui a réalisé ce genre de chose que je peux t'en informer.
    1)http://www.developpez.com/cours/
    2)Recherche
    3)Posez votre question en suivant les règles
    _oOo-DrQ-oOo_

  9. #9
    PST
    PST est déconnecté
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Dans ce cas j'invite celui avec qui tu as discuté à déposer ici un morceau de code qui fonctionne. Je lui en serais très reconnaissant.

  10. #10
    PST
    PST est déconnecté
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Ok, ça marche effectivement. Donc pour ceux que ça interresse voilà la marche à suivre:
    - Créer un projet
    - Dans ce projet créer une classe A qui va créer une instance de B
    - Dans ce même projet créer une classe B "proxy" qui va charger l'assembly

    Le domaine qui va contenir l'assembly chargé doit être créé dans A. A doit créer une instance de B en utilisant CreateInstance.
    Et c'est l'instance de B ainsi créée dans le domaine, qui doit charger les assemblies.

  11. #11
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Mhm.. il serait peut être interressant que cela soit tagé FAQ pour l'elaboration d'une Q/R plus détaillée
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

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

Discussions similaires

  1. Could not load file or assembly
    Par Michelk12 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 20/06/2008, 13h51
  2. Could not load file or assembly 'office - Problème
    Par laszia dans le forum VB.NET
    Réponses: 4
    Dernier message: 08/12/2007, 04h50
  3. Réponses: 23
    Dernier message: 28/08/2007, 19h41
  4. [c#]Could not load file or assembly
    Par zitoun dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 08/05/2007, 17h35
  5. load et unload
    Par khadija24 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 28/04/2007, 23h08

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