¿Cómo enumero todos los ensamblados cargados?


En.Net, me gustaría enumerar todos los ensamblados cargados en todos los AppDomains. Hacerlo para el AppDomain de mi programa es bastante fácil AppDomain.CurrentDomain.GetAssemblies(). ¿Necesito acceder de alguna manera a cada AppDomain? ¿O ya hay una herramienta que hace esto?

Author: starblue, 2009-01-19

2 answers

Usando Visual Studio

  1. Adjuntar un depurador al proceso (por ejemplo, comience con la depuración o Debug > Adjuntar al proceso)
  2. Durante la depuración, mostrar la ventana Módulos (Debug > Windows > Modules)

Esto da detalles sobre cada ensamblado, dominio de la aplicación y tiene algunas opciones para cargar símbolos (es decir, archivos pdb que contienen información de depuración).

introduzca la descripción de la imagen aquí

Usando Process Explorer

Si quieres una herramienta externa puedes utilice el Explorador de procesos (freeware, publicado por Microsoft)

Haga clic en un proceso y mostrará una lista con todos los ensamblados utilizados. La herramienta es bastante buena, ya que muestra otra información, como manejadores de archivos, etc.

Programáticamente

Marque esta pregunta TAN que explica cómo hacerlo.

 80
Author: Bogdan Gavril MSFT,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:10

Esto es con lo que terminé. Es una lista de todas las propiedades y métodos, y enumeré todos los parámetros para cada método. No tuve éxito en conseguir todos los valores.

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>");
                    }
                }
            }
        }
 17
Author: s15199d,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-29 00:03:27