.NET Reflector

Last updated
.NET Reflector
DotNetReflector.png
Original author(s) Lutz Roeder
Developer(s) Red Gate Software
Stable release
10.3.0.1936 / 15 October 2020;18 months ago (2020-10-15)
Operating system Windows 7 or later
Platform .NET Framework 4.7.2 or later
Type Class browser and decompiler
License Proprietary commercial software
Website www.reflector.net

.NET Reflector is a class browser, decompiler and static analyzer for software created with .NET Framework, originally written by Lutz Roeder. MSDN Magazine named it as one of the Ten Must-Have utilities for developers, [1] and Scott Hanselman listed it as part of his "Big Ten Life and Work-Changing Utilities". [2]

Contents

Overview

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). Reflector also includes a "Call Tree" that can be used to drill down into intermediate language 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 CLI application interact with each other. There are a large number of add-ins 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 Visual Basic.

.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.

History

.NET Reflector was originally developed by Lutz Roeder as freeware. Its first versions can be tracked back to January 2001. [4]

Archive.org hosts a collection of the early versions of Reflector.

On 20 August 2008, Red Gate Software announced they were taking responsibility for future development of the software. [5]

In February 2010 Red Gate released .NET Reflector 6 along with a commercial 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. [6]

On 1 February 2011 Red Gate announced that .NET Reflector would become a commercial product as of version 7, [7] which was released on 14 March 2011. This led to the creation of several free alternatives, including dotPeek, [8] CodeReflect and the open source program 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 (while new users will have to pay for Reflector). [9]

Related Research Articles

VBScript is an Active Scripting language developed by Microsoft that is modeled on Visual Basic. It allows Microsoft Windows system administrators to generate powerful tools for managing computers with error handling, subroutines, and other advanced programming constructs. It can give the user complete control over many aspects of their computing environment.

Visual Basic for Applications (VBA) is an implementation of Microsoft's Event-Driven Programming language Visual Basic 6.0 built into most desktop Microsoft Office applications. Although based on pre-.NET Visual Basic, which is no longer supported or updated by Microsoft, the VBA implementation in Office continues to be updated to support new Office features. Its reputation amongst developers is similar to other programming languages such as Python and JavaScript. VBA is used for professional and end-user development due to its perceived ease-of-use, Office's vast installed userbase, and extensive legacy in business.

Microsoft Developer Network (MSDN) was the division of Microsoft responsible for managing the firm's relationship with developers and testers, such as hardware developers interested in the operating system (OS), and software developers developing on the various OS platforms or using the API or scripting languages of Microsoft's applications. The relationship management is situated in assorted media: web sites, newsletters, developer conferences, trade media, blogs and DVD distribution.

Microsoft Visual C++ Integrated development environment product by Microsoft

Microsoft Visual C++ (MSVC) is a compiler for the C, C++ and C++/CX programming languages by Microsoft. MSVC is proprietary software; it was originally a standalone product but later became a part of Visual Studio and made available in both trialware and freeware forms. It features tools for developing and debugging C++ code, especially code written for the Windows API, DirectX and .NET.

JScript is Microsoft's legacy dialect of the ECMAScript standard that is used in Microsoft's Internet Explorer 11 and older, that has multiple security bugs "exploited by nation-state actors", leading Microsoft to add an option to disable it.

Visual J# is a discontinued implementation of the J# programming language that was a transitional language for programmers of Java and Visual J++ languages, so they could use their existing knowledge and applications with the .NET Framework. It was introduced in 2002 and discontinued in 2007, with support for the final release of the product continuing until October 2017.

Windows Presentation Foundation (WPF) is a free and open-source graphical subsystem originally developed by Microsoft for rendering user interfaces in Windows-based applications. WPF, previously known as "Avalon", was initially released as part of .NET Framework 3.0 in 2006. WPF uses DirectX and attempts to provide a consistent programming model for building applications. It separates the user interface from business logic, and resembles similar XML-oriented object models, such as those implemented in XUL and SVG.

Microsoft Management Console Component of Windows 2000

Microsoft Management Console (MMC) is a component of Windows 2000 and its successors that provides system administrators and advanced users an interface for configuring and monitoring the system.

