2009-12-29 4 views
5

Estoy tratando de hacer una implementación rápida y sucia de un proyecto. Pensé que sería fácil ejecutar mi proceso, usar alguna herramienta para obtener una lista de todos los archivos cargados (DLL) y usar esa lista para crear una lista de archivos de copia para mi implementación de prueba.¿Cómo puedo obtener una lista de archivos cargados por mi proceso?

Pensé en usar Filemon pero hay mucho ruido allí. Es un proyecto de .net.

Gracias.

+1

Dupe de: http://stackoverflow.com/questions/383686/how-do-you-loop-through-currenlty-loaded-assemblies – GrayWizardx

+0

@GrayWizardx Entonces, ¿por qué no vota para cerrarlo entonces? Así es como se supone que debe funcionar. –

+0

Estoy de acuerdo con que la pregunta está llegando al mismo punto que la mía, aunque me gustaría averiguarlo sin codificar esa lógica en mi proyecto. No he visto una buena manera de hacerlo – TheSean

Respuesta

0

Debería poder utilizar .NET's Reflection para analizar su aplicación AppDomain (s) y volcar una lista de ensamblados y ubicaciones cargados.

var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); 
foreach (var assembly in loadedAssemblies) 
{ 
    Console.WriteLine(assembly.GetName().Name); 
    Console.WriteLine(assembly.Location); 
} 
+0

Creo que esta es la mejor respuesta, aunque no es lo que esperaba. No quería agregar código a mi proyecto para lograr esto. Pero parece que funcionará. – TheSean

+0

Tenga en cuenta que 'GetAssemblies()' no funcionará de forma coherente, ya que no es recursiva y se perderá cualquier referencia de conjunto anidado. Agregué una versión recursiva de 'GetAssemblies()' en http://stackoverflow.com/questions/383686/how-do-you-loop-through-currently-loaded-assemblies/26300241#26300241. – Contango

0

Salida AppDomain.GetAssemblies

For Each Ass As Reflection.Assembly In CurrentDomain.GetAssemblies() 
    Console.WriteLine(Ass.ToString()) 
Next 
0

Esto se responde en otro question ya.

La esencia de esto es usar el dominio de aplicación actual para obtener una lista de ensamblajes y recorrer su ubicación de cargador.

1

Process Explorer?

+0

Creo que sí ... o algunas de las otras cosas sysinternals .. http://stackoverflow.com/questions/1980429/why-windows-7-isnt-written-in-c – monojohnny

0

Si he entendido su pregunta, para hacer una implementación rápida puede establecer todas las referencias de su proyecto, pero las del Marco tienen el valor "Copiar local" en verdadero.

De esta manera, cuando construya su aplicación, tendrá todas las DLL necesarias en su directorio de salida (bueno, casi todas, las referencias necesarias para sus referencias no se copiarán automáticamente, por lo que es mejor agregarlas como referencia local también).

Espero que esto ayude. Si no, solo di por qué, intentaré continuar con esto.

+0

gracias, ojalá fuera eso sencillo. la forma en que está diseñada nuestra aplicación es que tenemos muchas referencias cargadas en tiempo de ejecución. esto es lo que hace que sea tan doloroso de resolver. Básicamente, tenemos una carpeta bin con cientos de archivos DLL en ella. mi proyecto solo necesita un subconjunto. Yo * podría * simplemente copiar todos los MB que no sean necesarios. – TheSean

Cuestiones relacionadas