Skip to content

Releases: icsharpcode/ILSpy

ILSpy 4.0.1

25 Jan 13:54

Choose a tag to compare

This is a hotfix release. Two UI-related changes have been incorporated:

  • ILSpy: Restore 3.x default value of "Show internal types and members" setting
  • ILSpy.AddIn: Include BAML decompiler plugin in VSIX distribution

ILSpy 4.0

16 Jan 17:29

Choose a tag to compare

We want to thank all contributors who provided fixes (details see below)! And we want to thank all testers, who provided feedback and tested very thoroughly!

New Language Features

  • C# 1.0/2.0 overloaded &&/|| operators
  • C# 4.0 optional arguments
  • C# 7.1 reference assemblies: ILSpy will show a warning if you are looking at a reference assembly
  • C# 7.2 non-trailing named arguments
  • C# 7.2 stackalloc with Span
  • C# 7.3 stackalloc initializers

Improved Pattern Detection

  • Decompilation and pretty-printing of float literals (#517 -> #1350)
  • Object and array initializer improvements
  • Various smaller improvements in correctness and prettiness of the decompiled code.
  • Decompilation of integer literals (#1322)
  • Variable splitting works better with method calls (#1253)
  • Expression Trees: Multiple levels of nesting are now supported better
  • C# 6.0 string interpolation with FormattableString/IFormattable

Contributions

Decompilation engine

  • Chicken-Bones: Improved block ordering in ConditionDetection (#1218)
  • Chicken-Bones: Improved switch and loop detection (#1258, #1295 and #1296)
  • ashmind: Decimal constant improvements (#1236)
  • Viridovics: Add cast to object for reference types in ExpressionBuilder.VisitUnboxAny (#1277)
  • vizv: Fix yield return for assembly compiled with Mono (#1303)
  • cshung: Bug fix for #1224 (#1243)

Others

  • ninjaoxygen: Update UniversalAssemblyResolver to include missing .NET 3.x [Compact Framework] support (#1347)
  • wangzq: Add command line argument "/config:" to specify settings file (#1360)
  • kmatyaszek: Add show IL code to ICSharpCode.Decompiler.Console (#1285)
  • agametov: CWE-252 The return value of function 'Reverse' is required to be utilized. (#1305)
  • siriak: Code cleanup (#1363)

Improvements & Bugfixes

  • Added option to display all members, including compiler-generated members and getters/setters in tree view. (#747)
  • Added option to display metadata token in 10-based or hex format. (#628)
  • Reorganized option pages. (#1130)
  • Local functions: Code is no longer hidden if local functions are used in the code, as long as they're not decompled correctly. Note that this might still lead to compile errors, if anonymous types or lambdas are used in the local functions.
  • Decompilation of invalid IL
  • Improved decompilation of C++/CLI constructs
  • Improved stability of analyzers
  • Various smaller bugfixes

Misc

  • CreateCecilObjectModel: extension method to help plugin writers porting their plugins to ILSpy 4.0
  • IAmbience API revived: If you want to nicely print type names or member signatures in C# style, you can now use CSharpAmbience
  • "Open containing folder" and "Open command line here" added to Assembly tree nodes.
  • Experimental PDBgen (no lambda support, no yield/async state machines; very basic C#)
  • New IAnalyzer API
  • Added IDocumentationProvider: allows providing XML doc comments from custom sources
  • Added IDebugInfoProvider: allows providing debug info (variable names and sequence points)

Architectural Changes

For ILSpy 4 we replaced Mono.Cecil with System.Reflection.Metadata. The wiki entry on SRM deals at length with information that is important to addin writers, the background story and some of the performance/memory improvements you as a user of ILSpy can expect.

Our goal for this version given the underlying architectual changes is as follows: "As good or better as ILSpy 3.2 in terms of decompilation quality, stability, performance and memory usage."

ILSpy 4.0 RC2

13 Jan 10:36

Choose a tag to compare

Only bug fixes in comparison to RC1. Prior feature release notes apply.

ILSpy 4.0 RC1

05 Jan 09:43

Choose a tag to compare

We want to thank all contributors who provided fixes in this release: @ninjaoxygen, @wangzq and @siriak!
And we want to thank all testers, who provided feedback and tested very thoroughly, especially @greenozon, @mmusu3 and @tamlin-mike for their ongoing support!

Beta 1 through 3 Release Notes apply, additionally:


Improved Pattern Detection

  • Decompilation and pretty-printing of float literals (#517 -> #1350)
  • Object and array initializer improvements
  • Various smaller improvements in correctness and prettiness of the decompiled code.

Contributions

  • ninjaoxygen: Update UniversalAssemblyResolver to include missing .NET 3.x [Compact Framework] support (#1347)
  • wangzq: Add command line argument "/config:" to specify settings file (#1360)
  • siriak: Code cleanup (#1363)

Improvements & Bugfixes

  • Added option to display all members, including compiler-generated members and getters/setters in tree view. (#747)
  • Added option to display metadata token in 10-based or hex format. (#628)
  • Reorganized option pages. (#1130)
  • Various smaller bugfixes

ILSpy 4.0 Beta 3

16 Dec 08:10

Choose a tag to compare

ILSpy 4.0 Beta 3 Pre-release
Pre-release

We want to thank all contributors, who provided fixes in this release: @Chicken-Bones, @Viridovics, @kmatyaszek, @vizv and @agametov!
And we want to thank all testers, who provided feedback and tested very thoroughly, especially @greenozon, @mmusu3, @tamlin-mike and @CreateAndInject for their ongoing support!

Beta 1+2 Release Notes apply, additionally:

New Language Features

  • C# 7.3 stackalloc initializers
  • C# 7.2 stackalloc with Span

Improved Pattern Detection

  • Decompilation of integer literals (#1322)
  • Variable splitting works better with method calls (#1253)

Contributions

  • Chicken-Bones: Improved switch and loop detection (#1258, #1295 and #1296)
  • Viridovics: Add cast to object for reference types in ExpressionBuilder.VisitUnboxAny (#1277)
  • kmatyaszek: Add show IL code to ICSharpCode.Decompiler.Console (#1285)
  • vizv: Fix yield return for assembly compiled with Mono (#1303)
  • agametov: CWE-252 The return value of function 'Reverse' is required to be utilized. (#1305)

Improvements & Bugfixes

  • Attribute analyzer now works with built-in attributes
  • Bugfixes in ILSpy VS AddIn
  • Improved stability of analyzers
  • Various smaller bugfixes

Architectural Changes

https://github.com/icsharpcode/ILSpy/wiki/srm

ILSpy 4.0 Beta 2

13 Aug 11:05

Choose a tag to compare

ILSpy 4.0 Beta 2 Pre-release
Pre-release

Beta 1 Release Notes apply to Beta 2, additionally:

Improved Pattern Detection

  • Expression Trees: Multiple levels of nesting are now supported better

Misc

  • CreateCecilObjectModel: extension method to help plugin writers porting their plugins to ILSpy 4.0
  • IAmbience API revived: If you want to nicely print type names or member signatures in C# style, you can now use CSharpAmbience
  • "Open containing folder" and "Open command line here" added to Assembly tree nodes.

Improvements & Bugfixes

  • Local functions: Code is no longer hidden if local functions are used in the code, as long as they're not decompled correctly. Note that this might still lead to compile errors, if anonymous types or lambdas are used in the local functions.

ILSpy 4.0 Beta 1

01 Aug 19:45

Choose a tag to compare

ILSpy 4.0 Beta 1 Pre-release
Pre-release

We want to thank all contributors, who provided fixes in this release: @Chicken-Bones, @ashmind and @cshung!
And we want to thank all testers, who provided feedback and tested very thoroughly, especially @greenozon, @mmusu3 and @tamlin-mike for their ongoing support!

New Language Features

  • C# 1.0/2.0 overloaded &&/|| operators
  • C# 4.0 optional arguments
  • C# 7.1 reference assemblies: ILSpy will show a warning if you are looking at a reference assembly
  • C# 7.2 non-trailing named arguments

Improved Pattern Detection

  • C# 6.0 string interpolation with FormattableString/IFormattable

Misc

  • Experimental PDBgen (no lambda support, no yield/async state machines; very basic C#)
  • New IAnalyzer API
  • Added IDocumentationProvider: allows providing XML doc comments from custom sources
  • Added IDebugInfoProvider: allows providing debug info (variable names and sequence points)

Contributions

  • Chicken-Bones: Improved block ordering in ConditionDetection (#1218)
  • ashmind: Decimal constant improvements (#1236)
  • cshung: Bug fix for #1224 (#1243)

Improvements & Bugfixes

  • Decompilation of invalid IL
  • Improved decompilation of C++/CLI constructs
  • Improved stability of analyzers

Architectural Changes

For ILSpy 4 we replace Mono.Cecil with System.Reflection.Metadata. The wiki entry on SRM deals at length with information that is important to addin writers, the background story and some of the performance/memory improvements you as a user of ILSpy can expect.

Our goal for this version given the underlying architectual changes is as follows: "As good or better as ILSpy 3.2 in terms of decompilation quality, stability, performance and memory usage."

ILSpy 4.0 Alpha 1

23 Jul 15:30

Choose a tag to compare

ILSpy 4.0 Alpha 1 Pre-release
Pre-release

Technical details for this first release of ILSpy 4.0 are available in a dedicated page in our wiki: SRM deals at length with information that is important to addin writers, the background story and some of the performance/memory improvements you as a user of ILSpy can expect.

Our goal for this version given the underlying architectual changes is as follows: "As good or better as ILSpy 3.2 in terms of decompilation quality, stability, performance and memory usage."

Therefore we ask you to compare the last released production version with this Alpha 1 - we are confident that even at this early stage we match the quality in decompilation. If not, please do open an issue (sample assemblies very much appreciated!)

ILSpy 3.2

01 Jul 13:13

Choose a tag to compare

Security Advisory

Resource Deserialization Security Vulnerability If you are using an older version, please update immediately! (especially if the assemblies you decompile are untrustworthy). Note that the integration in Visual Studio via Roslyn is not affected.


The Visual Studio addin is now available on the marketplace, the Decompiler engine as usual via NuGet.

New Language Features

  • C# 4.0 Dynamic binding
  • C# 4.0 Named arguments
  • C# 7.0 Tuple types
  • C# 7.3 Attributes on backing fields of properties

Improved Pattern Detection

  • C# 1.x switch-on-string
  • Compound assignments for user-defined operators
  • Improved decompilation of collection initializers

Improvements in TypeSystem

  • Distinguish between unkown type and no type.
  • Dead code removal

Misc

  • Rewrite of ILSpy.AddIn
  • Improved decompilation of Windows Forms assemblies
  • Search results now use a ListView with two columns, search results can be sorted by clicking on the header.
  • Updated pattern detection for changes in Roslyn 2.8
  • Improved control-flow decompilation of conditional statements (special thanks to @Chicken-Bones #1176 )
  • Upgrade to Mono.Cecil 0.10.0

ILSpy 3.2 RC

24 Jun 13:52

Choose a tag to compare

For major new features in 3.2, please see the Beta announcement https://github.com/icsharpcode/ILSpy/releases/tag/v3.2-beta. Here we list only the changes from Beta -> RC.

Contributions

  • Improved control-flow decompilation of conditional statements (special thanks to @Chicken-Bones #1176 )
  • Search engine partial name match (special thanks to @TheOneAmir #1119 )

Improvements & Bugfixes

  • Improved stability of ILSpy.AddIn
  • Avoid ambiguities when referring to Attribute types in attribute context
  • Improved decompilation of Windows Forms assemblies
  • Improved code generation when using generic methods (emit fewer casts, if possible)
  • Support for extension 'Add' methods in collection initializers (forgotten C# 6.0 feature)
  • Improved decompilation of collection initializers
  • Use overload resolution to ensure we call the correct indexer accessor methods
  • Streamlined decompilation of enum value declarations
  • ... as well as other minor fixes