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
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
Si tu aimes ma Réponse pense à cliquer sur
Visiter mon blogEt mes codes sources
- La simulation de navigation dans internet explorer avec Interop.SHDocVw
- Protéger mes données de configuration dans une dll compilée
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.
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Merci finalement j'ai opté pour une solution comme plus simple :
charger dans un autre assambly
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.
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);
Merci
Si tu aimes ma Réponse pense à cliquer sur
Visiter mon blogEt mes codes sources
- La simulation de navigation dans internet explorer avec Interop.SHDocVw
- Protéger mes données de configuration dans une dll compilée
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"
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
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.
Si tu aimes ma Réponse pense à cliquer sur
Visiter mon blogEt mes codes sources
- La simulation de navigation dans internet explorer avec Interop.SHDocVw
- Protéger mes données de configuration dans une dll compilée
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Partager