¿Recomendaría una herramienta gratuita para explorar ensamblados .NET compilados? Necesito poder:
Opcionalmente, estaré encantado si es compatible con:
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.
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 .csproj
archivos (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.
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.
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:
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.
También tiene otras características útiles:
He usado dotPeek antes, pero lo reemplacé por dnSpy hace 2 años y estoy feliz.
Ivailo Slavov