En .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 en quelque sorte accéder à chaque AppDomain? Ou existe-t-il déjà un outil qui fait cela?
Utilisation de Visual Studio
Cela donne des détails sur chaque assemblage, domaine d’application et quelques options pour charger des symboles (par exemple, des fichiers pdb contenant des informations de débogage).
Utilisation de Process Explorer
Si vous voulez un outil externe, vous pouvez utiliser le Process Explorer (logiciel gratuit, publié par Microsoft)
Cliquez sur un processus pour afficher une liste de tous les assemblages utilisés. L'outil est très bon car il montre d'autres informations telles que les descripteurs de fichiers, etc.
par programme
Vérifiez ce SO question qui explique comment le faire.
Voici ce que j'ai fini avec. C'est une liste de toutes les propriétés et méthodes, et j'ai énuméré tous les paramètres pour chaque méthode. Je n'ai pas réussi à obtenir toutes les valeurs.
foreach(System.Reflection.AssemblyName an in System.Reflection.Assembly.GetExecutingAssembly().GetReferencedAssemblies()){
System.Reflection.Assembly asm = System.Reflection.Assembly.Load(an.ToString());
foreach(Type type in asm.GetTypes()){
//PROPERTIES
foreach (System.Reflection.PropertyInfo property in type.GetProperties()){
if (property.CanRead){
Response.Write("<br>" + an.ToString() + "." + type.ToString() + "." + property.Name);
}
}
//METHODS
var methods = type.GetMethods();
foreach (System.Reflection.MethodInfo method in methods){
Response.Write("<br><b>" + an.ToString() + "." + type.ToString() + "." + method.Name + "</b>");
foreach (System.Reflection.ParameterInfo param in method.GetParameters())
{
Response.Write("<br><i>Param=" + param.Name.ToString());
Response.Write("<br> Type=" + param.ParameterType.ToString());
Response.Write("<br> Position=" + param.Position.ToString());
Response.Write("<br> Optional=" + param.IsOptional.ToString() + "</i>");
}
}
}
}