.net - online - Alternativas de código abierto para Reflector?
net reflector 9 full (10)
¿Solo para preguntar si alguien sabe de una alternativa de código abierto al Reflector de RedGate? Estoy interesado en ver cómo funciona realmente una herramienta similar a Reflector.
Tenga en cuenta que si conoce una alternativa gratuita pero no de código abierto a Reflector, puede responder la siguiente pregunta relacionada:
Resumen - Actualizado el 11 de mayo de 2011
Un resumen rápido de los diversos proyectos y herramientas de código abierto que se han sugerido:
- Infraestructura de compilador común (CCI)
- Mono cecil
- ILSpy
- dnSpy (tenedor de ILSpy, el proyecto parece más activo que el original)
- Dotnet IL Editor (DILE)
- IL.View
- Monoflector ( ya no está activo a partir de abril de 2011)
Los siguientes recursos también pueden ser de interés:
- TypeView.cs
- Notas de Jason Haley sobre el desmontaje de .NET.
- La publicación reciente del blog de Adrian Bank que resume varias alternativas de Reflector, incluidas varias opciones que no se mencionan a continuación.
- El post detallado del blog de Mark Lichtenberg comparando varias de las alternativas de código abierto (DILE, ILSpy y Mono Cecil usando MonoDevelop) con Reflector.
Actualmente estoy trabajando en un desensamblador / descompilador de código abierto llamado Assembly Analyzer. Genera código fuente para los métodos, muestra metadatos y recursos de ensamblaje y le permite recorrer las dependencias.
El proyecto está alojado en CodePlex => http://asmanalyzer.codeplex.com/
Bueno, Reflector en sí mismo es un ensamblado .NET, por lo que puede abrir Reflector.exe en Reflector para ver cómo está construido.
La razón principal por la que usé Reflector (y, creo, la razón principal por la que la mayoría de la gente lo usó) fue por su descompilador: puede traducir el IL de un método de nuevo al código fuente.
En ese recuento, Monoflector sería el proyecto a seguir. Utiliza a Cecil, que hace la reflexión, y Cecil.Decompiler, que hace la descompilación. Pero Monoflector coloca una interfaz de usuario en la parte superior de ambas bibliotecas, lo que debería darle una buena idea de cómo usar la API.
Monoflector es también una alternativa decente para Reflector. Te permite navegar por los tipos y descompilar los métodos, que es el 99% de lo que la gente usa Reflector. Es muy áspero alrededor de los bordes, pero estoy pensando que cambiará rápidamente.
Otro reemplazo sería dotPeek . JetBrains lo anunció como una herramienta gratuita. Probablemente tendrá más funciones cuando se use con su Resharper pero incluso cuando se usa solo funciona muy bien.
La experiencia del usuario se parece más a MSVS que a un desensamblador independiente. Me gusta leer código más que en Reflector. Ctrl + T de navegación también me queda mejor. Simplemente sincronizar el árbol con el panel de código podría ser mejor.
Con todo, todavía está en desarrollo pero ya está muy bien aprovechable.
Telerik lanzó hoy una versión beta de su propia herramienta de descompilación, JustDecompile . Fuente cerrada, pero gratuita y de aspecto prometedor.
ILSpy funciona muy bien!
Por lo que puedo decir, hace todo lo que Reflector hizo y se ve igual.
La herramienta Reflector utiliza la reflexión. - Al parecer esto no es correcto.
Pidió dos cosas: el código que muestra lo que hace el reflector y también una alternativa al reflector.
Aquí hay un ejemplo, mucho más simplificado de lo que hace Reflector, pero muestra la técnica de reflexión: TypeView.cs
No tengo una sugerencia para un reemplazo de Reflector de código abierto.
Actualizado el 13 de diciembre de 2011
Las siguientes herramientas de código abierto están disponibles:
- ILSpy del equipo SharpDevelop. Gracias al tweet de Scott Hanselman destacando la herramienta.
- Dotnet IL Editor (un desensamblador)
- IL.View : una alternativa a .NET Reflector escrita en Silverlight 4 como una aplicación de Silverlight fuera del navegador. Vea esta blog para más detalles.
En realidad, estoy bastante seguro de que Reflector se considera un desensamblador con algunas funciones de descompilador. Desensamblador porque lee los bytes del archivo de un ensamblaje y lo convierte a un lenguaje ensamblador (ILasm en este caso). La funcionalidad de Decompiler que proporciona al analizar el IL en patrones bien conocidos (como expresiones y declaraciones) que luego se traducen a lenguajes de mayor nivel como C #, VB.Net, etc. desea ... sin embargo, la magia de cómo analiza la IL en los árboles de expresión es un secreto muy bien guardado.
Recomendaría ver cualquiera de las tres cosas mencionadas anteriormente si quiere comprender cómo funcionan los desensambladores IL: Dile, CCI y Mono son buenas fuentes para esto.
También recomiendo encarecidamente obtener la especificación Ecma 335 y el libro de Serge Lidin también.