Herramienta gratuita para explorar ensamblajes .NET compilados, ¿alternativa a .NET Reflector?

¿Recomendaría una herramienta gratuita para explorar ensamblados .NET compilados? Necesito poder:

  • Explore el código fuente de los ensamblajes y visualice la IL en el lenguaje CLR de su elección (C#, VB.NET, C++ administrado, etc.)
  • Admite la navegación entre las clases (a través de Ctrl + clic en el nombre de la clase, por ejemplo, u otra forma conveniente).
  • Permitir examinar los recursos incrustados en el ensamblaje, si los hay (texto, imágenes, etc.)
  • Capaz de manejar ensamblados desde .NET versión 2.0.

Opcionalmente, estaré encantado si es compatible con:

  • Exportación de clases a archivos fuente.
  • Integración con Visual Studio 2010 (este no tiene por qué ser gratuito) que permite depurar el código fuente.
  • La integración con el IDE de Xamarin Studio (anteriormente MonoDevelop) sería una ventaja, aunque me estoy volviendo demasiado optimista aquí.

Solía ​​trabajar con .NET Reflector hace unos años y admitía la mayoría de las características anteriores (en realidad, todas excepto la integración de Xamarin). Traté de usarlo nuevamente hace unas semanas, pero ahora se ha convertido en un producto comercial y mi antigua versión gratuita ya no funciona.

Respuestas (4)

ILSpy es uno de los descompiladores FOSS .NET más populares. Es bastante intuitivo de usar, aunque todavía no he probado Reflector, así que no puedo compararlos.

Desafortunadamente, no satisface completamente sus requisitos, aunque se acerca. No hay soporte para descompilar a C++/CLI, aunque funciona bien para IL, C# y VB.NET.

Puede hacer clic en los nombres de clases y métodos para navegar a sus definiciones, o analizarlos a través del menú contextual para saber dónde se accede a ellos. Puede representar tanto imágenes como texto de recursos incrustados y le permite guardarlos. No he probado otros tipos de archivos, pero deberían funcionar de la misma manera.

Puede exportar clases a archivos de origen e incluso puede exportar ensamblajes completos a .csprojarchivos (construcción de MS). Para proyectos más simples, estos se pueden compilar directamente. Muchos proyectos más complejos tienden a fallar al compilar sin modificaciones; en particular, su sitio menciona que no puede descompilarse y luego volver a compilarse. Si necesita descompilar un ensamblaje completo, es probable que le quede mucho trabajo por hacer para lograr un estado compilable.

Desafortunadamente, la descompilación no es perfecta. Algunas construcciones de lenguaje más complejas, como C# dynamic, aún no son compatibles y pueden dar como resultado una salida algo distorsionada. Todavía puede obtener el algoritmo general a través del desorden, pero ciertamente no funcionaría si solo quisiera copiar algo de código.

Integración IDE. Hubo un intento temprano para Visual Studio, aunque parece haber sido abandonado. Tampoco parece haber ninguna integración para Xamarin (¿cuándo sucedió eso?). Sin embargo, los desarrolladores de ILSpy también crearon SharpDevelop, y noticias recientes indican que están planeando la integración de SharpDevelop .


Si quieres otras opciones, también están dotPeek y JustDecompile . Afirman tener extensiones de Visual Studio y podrían estar más pulidos con algunas compañías conocidas detrás de ellos. No he tenido la necesidad de usar ninguno de ellos (ILSpy ha funcionado para todo lo que necesitaba), pero pueden adaptarse mejor a sus requisitos.

Gran explicación, gracias! El C++/CLI es una opción sin la que puedo vivir, y exportar a todo el proyecto parece una característica genial. Xamarin Studio es algo así como un jugador reciente, ya que MonoDevelop (su antiguo yo) tenía un destino poco claro hace unos años. El soporte de SharpDevelop IDE también puede ayudarme a conocer ese IDE. Creo que la salida distorsionada siempre es un problema con la descompilación, y dudo que alguien use código descompilado uno a uno en un proyecto real. El ILSpy entonces parece una herramienta suficiente para mis necesidades.

Hay otra herramienta desarrollada por telerik: JustDecompile . Funciona muy bien y tiene todas las funciones de .NET Reflector y algunas más. (Incluyendo una extensión de Visual Studio). También es gratis, lo cual es bueno. Lo he usado desde que salió y es bastante agradable.

Una de mis funciones favoritas se encuentra en el menú de herramientas "Crear proyecto", toma el ensamblaje y crea un archivo csproj a partir de él.

Simplemente descompile con el proveedor de datos Mysql

Personalmente, soy un gran admirador de dotPeek de Jetbrains, ya que se relaciona muy bien con Resharper y tiene algunas funciones adicionales para extraer .pdb:

ingrese la descripción de la imagen aquí

¡Bienvenido a Recomendaciones de software y gracias por participar! Si bien es un buen comienzo, desafortunadamente su publicación no contiene suficiente información para ser considerada una respuesta de alta calidad. Lea nuestra discusión sobre lo que hace que una respuesta sea de alta calidad para ver si puede incorporar algunas de estas mejoras en su respuesta. Especialmente, debe señalar cómo su producto recomendado coincide con los requisitos de los OP. Algunos consejos sobre estabilidad, confiabilidad y rendimiento también podrían ser buenos;) ¡Gracias!

Las respuestas aquí son buenas para el momento en que se hizo la pregunta. Mientras tanto, en mi humilde opinión, dnSpy los ha superado.

  • ✓ Visualizar como C# o VB.NET - o IL
  • ✓ Navegación entre clases - por Ctrl+Click
  • ✓ Examen de recursos - vista previa en vivo
  • ? Manejo de .NET desde 2.0: no pude encontrar un programa tan antiguo para probar :-)
  • ✓ Exportación de clases a archivos fuente - solo todo el proyecto. No pude encontrarlo para clases individuales.

También tiene otras características útiles:

  • editar el código directamente
  • resaltado de sintaxis
  • depurar

He usado dotPeek antes, pero lo reemplacé por dnSpy hace 2 años y estoy feliz.