comment peut t on faire pour lister les références utilisées dans un projet vb net?
Comment faire pour charger ou décharger dynamiquement une référence .exe .dll ?
merci d'avance
comment peut t on faire pour lister les références utilisées dans un projet vb net?
Comment faire pour charger ou décharger dynamiquement une référence .exe .dll ?
merci d'avance
Utilise la méthode Assembly.GetReferencedAssemblies :
Pour charger un assembly, on utilise Assembly.Load. Il n'est pas possible de décharger un assembly, sauf si tu l'as chargé dans un AppDomain séparé (auquel cas tu peux décharger l'AppDomain complet)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Imports System.Reflection ... Dim asm As Assembly = Assembly.GetEntryAssembly() For Each refAsm As Assembly In asm.GetReferencedAssemblies() Console.WriteLine(refAsm.GetName()) Next
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
et concretement comment faire pour decharger un assembly? Auriez vous un exemple de code SVP?
j'ai essayé ca mais ca n'a pas l'air de marcher !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 Dim AssembliesLoaded = MyDomain.GetAssemblies() For Each MyAssembly As Assembly In AssembliesLoaded If InStr(MyAssembly.FullName.ToString, "Excel") <> 0 Then MsgBox(MyAssembly.Location.ToString) Dim buffer As Byte() = File.ReadAllBytes(MyAssembly.Location) Dim AppDomain1 = AppDomain.CreateDomain("eee") AppDomain1.Load(MyAssembly.FullName.ToString) AppDomain.Unload(AppDomain1) End If Next For Each MyAssembly As Assembly In AssembliesLoaded If InStr(MyAssembly.FullName.ToString, "Excel") <> 0 Then MsgBox(MyAssembly.FullName.ToString) End If Next
Je ne comprends pas le sens de ce test... qu'est-ce que c'est censé vérifié ?
Quand on décharge un AppDomain, ça décharge les assemblies qui sont chargés dedans. Mais si les même assemblies sont chargés aussi dans un autre AppDomain, ils restent chargés dans cet AppDomain...
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
Oui mais ce test n'est pas probant, puisque tu as initialisé AssembliesLoaded avant de faire le Unload...
Bon, en fait je vois ce que tu cherches à faire, mais ça ne marchera pas :
- ton programme démarre avec l'AppDomain X
- tu charges l'assembly A dans X
- tu crées un AppDomain Y dans le quel tu charges aussi A
- tu décharges Y, ce qui décharge en même temps les assemblies qui étaient chargés dedans, mais A est toujours chargé dans X...
Bref, comme je le disais au début, ON NE PEUT PAS décharger un assembly sans décharger l'AppDomain dans lequel il est chargé. Si tu as absolument besoin de décharger un assembly, arrange toi pour le charger seulement dans un nouvel AppDomain que tu pourras décharger ensuite. Si tu le charges dans l'AppDomain "principal" (celui dans lequel ton application démarre), il sera impossible de le décharger sans arrêter l'application
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
Je comprends rien à ton histoire
Excel.exe, ce n'est pas un assembly .NET... si tu veux faire de l'interop avec Excel, ce n'est pas Excel.exe qu'il faut référencer, c'est les PIA (primary interop assemblies)
cf. la FAQ : http://dotnet.developpez.com/faq/csharp/?page=office
ou alors c'est moi qui suis bête et qui ai rien compris à ce que tu veux faire
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager