Just to ask if anyone knows of an open source alternative to RedGate's Reflector? I'm interested in checking out how a tool similar to Reflector actually works.
Note, if you know of a free but not open source alternative to Reflector, you can answer the following related question:
Summary - Updated 11th May 2011
A quick round-up of the various open source projects and tools that have been suggested:
- Common Compiler Infrastructure (CCI)
- Mono Cecil
- ILSpy
- dnSpy (fork of ILSpy, project appears more active than original)
- Dotnet IL Editor (DILE)
- IL.View
- Monoflector (no longer active as of April 2011)
The following resources may also be of interest:
- TypeView.cs
- Jason Haley's notes on disassembling .NET
- Adrian Bank's recent blog post summarising a number of Reflector alternatives, including several options not mentioned below.
- Mark Lichtenberg's detailed blog post comparing several of the open source alternatives (DILE, ILSpy and Mono Cecil using MonoDevelop) to Reflector.
2 options I know of.
These wont give you C# though.
Updated 13th December 2011
The following open source tools are available:
Actually, I'm pretty sure Reflector is considered a disassembler with some decompiler functionality. Disassembler because it reads the bytes out of an assembly's file and converts it to an assembly language (ILasm in this case). The Decompiler functionality it provides by parsing the IL into well known patterns (like expressions and statements) which then get translated into higher level languages like C#, VB.Net, etc. The addin api for Reflector allows you to write your own language translator if you wish ... however the magic of how it parses the IL into the expression trees is a closely guarded secret.
I would recommend looking at any of the three things mentioned above if you want to understand how IL disassemblers work: Dile, CCI and Mono are all good sources for this stuff.
I also highly recommend getting the Ecma 335 spec and Serge Lidin's book too.
Telerik today released a Beta of their own decompilation tool, JustDecompile. Closed source, but free and looks promising.
I am currently working on an open-source disassembler / decompiler called Assembly Analyzer. It generates source code for methods, displays assembly metadata and resources, and allows you to walk through dependencies.
The project is hosted on CodePlex => http://asmanalyzer.codeplex.com/
ILSpy works great!
As far as I can tell it does everything that Reflector did and looks the same too.