NDoc

NDoc is a code documentation generator for the Common Language Infrastructure created by Jason Diamond, Jean-Claude Manoli and Kral Ferch. It is licensed under the GNU General Public License.

Visual Studio Tools for Office (VSTO) is a set of development tools available in the form of a Visual Studio add-in and a runtime that allows Microsoft Office 2003 and later versions of Office applications to host the .NET Framework Common Language Runtime (CLR) to expose their functionality via .NET.

Microsoft Visual Studio Code editor and IDE

Microsoft Visual Studio is an integrated development environment (IDE) from Microsoft. It is used to develop computer programs, as well as websites, web apps, web services and mobile apps. Visual Studio uses Microsoft software development platforms such as Windows API, Windows Forms, Windows Presentation Foundation, Windows Store and Microsoft Silverlight. It can produce both native code and managed code.

Visual Studio Tools for Applications (VSTA) is a set of tools that independent software vendors (ISVs) can use to build customization abilities into their applications for both automation and extensibility. Those customization abilities can be used by end-users to tailor the ISV's application within a managed extensibility environment just like Visual Basic for Applications.

NDepend is a static analysis tool for .NET managed code. The tool supports a large number of code metrics that allow one to visualize dependencies using directed graphs and dependency matrix. The tool also performs code base snapshot comparisons, and validation of architectural and quality rules. User-defined rules can be written using LINQ queries. This feature is named CQLinq. The tool also comes with a large number of predefined CQLinq code rules. Code rules can be checked automatically in Visual Studio or during continuous integration.

.NET Framework Software platform developed by Microsoft

The .NET Framework is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until being superseded by the cross-platform .NET project. It includes a large class library called Framework Class Library (FCL) and provides language interoperability across several programming languages. Programs written for .NET Framework execute in a software environment named the Common Language Runtime (CLR). The CLR is an application virtual machine that provides services such as security, memory management, and exception handling. As such, computer code written using .NET Framework is called "managed code". FCL and CLR together constitute the .NET Framework.

.NET Compiler Platform, also known by its codename Roslyn, is a set of open-source compilers and code analysis APIs for C# and Visual Basic (VB.NET) languages from Microsoft.

Mono (software) Computer software project

Mono is a free and open-source .NET Framework-compatible software framework. Originally by Ximian, it was later acquired by Novell, and is now being led by Xamarin, a subsidiary of Microsoft and the .NET Foundation. Mono can be run on many software systems.

ML.NET Machine learning library

ML.NET is a free software machine learning library for the C# and F# programming languages. It also supports Python models when used together with NimbusML. The preview release of ML.NET included transforms for feature engineering like n-gram creation, and learners to handle binary classification, multi-class classification, and regression tasks. Additional ML tasks like anomaly detection and recommendation systems have since been added, and other approaches like deep learning will be included in future versions.

References

  1. Avery, James (2004-07-01). "Ten Must-Have Tools Every Developer Should Download Now". MSDN Magazine. Archived from the original on 19 September 2008. Retrieved 2008-08-20.
  2. Hanselman, Scott (2007-08-23). "Scott Hanselman's 2007 Ultimate Developer and Power Users Tool List for Windows". Archived from the original on 14 September 2008. Retrieved 2008-08-20.
  3. Wills, Dean. "C++/CLI Add-in for .NET Reflector".
  4. Roeder, Lutz. "Lutz Roeder's Programming.Net". Archived from the original on 2 July 2016. Retrieved 4 July 2016.
  5. Cramblitt, Bob (2008-08-20). "The Future of .NET Reflector". Archived from the original on 22 August 2008. Retrieved 2008-08-20.
  6. Read, Bart. "More Big News: .NET Reflector 7 Beta, Integrating Jason Haley's PowerCommands Add-in is Now Available". Simple Talk. Retrieved 20 January 2011.
  7. Davidson, Neil. "An open letter to the .NET community". Archived from the original on 2011-02-05. Retrieved 2011-02-02.
  8. "JetBrains .NET Tools Blog: dotPeek - Free .NET Decompiler is Available for Early Access".
  9. Davidson, Neil. "Why we reversed some of our Reflector decision". Archived from the original on 16 January 2013.