26

I am looking for a disassembler or better, a decompiler for .net. The situation is that the source code for an assembly written by one of my predecessors is lost and I'd like to take a look to see what it's doing.

I know that ildasm comes with the Visual Studio installation so I can get at the MSIL, but I was hoping there was a program clever enough to work back to the C# code (or best approximation).

Are there any tools for this out there?

(If not, I suppose it'll be a good excuse for me to sit down and start to learn MSIL)

Dana
  • 32,083
  • 17
  • 62
  • 73

6 Answers6

55

Now that Red Gate have started charging for the .NET Reflector tool you might want to check out these free alternatives instead...

Telerik JustDecompile

JetBrains dotPeek

(Open Source) ILSpy

Scott Chamberlain
  • 124,994
  • 33
  • 282
  • 431
Phil Wright
  • 22,580
  • 14
  • 83
  • 137
  • 1
    Just tried the ILSpy beta, and it's as good as Reflector for me. Minus the licensing hassle. – David Schmitt Jul 15 '11 at 13:23
  • dotPeek is an eval copy -- looks almost as good as Reflector but seems to run a little more slowly. ILSpy does the trick for me, though its interface isn't quite as slick -- member sorting and treatment of generics both leave a little to be desired, but good enough, especially at the price! – yoyo Jul 19 '11 at 18:00
  • 2
    As of 2012 dotPeek is now fully free and no longer a eval trial. – Scott Chamberlain Jun 19 '13 at 04:48
40

Have you looked at Reflector?

http://www.red-gate.com/products/reflector/

overstood
  • 985
  • 6
  • 7
7

Reflector is the way to go, but if you can't use that for some reason, Microsoft ships a disassembler called ILDasm with the framework.

A good source for MSIL knowledge is the book Expert .NET 2.0 IL Assembler by Serge Lidin.

Brian Rasmussen
  • 114,645
  • 34
  • 221
  • 317
2

.NET Reflector is the usual tool for this.

mqp
  • 70,359
  • 14
  • 95
  • 123
1

Ok,

I tried on a project. ILSpy

Telerik JustDecompile

.NET Reflector Demo

All can create Visual C# project. The generated code did not compile for JustDecompile and Reflector. In one case, ILSpy made a code that compiled (just references had to be set) The mistakes IlSpy did not look as compiicated as one found in others. All generated code can be fixed if one know C# well enough.

An interesting direction can be used to decompile code using both JustDecompile and Ilspy and merge the codes that are correct because these decompilers (and third as well) seem to make different mistakes.

Aftershock
  • 5,205
  • 4
  • 51
  • 64
1

Reflector.

BFree
  • 102,548
  • 21
  • 159
  • 201