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 existe una herramienta que hace esto?
c#
.net
assemblies
Abtin Forouzandeh
fuente
fuente
GetAssemblies()
no funcionará, ya que no es recursivo y perderá las referencias de ensamblado anidado. Agregué una versión recursiva deGetAssemblies()
en stackoverflow.com/questions/383686/… .AppDomain.CurrentDomain.GetAssemblies()
está perfectamente bien. No necesita recorrer las referencias de forma recursiva, porque no está enumerando referencias en primer lugar.Respuestas:
Usando Visual Studio
Esto brinda detalles sobre cada ensamblado, dominio de aplicación y tiene algunas opciones para cargar símbolos (es decir, archivos pdb que contienen información de depuración).
Usando Process Explorer
Si desea una herramienta externa, puede usar Process Explorer (software gratuito, publicado por Microsoft)
Haga clic en un proceso y mostrará una lista con todos los ensamblajes utilizados. La herramienta es bastante buena ya que muestra otra información, como identificadores de archivos, etc.
Programáticamente
Consulte esta pregunta SO que explica cómo hacerlo.
fuente
Esto es lo que terminé con. Es una lista de todas las propiedades y métodos, y enumeré todos los parámetros para cada método. No logré obtener todos los valores.
fuente
foreach(Type type in asm.GetTypes()){ if ((type.ToString().IndexOf("ACLASSIMLOOKINGFOR")>=0) || (type.ToString().IndexOf("BCLASSIMLOOKINGFOR")>=0)){...