Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


.NET Decompiler

Subscribe to updates I use ILSpy

Statistics on ILSpy

Number of watchers on Github 4727
Number of open issues 105
Average time to close an issue about 1 month
Main language C#
Average time to merge a PR 26 days
Open pull requests 19+
Closed pull requests 45+
Last commit over 1 year ago
Repo Created over 8 years ago
Repo Last Updated over 1 year ago
Size 24.6 MB
Homepage http://www.ilspy....
Organization / Authoricsharpcode
Latest Release3.0.2
Page Updated
Do you use ILSpy? Leave a review!
View open issues (105)
View ILSpy activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating ILSpy for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

ILSpy Join the chat at NuGet Build status Twitter Follow ILSpy VS extension

ILSpy is the open-source .NET assembly browser and decompiler.

Download: latest release | latest CI build (master)

CI Build Nuget Feed (master):

Decompiler Frontends

Aside from the WPF UI ILSpy (downloadable via Releases, see also plugins), the following other frontends are available:


  • Decompilation to C#
  • Whole-project decompilation (csproj, not sln!)
  • Search for types/methods/properties (substring)
  • Hyperlink-based type/method/property navigation
  • Base/Derived types navigation, history
  • BAML to XAML decompiler
  • Extensible via plugins (MEF)
  • Check out the language support status


ILSpy is distributed under the MIT License.

Included open-source libraries:

  • Mono.Cecil: MIT License (part of ICSharpCode.Decompiler)
  • LightJson: MIT License (part of ICSharpCode.Decompiler)
  • Humanizer: MIT License (part of ICSharpCode.Decompiler)
  • AvalonEdit: MIT License
  • SharpTreeView: LGPL
  • Ricciolo.StylesExplorer: MS-PL (part of ILSpy.BamlDecompiler.Plugin)
  • CommandLineUtils: Apache License 2.0 (part of ICSharpCode.Decompiler.Console)

How to build


  • Check out the repository using git.
  • Execute git submodule update --init --recursive to get all required submodules.
  • Use ILSpy.sln to work.


  • Check out the repository using git.
  • Execute git submodule update --init --recursive to get all required submodules.
  • Edit \ICSharpCode.Decompiler\ICSharpCode.Decompiler.csproj Add Sdk="Microsoft.NET.Sdk" to the Project element. This is required due to a tooling issue on Unix. Please do not commit this when contributing a pull request!
  • Use ICSharpCode.Decompiler.Console.sln to work.

How to contribute

  • Report bugs
  • If you want to contribute a pull request, please add to your .git/hooks to prevent checking in code with wrong indentation. We use tabs and not spaces. The build server runs the same script, so any pull requests using wrong indentation will fail.

Current and past contributors.

ILSpy open issues Ask a question     (View All Issues)
  • almost 3 years Different IL produced based on where one line of c# code is located
  • almost 3 years Invalid BAML namespace decompilation
  • almost 3 years Where is the debug plug-in?
  • almost 3 years Creation of an anonymous array doesn't decompile properly
  • almost 3 years .NET Core compatibility
  • almost 3 years Feature request: grouping assemblies
  • about 3 years Decrypt Iterator block
  • about 3 years Protected Net Programs
  • about 3 years Eliminate dead, unreachable code
  • about 3 years Ternary losses required (byte) cast in decompiled code
  • about 3 years Incorrect property access decompilation
  • about 3 years wrong decompile type.GetCustomAttributes<AttributeUsageAttribute>(false);
  • about 3 years Add Support for Viewing IL Code of Managed C++.
  • about 3 years ILSpy fail to decompile catch (...) when (...)
  • about 3 years nightly build
  • about 3 years ldftn in decompiled code
  • about 3 years Search doesn't work on nested classes
  • about 3 years Mono.Cecil Updated!
  • about 3 years missing assignment on decompile
  • about 3 years Getting error when starting the exe?
  • about 3 years Missing recognizer for ?? when rhs is an assignment expression
  • about 3 years Toggle folding should also toggle xml doc comments
  • about 3 years SharpTreeView usage
  • about 3 years Show getters/setters
  • about 3 years Parameter Overload
  • about 3 years Possible defect in source code: comparing with itself
  • about 3 years [UI] Add "Save Code" Option to Right Click menus when selected a 'base' node on a Assembly.
  • about 3 years More deep queries
  • about 3 years Complex search queries
  • over 3 years E_INVALIDARG when "Open output in ILSpy" for CLI/C++ project
ILSpy open pull requests (View All Pulls)
  • Allow scrolling in high resource rows
  • Fixed duplicate preject references (cause failed clean build).
  • Search result sorting by fitness
  • Lamda fixes
  • Create installer
  • Work around #723 by eating all symbols during loading.
  • Decompiler can now introduce `var` variable declarations.
  • Automatic read only properties new decompiler
  • 66.6% done on [UI] Thinking of Adding a AutoUpdate feature.
  • Added support for Automatic Readonly Properties
  • Ui improve pane experience
  • Add "Open Directory" command
  • Improved accessibility support
  • Cutting root namespace from sub-directory name for decompiled sources
  • Add support for the read-only properties decompilation
  • Enabled "Per monitor DPI awareness"
  • Implemented really simple GoToMetadataAsSourceService backed by ILSpy
  • WIP: Replace Mono.Cecil with System.Reflection.Metadata
  • Issue #1046: Use VS MEF for hosting
ILSpy questions on Stackoverflow (View All Questions)
  • What risks exist if I work in a C# shop and attempt to write F# just to rely on ILSpy for conversion?
  • 'using' block compiler generated code not visible in dotPeek or ILSpy
  • ILSpy (a.k.a. .NET Reflector) shows a method as just calling itself, why?
  • How can I use ILSpy or other tools to find out which code in the .NET framework generated a particular exception message?
  • Decompile a .NET Assembly without ILSpy
  • how to make ILspy c# decompile result have better format?
  • Don't see Debugger menu in ILSpy
  • Variables ending with "1" have the "1" removed within ILSpy. Why?
  • How to get the image from the resource using ILSpy
  • Unable to see the decompiled code of System.Management.ManagementDateTimeConverter.ToDateTime(string) using ILSpy/Reflector?
  • Cannot decompile System.Windows.dll for Windows Phone 8 with ILSpy
  • DataVisualization - empty function bodies in ILSpy
  • Remove goto/switch stataments after using ILSpy
  • ILSpy, how to resolve dependencies?
  • ILSpy "Failed to resolve assembly" in AstBuilder
  • how to use ILspy debug a dll?
  • What's __PostIncrement in decompiled VB (by ILSpy)
  • Generate MSIL Code from c# without reflector/ilspy
  • Using ILSpy, how do I navigate to the Resource string?
  • Odd class member syntax shown in ILSpy
  • c# compiler ILSpy on WP7
  • Where can I see operator overloads of primitive types by using ILSpy?
ILSpy list of languages used
ILSpy latest release notes
3.0.2 NuGet Release 3.0.2 (3.0.1)

The release 3.0.2 has two improvements for downstream consumers of ICS.Decompiler:

  • TFM net45 support, see
  • Decompiling types without method bodies, see

For 3.0.1, there was only one improvement: GetCecil visibility, see

Binaries are on NuGet.

v3.0.1 ILSpy 3.0.1

This is a bugfix release for the WPF UI only (NuGet and xplat clients not updated, use 3.0.0 instead)

v3.0 ILSpy 3.0

Release notes are available in the Wiki.

If you want the good old ILSpy, please download - this is the tried-and-true Windows WPF UI.


Visual Studio addin:

Console info:

PowerShell cmdlets info:

Other projects in C#