2011-10-04 76 views
5

Estoy trabajando en la recuperación de la fuente de una aplicación para un cliente mío. Logré recuperar el código de la aplicación usando .NET Reflector. Pero ahora quiero adquirir el código y volver a crear los formularios individuales, así que tendré los archivos codebehind, designer y resx para cada formulario. El problema es que todas las imágenes están ubicadas en archivos ".resources". ¿Cómo extraigo las imágenes de estos archivos ".resources" generados por Reflector?¿Cómo puedo extraer imágenes del archivo .resources creado por un descompilado de un ensamblado .NET?

yo preferiría usar alguna herramienta, en lugar de tener que extraer las imágenes mediante programación, pero voy a recurrir al código si no puedo encontrar una aplicación adecuada. Así que aquí estoy esperando que alguien haya hecho esto antes o conozca un visor (¡preferiblemente gratis!) Para estos archivos de recursos que me permitirían extraer las imágenes. De lo contrario, el código también es bueno; como podría escribir mi propia pequeña aplicación para extraer las imágenes.

+0

Reflector puede hacer esto también, abra el nodo Recursos de un ensamblaje. Haga clic con el botón derecho en el recurso y seleccione Guardar como. –

+0

He intentado extraer las imágenes con Reflector, pero hasta donde puedo ver, Reflector solo guarda el archivo .resources, no le permite guardar los mapas de bits contenidos en estos archivos en formato BMP ... a menos que me falta algo ? Da una lista de mapas de bits cuando seleccionas un archivo .resources, pero cuando hago clic derecho en el mapa de bits, hay una opción "guardar como" desafortunadamente atenuada. ¿Tal vez esta es una característica de una versión paga que falta en la versión de prueba que estoy usando? – BruceHill

Respuesta

9
+2

Gracias, sepulka. Probé el programa que vinculó aquí y funciona bien. :) También encontré este programa que utilicé también, http://jasonhaley.com/blog/post/2005/10/09/Resource-File-Extractor.aspx. Gracias por tu ayuda en esto. – BruceHill

+1

Desafortunadamente, la solución del proyecto de código no reconoce mi proyecto construido como un ensamblaje. La respuesta de Clive Tong funcionó para mí. –

+0

+1 - El proyecto codeproject.com es antiguo (.NET 2.0 VS2008 PRK) - así que asegúrese de actualizar y volver a compilar a la versión de .NET que está utilizando ahora.Funciona perfecto para mí en VS2017 .NET 4.5. – MDV2000

7

ILSpy debe hacer este trabajo - ver características en http://wiki.sharpdevelop.net/ILSpy.ashx y la siguiente captura de pantalla.

screenshot

+1

Esto solo le permite guardar los recursos como un archivo .resources. Por lo que puedo decir, no le permite extraer las imágenes de mapa de bits del archivo de recursos. – BruceHill

+0

Extraño, la captura de pantalla tiene un botón Guardar para cada mapa de bits – poupou

+1

HI Poupou. Gracias por intentar ayudar. Sí, esa captura de pantalla es engañosa y hace que parezca que sí, pero en realidad no te permite guardar las imágenes que están en un archivo _.resources_. En mi caso, si selecciono la carpeta _resources_ como en la captura de pantalla, obtengo una lista de archivos de recursos, como la primera entrada en la imagen. Entonces, en mi caso, ninguna de las entradas enumeradas son archivos BMP reales, sino archivos de recursos que contienen los mapas de bits. Si veo los archivos de recursos en Reflector, puedo ver una lista de los mapas de bits que contiene cada archivo, pero no puedo guardar estos mapas de bits individuales en el disco. – BruceHill

25

Usted puede guardar el archivo .resources y luego utilizar la herramienta resgen (parte de las herramientas VS2010) para convertirlo de nuevo en un archivo .resx, mediante un comando línea como:

resgen foo.resources bar.resx 

El .resx continuación, se puede añadir a un proyecto de C#. Una vez que haya hecho esto, si intenta abrir las imágenes individuales, VS2010 ofrecerá extraerlas en un archivo de imagen independiente.

+0

+1! La versión gratuita [VS2013 community edition] (https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx) también puede abrir archivos .resx y extraer elementos de él. – rustyx

-1

JustDecompile puede hacer eso. Puede hacer clic con el botón derecho en un recurso y seleccionar Guardar en el menú contextual.

+0

Probado, no es así. Simplemente los muestra como una cadena 'System.Byte []'. –

Cuestiones relacionadas