.NET Reflector
Encyclopedia
.NET Reflector is a proprietary software utility for Microsoft .NET combining class browsing
, static analysis and decompilation
, originally written by Lutz Roeder. MSDN Magazine named it as one of the Ten Must-Have utilities for developers, and Scott Hanselman listed it as part of his "Big Ten Life and Work-Changing Utilities".
.NET Reflector was the first .NET assembly browser. It can be used to inspect, navigate, search, analyze, and browse the contents of a .NET component such as an assembly
and translates the binary information to a human-readable form. By default Reflector allows decompilation of .NET assemblies into C#, Visual Basic .NET
, Common Intermediate Language
and F# (alpha version). Reflector also includes a "Call Tree" that can be used to drill down into IL methods to see what other methods they call. It will show the metadata
, resources and XML
documentation. .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 .NET application interact with each other. There are a large number of addins for Reflector.
.NET Reflector can be used to track down performance problems and bugs
, browse classes, and maintain or help become familiar with code bases. It can also be used to find assembly dependencies, and even windows DLL
dependencies, by using the Analyzer option. There is a call tree and inheritance-browser. 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. It is even possible to cross-navigate related documentation (xmldoc), searching for specific types, members and references. It can be used to effectively convert source code between C# and VB.
.NET Reflector has been designed to host add-ins to extend its functionality, many of which are open source
. Some of these add-ins provide other languages that can be disassembled too, such as PowerShell, Delphi and MC++
. Others analyze assemblies in different ways, providing quality metrics, sequence diagrams, class diagrams, dependency structure matrices or dependency graphs. It is possible to use add-ins to search text, save disassembled code to disk, export an assembly to XMI/UML, compare different versions, or to search code. Other add-ins allow debugging processes. Some add-ins are designed to facilitate testing by creating stubs and wrappers.
On 20 August 2008, Red Gate Software
announced they were taking responsibility for future development of the software.
On 10 January 2011 Red Gate announced that .NET Reflector 7 would incorporate Jason Haley's PowerCommands add-in.
On 1 February 2011 Red Gate announced that .NET Reflector would become a paid-for product as of version 7. The first paid-for version was released on 14 March 2011. This lead to the creation of several free alternatives: dotPeek, JustDecompile, CodeReflect, and the open source ILSpy. Subsequently, on 26 April 2011, due to community feedback Red Gate announced that they would continue to make .NET Reflector 6 available for free to existing users.
Class browser
A class browser is a feature of an integrated development environment that allows the programmer to browse, navigate, or visualize the structure of object-oriented programming code.- History :...
, static analysis and decompilation
Decompiler
A decompiler is the name given to a computer program that performs, as far as possible, the reverse operation to that of a compiler. That is, it translates a file containing information at a relatively low level of abstraction into a form having a higher level of abstraction...
, originally written by Lutz Roeder. MSDN Magazine named it as one of the Ten Must-Have utilities for developers, and Scott Hanselman listed it as part of his "Big Ten Life and Work-Changing Utilities".
.NET Reflector was the first .NET assembly browser. It can be used to inspect, navigate, search, analyze, and browse the contents of a .NET component such as an assembly
.NET assembly
In the .NET framework, an assembly is a compiled code library used for deployment, versioning, and security. There are two types: process assemblies and library assemblies . A process assembly represents a process that will use classes defined in library assemblies...
and translates the binary information to a human-readable form. By default Reflector allows decompilation of .NET assemblies into C#, Visual Basic .NET
Visual Basic .NET
Visual Basic .NET , is an object-oriented computer programming language that can be viewed as an evolution of the classic Visual Basic , which is implemented on the .NET Framework...
, Common Intermediate Language
Common Intermediate Language
Common Intermediate Language is the lowest-level human-readable programming language defined by the Common Language Infrastructure specification and is used by the .NET Framework and Mono...
and F# (alpha version). Reflector also includes a "Call Tree" that can be used to drill down into IL methods to see what other methods they call. It will show the metadata
Metadata
The term metadata is an ambiguous term which is used for two fundamentally different concepts . Although the expression "data about data" is often used, it does not apply to both in the same way. Structural metadata, the design and specification of data structures, cannot be about data, because at...
, resources and XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....
documentation. .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 .NET application interact with each other. There are a large number of addins for Reflector.
.NET Reflector can be used to track down performance problems and bugs
Software bug
A software bug is the common term used to describe an error, flaw, mistake, failure, or fault in a computer program or system that produces an incorrect or unexpected result, or causes it to behave in unintended ways. Most bugs arise from mistakes and errors made by people in either a program's...
, browse classes, and maintain or help become familiar with code bases. It can also be used to find assembly dependencies, and even windows DLL
Dynamic-link library
Dynamic-link library , or DLL, is Microsoft's implementation of the shared library concept in the Microsoft Windows and OS/2 operating systems...
dependencies, by using the Analyzer option. There is a call tree and inheritance-browser. 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
IntelliSense
IntelliSense is Microsoft's implementation of autocompletion, best known for its use in the Microsoft Visual Studio integrated development environment...
inside Visual Studio. It is even possible to cross-navigate related documentation (xmldoc), searching for specific types, members and references. It can be used to effectively convert source code between C# and VB.
.NET Reflector has been designed to host add-ins to extend its functionality, many of which are open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
. Some of these add-ins provide other languages that can be disassembled too, such as PowerShell, Delphi and MC++
Managed Extensions for C++
Managed Extensions for C++ or just Managed C++ is a now deprecated Microsoft set of deviations from C++, including grammatical and syntactic extensions, keywords and attributes, to bring the C++ syntax and language to the .NET Framework...
. Others analyze assemblies in different ways, providing quality metrics, sequence diagrams, class diagrams, dependency structure matrices or dependency graphs. It is possible to use add-ins to search text, save disassembled code to disk, export an assembly to XMI/UML, compare different versions, or to search code. Other add-ins allow debugging processes. Some add-ins are designed to facilitate testing by creating stubs and wrappers.
On 20 August 2008, Red Gate Software
Red Gate Software
Red Gate Software is a software company based in Cambridge, UK. It primarily provides tools for database developers and administrators. In addition, through its Simple Talk Publishing subsidiary, it maintains community websites such as SQL Server Central and Simple Talk...
announced they were taking responsibility for future development of the software.
Subsequent History
In February 2010 Red Gate released .NET Reflector 6 along with a paid-for Pro edition that enabled users to step into decompiled code in the Visual Studio debugger as if it were their own source code.On 10 January 2011 Red Gate announced that .NET Reflector 7 would incorporate Jason Haley's PowerCommands add-in.
On 1 February 2011 Red Gate announced that .NET Reflector would become a paid-for product as of version 7. The first paid-for version was released on 14 March 2011. This lead to the creation of several free alternatives: dotPeek, JustDecompile, CodeReflect, and the open source ILSpy. Subsequently, on 26 April 2011, due to community feedback Red Gate announced that they would continue to make .NET Reflector 6 available for free to existing users.