Dans .Net, je voudrais énumérer tous les assemblys chargés sur tous les AppDomains. Le faire pour AppDomain de mon programme est assez simple AppDomain.CurrentDomain.GetAssemblies()
. Dois-je accéder d'une manière ou d'une autre à chaque AppDomain? Ou y a-t-il déjà un outil qui fait cela?
c#
.net
assemblies
Abtin Forouzandeh
la source
la source
GetAssemblies()
cela ne fonctionnera pas, car il n'est pas récursif et il manquera toutes les références d'assemblage imbriquées. J'ai ajouté une version récursive deGetAssemblies()
at stackoverflow.com/questions/383686/… .AppDomain.CurrentDomain.GetAssemblies()
c'est parfaitement bien. Il n'a pas besoin de parcourir les références de manière récursive, car il n'énumère pas les références en premier lieu.Réponses:
Utilisation de Visual Studio
Cela donne des détails sur chaque assembly, domaine d'application et dispose de quelques options pour charger des symboles (c'est-à-dire des fichiers pdb qui contiennent des informations de débogage).
Utilisation de Process Explorer
Si vous souhaitez un outil externe, vous pouvez utiliser Process Explorer (logiciel gratuit, publié par Microsoft)
Cliquez sur un processus et il affichera une liste avec tous les assemblages utilisés. L'outil est plutôt bon car il affiche d'autres informations telles que les descripteurs de fichiers, etc.
Programmation
Cochez cette question SO qui explique comment le faire.
la source
Voici ce que j'ai fini avec. C'est une liste de toutes les propriétés et méthodes, et j'ai répertorié tous les paramètres pour chaque méthode. Je n'ai pas réussi à obtenir toutes les valeurs.
la source
foreach(Type type in asm.GetTypes()){ if ((type.ToString().IndexOf("ACLASSIMLOOKINGFOR")>=0) || (type.ToString().IndexOf("BCLASSIMLOOKINGFOR")>=0)){...