.NET Reflector

.NET Reflector is a class browser, decompiler and static analyzer for software created with .NET Framework, originally written by Lutz Roeder.

[2] It can be used to inspect, navigate, search, analyze, and browse the contents of a CLI component such as an assembly and translates the binary information to a human-readable form.

By default Reflector allows decompilation of CLI assemblies into C#, Visual Basic .NET, C++/CLI[3] and Common Intermediate Language and F# (alpha version).

.NET Reflector can be used by .NET developers to understand the inner workings of code libraries, to show the differences between two versions of the same assembly, and how the various parts of a CLI application interact with each other.

.NET Reflector can be used to track down performance problems and bugs, browse classes, and maintain or help become familiar with code bases.

It will pick up the same documentation or comments that are stored in xml files alongside their associated assemblies that are used to drive IntelliSense inside Visual Studio.