The open-source .NET assembly browser and decompiler!

ILSpy

ILSpy

  -  4.19 MB  -  Open Source
  • Latest Version

    ILSpy 9.0.0.7660 Preview 2 LATEST

  • Review by

    Daniel Leblanc

  • Operating System

    Windows 7 64 / Windows 8 64 / Windows 10 64 / Windows 11

  • User Rating

    Click to vote
  • Author / Product

    ILSpy Team / External Link

  • Filename

    ILSpy_Installer_9.0.0.7660-preview2-x64.msi

ILSpy is a .NET decompiler for Windows PC that supports PDB generation, ReadyToRun, metadata, and more – compatible across platforms!

Are you a .NET developer? Do you like dissecting applications and finding specific information about them? If so, then you’ll want an application like ILSpy which can analyze programs developed in .NET and inspect every one of their components. By doing this, you can determine how the program was assembled originally.

ILSpy is a better tool than its competitors because it is free and easy to use. It is also an open-source program that requires no installation. Since it is a portable application, you can run it off a USB flash drive, external hard drive, or personal computer just the same.

Features and Highlights
  • Decompilation to C#
  • Whole-project decompilation
  • Search for types/methods/properties
  • Hyperlink-based type/method/property navigation
  • Base/Derived types navigation, history
  • Assembly metadata explorer
  • BAML to XAML decompiler
  • ReadyToRun binary support for .NET Core
  • Extensible via plugins
  • Additional features in DEBUG builds
Find .NET Assemblies

When you launch the application, the main window is laid out clearly and features 2 panes. The first pane lets you view the .NET assemblies in a tree. That way, you can view a selection item more closely. You can inspect WINMD, DLL, and EXE files this way too. GAC data can get loaded, and you can open Nuget packages too.

Rendering Code

The application is designed for viewing purposes only. For this reason, file modifications are not possible. However, you can use a search function to find specific members, types, fields, methods, events, properties, metadata tokens, or constants.

You can configure many decompiler settings, including debug symbol variable names, eliminating dead code, eliminating side effect code, and member definition expansion following decompilation. Also, several instances are allowed, and the font is customizable.

PROS
  • Open-source and free to use
  • Supports multiple .NET versions
  • User-friendly interface
  • Fast decompilation process
  • Active development and community support
CONS
  • Limited debugging features
  • Basic search functionality
  • Occasional decompilation errors
  • Less comprehensive than paid tools
  • No cross-platform support
Conclusion

Overall, ILSpy allows decompiling .NET assemblies to be quite simple. It is easy for developers to modify the existing code and use it for their own purposes because it is an open-source program.

Note: Requires .NET Framework.

  • ILSpy 9.0.0.7660 Preview 2 Screenshots

    The images below have been resized. Click on them to view the screenshots in full size.

    ILSpy 9.0.0.7660 Preview 2 Screenshot 1
  • ILSpy 9.0.0.7660 Preview 2 Screenshot 2
  • ILSpy 9.0.0.7660 Preview 2 Screenshot 3
  • ILSpy 9.0.0.7660 Preview 2 Screenshot 4
  • ILSpy 9.0.0.7660 Preview 2 Screenshot 5

What's new in this version:

ILSpy 9.0.0.7660 Preview 2
Breaking Changes:
- @file support with breaking changes to command line options #3205
- New single instance handling #3212

Enhancements:
- Replace native interop CommandLineToArgvW with parsing in Process.Unix.cs from System.Diagnostics.Process #3201
- Natural Sort without interop #3196
- AOT and x-plat changes #3203

Bug fixes:
- Fix #3197: Bug when trying to read a bundle/archive file
- Fix #3189: Support primitive types in Expression.Constant(object) pattern in Expression Trees


ILSpy 9.0.0.7618 Preview 1
Breaking Changes:
- ICSharpCode.Decompiler: Added MetadataFile base class for PEFile
- ICSharpCode.Decompiler: IModule.PEFile is now named IModule.MetadataFile
- ICSharpCode.Decompiler/ILSpyX: Added IFileLoader API to allow for easier extensibility of supported file formats (see #3191)
- ILSpy: Split BAML decompiler into library and add-in (see #3178)
- ILSpy/ILSpyX: Moved non-UI analyzer API to ILSpyX (see #3186)
- ICSharpCode.Decompiler: IProjectFileWriter and IProjectInfoProvider APIs are now public (see #3151 and #3191)

Performance:
- Activate Dynamic Adaptation To Application Sizes (DATAS) (#3122).
- RDP hardware acceleration (#3122): Enabling hardware acceleration for Remote Desktop Protocol (RDP) to boost performance.

New Language Features:
- Update pattern-detection to Roslyn v4.9.2
- Added support for switch on (ReadOnly)Span<char> using a compiler-generated hash function.
- Added new a.GetValueOrDefault(b) -> a ?? b transform for side-effect-free default values.

Enhancements:
- Added support for reading standalone ECMA-335 metadata (portable PDB and other metadata blobs) (see #3149)
- Added support for reading WebCIL assemblies (IL embedded in WASM) (see #3184)
- #3118: Add "Clear assembly list" menu item.
- #2893: Add option to disable automatic assembly loading.
- IL output: Add indentation level to make it easier to see custom attributes belonging to interface implementations.
- IL output: Print metadata token of custom attribute.

Contributions:
- Fix metadata display of DynamicLocalVariable and DefaultNamespace custom debug information (#3111, @ElektroKill)
- Read and use tuple element names and dynamic type information from PDBs (#3114, @ElektroKill)
- Adjust colors of AvalonEdit built-in highlightings for dark themes (#3138, @ltrzesniewski)
- Bugfix: infinite loop in DetermineEffectiveAccessibility (#3164, @yzdeveloper)
- TreeView: Add referenced types, members and exported types under references (#3092, @fowl2)
- Add support for Mono C# compiler 2.6.4 pinned region with array variable (#3110, @ElektroKill)

Bug fixes:
- Fix #3072: Ignoring resources with the same name as a namespace.
- Fix bug in UnknownType: Ensuring that the FullName of nested unknown types contains the outer type name(s), not just the namespace and nested type name.
- Fix #3153: Always using SHA1 for public key tokens.
- Fix ILSpy for ZIP files/VSIX with bundle signatures: Enabling ILSpy to open ZIP files and VSIX packages containing bundle signatures.
- Omit package entries from the treeview that denote the directory.
- Fix #3142: Exception when analyzing source of library with global assembly attributes
- Fix #3113: Remove GetAlternativeName and instead reuse existing names, if there are no conflicts.