standard portable online net library full framework decompile .net assemblies legacy

.net - online - dotpeek portable



Listar todos los ensamblados de.NET disponibles (2)

La única información que he encontrado antes sobre el mismo problema es esta , pero nunca pude utilizar esa información.

Por lo que parece, parece un poco engorroso recorrer un directorio para encontrar todos los archivos .DLL, pero tal vez eso es lo que debe hacer.

¿Cuál es la mejor manera de enumerar todos los ensamblados .NET 2.0 disponibles?

Un ejemplo de la lista necesaria es el que MS Visual Studio muestra cuando hace ''Agregar referencia ...'' en la pestaña .NET.

He leído Visual Studio usa su propia configuración de directorio y el GAC otra y .NET instalación otra. ¿Alguna idea de cómo puedo saber dónde están estos directorios en una computadora de forma portátil (otra computadora podría tener Windows instalados en D: unidad, por ejemplo)?

A partir de la información enumerada, debe ser posible Assembly.Loadxxxx ().

Nota: debe hacerse programáticamente y no usar gacutil por ejemplo (a menos que proporcione una API C #). El objetivo de todo esto es crear un editor de scripts dinámico personalizado para que comprenda la necesidad de acceder a esta información.


En primer lugar, existe una diferencia importante entre los ensamblajes de referencia y los ensamblajes en el GAC. Para compilar el código, necesita un ensamblaje de referencia. Para ejecutar código, necesita una copia del ensamblado en la misma carpeta que su .exe o el ensamblado en el GAC.

Normalmente, cuando instala una aplicación .NET, su instalador copiará los ensamblajes que usa en el GAC. Esos ensamblajes no se pueden usar como ensamblados de referencia, no se puede encontrar en qué carpeta se almacena, por lo que no se puede decir al compilador el valor correcto de su argumento de línea de comando / referencia. Bueno, puedes averiguarlo, pero Microsoft intentó hacerlo lo más difícil posible con un complemento de shell.

Algo diferente ocurre cuando instala una aplicación .NET que le permite usar sus ensamblajes en su propio programa. Al igual que el .NET framework. Hará dos copias de cada ensamblaje. Uno va al GAC, el otro va a un lugar "conocido". Para .NET Framework, estas ubicaciones conocidas son c: / windows / microsoft.net / y c: / program files / reference assemblies. La última carpeta comenzó a ser utilizada por .NET 3.0 y posteriores.

El cuadro de diálogo Agregar referencia de Visual Studio utiliza una clave de registro que enumera estas ubicaciones conocidas. Hay un par, pero el más importante es HKLM/Software/Microsoft/.NETFramework/AssemblyFolders .

Para resumir: podría usar esa clave de registro para producir la misma lista que produce el cuadro de diálogo Agregar referencia. Pero no es 100% confiable, es posible que falte a los ensambles de referencia que algún producto copiado en otro lugar. Tendría que usar la pestaña Examinar en VS para agregar referencias a esos. Y busca todo el disco para encontrarlos tú mismo.