[VS 2005] Libérer un assembly après un Assembly.LoadFile

[Résolu]
Signaler
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011
-
Salut all,
(ATTENTION.NET est tout nouveau pour moi)
Aller une petite question rapide en passant un vendredi après midi
sous Microsoft Visual Studio Macros (du VB .NET après tout) j'ai réalisé une macro me générant automatiquement des SmartTag pour mes contrôles personnels.

pour ce faire je fait un peu de System.Reflection  (donc IMPORTS System.Reflection)
je charge donc mon Assembly (qui est celui de la solution Ouverte lors de l'execution de la macro mais généré) dans une Variable Assembly de la maniere suivante
Dim mAssembly As Assembly = Assembly.LoadFile(_assemblyPath & "\bin\Release\" & _dllName)
 , ----
(Coloration syntaxique automatique par Kenji)

j'effectue ensuite des CreatInstance de mes objets pour parcourir leurs propriétés et créée mon code dynamiquement que j'insère ensuite dans ma solution ouverte.

Mais voila le HIC. une fois la génération du code du samrttag terminée sans problème et ajouté à la solution, IMPOSSIBLE de généré de nouveau ma solution :

Avertissement    1    Impossible de supprimer le fichier "bin\Release\TMA.UI.Controls.dll". L'accès au chemin d'accès 'C:\Documents and Settings\rivet\Mes documents\Visual Studio 2005\Projects\TMA.UI.Controls\TMA.UI.Controls\bin\Release\TMA.UI.Controls.dll' est refusé.    TMA.UI.Controls

conduisant à une Erreur:

Erreur    2    Impossible de copier le fichier "obj\Release\TMA.UI.Controls.dll" vers "bin\Release\TMA.UI.Controls.dll". Le processus ne peut pas accéder au fichier 'bin\Release\TMA.UI.Controls.dll', car il est en cours d'utilisation par un autre processus.    TMA.UI.Controls

je pense que cela vient du LoadFile() et donc de ma macro qui ne libère pas l'accès à l'Assembly.

Est ce que quelqu'un pourrais me dépanner en m'aiguillant SVP.
D'avance merci a vous, et si pas de nouvelles avant 5 heures, bon WE à tous.
@+: Ju£i?n
Pensez: Réponse acceptée

6 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonjour Julien,


Comme je ne connais rien à VB.Net, je ne fais que te rapporter confusément la réponse confuse (je n'en connais même pas le sens) faite par un copain :
Il me parle de "charger dans un domaine différent et de décharger le dit domaine si tu veux libérér la mémoire"

  A moi, "ça ne me parle pas", mais peut-être qu'à toi, oui ?
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
J'ai oublier de préciser que:

- Ce qui me fait penser que cela vient du LoadFile c'est que si je ferme ma solution puis la réouvre, je peux la généré sans souci...

voilà j'espère en tout cas avoir été assez clair.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
Allons bon, impossible d'ouvrir l'éditeur de marco.
J'ai fait des testes hors marco (vb.net normal), ca fonctionne. 
As-tu mis un mAssembly = Nothing a la fin ?







__________
Kenji

(


Nouveau forum VBA/Office
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut [auteurdetail.aspx?ID=231472 Charles Racaud],
Merci pour la réponse, mais hélas oui j'ai déjà testé et mAssembly = Nothing ne libère pas l'assembly.

Je vais continuer à chercher. Sais tu si il y a moyen de charger un Assembly pour réflection en mode "Shared"

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Merci [auteurdetail.aspx?ID=615490 jmfmarques], pour la réponse je viens effectivement de lire quelque chose dans le même genre sur Google Groups  je vais donc essayer de faire cela et je vous tiens au courant.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011

ce sujet est assez recurant sur l'irc de codes sources "le dechargement des assembly", une des chose première a savoir est que suivant si la manière de chargement utilisé pour lancé l'assembly "load ou loadassembly" (enfin de tte j'ai oublié le nom exacte mais yen a 2 me semble) tu n'as pas les même droits dessus
de plus il me semble que l'on ne peux pas decharger les assembly autrement qu'en relancant le code (comme dans la plus part des programme (meme si il le masque))
j'en rediscuterai ce soir pour avoir qq complement

TeBeCo