Skip to content

Releases: icsharpcode/ILSpy

ILSpy 4.0 Beta 1

01 Aug 19:45
Compare
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
Compare
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
Compare
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
Compare
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

ILSpy 3.2 Beta

11 Jun 05:25
Compare
Choose a tag to compare

The Visual Studio addin beta is only available here, not on the marketplace - it has been completely rewritten, please test the "Open in ILSpy" feature extensively (works on project explorer nodes such as references and Nuget packages as well as inside the text editor).

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

Improvements in TypeSystem

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

Misc

  • Rewrite of ILSpy.AddIn
  • 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
  • Upgrade to Mono.Cecil 0.10.0
  • Various smaller bug fixes and stability improvements

ILSpy 3.1

08 Apr 14:24
Compare
Choose a tag to compare

Standalone decompiler can be downloaded directly here, the VS2017 addin and decompiler NuGet are available at the respective locations.

New Language Features

  • C# 7.2 private protected (contributed)
  • C# 7.2 conditional ref
  • C# 7.1 async Main (contributed)
  • C# 7.0 out variables
  • C# 7.0 ref returns and locals
  • C# 6.0 string interpolation
  • C# 6.0 await in catch / finally
  • C# 6.0 expression-bodied members
  • C# 6.0 null propagator (null-conditional operator, succinct null checking)

Improved Mono mcs Codegen (following areas)

  • switch
  • lock
  • foreach
  • LINQ
  • Delegate construction

Test Infrastructure Improvements

  • Support for mcs
  • Support for vbc

Improvements in TypeSystem

  • Lazy-loading for nested types
  • Add metadata tokens to type system
  • Remove dead code

Misc

  • UI: Switch to VS MEF (contributed)
  • General/UI: Language version selection
  • VSIX: drop VS 2015 support
  • Updated pattern detection for changes in Roslyn 2.7
  • Refactored ILSpy.AddIn

Bug Fixes for Roslyn

ILSpy 3.1 Release Candidate

28 Mar 08:18
Compare
Choose a tag to compare

Fixes for mcs

  • LINQ
  • Delegate construction

Misc

  • Updated pattern detection for changes in Roslyn 2.7
  • Refactored ILSpy.AddIn

Improvements in TypeSystem

  • Lazy-loading for nested types (needs testing)
  • Add metadata tokens to type system
  • Remove dead code

Bug Fixes for Roslyn

ILSpy 3.1 Beta 1

12 Mar 18:57
Compare
Choose a tag to compare

New Language Features

  • C# 7.2 private protected (contributed)
  • C# 7.2 conditional ref
  • C# 7.1 async Main (contributed)
  • C# 7.0 out variables
  • C# 7.0 ref returns and locals
  • C# 6.0 string interpolation
  • C# 6.0 await in catch / finally
  • C# 6.0 expression-bodied members
  • C# 6.0 null propagator (null-conditional operator, succinct null checking)

Improved Mono mcs Codegen (following areas)

  • switch
  • lock
  • foreach

Test Infrastructure Improvements

  • Support for mcs
  • Support for vbc

Misc

  • UI: Switch to VS MEF (contributed)
  • General/UI: Language version selection
  • VSIX: drop VS 2015 support

NuGet Release 3.0.2 (3.0.1)

24 Jan 06:16
Compare
Choose a tag to compare

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

  • TFM net45 support, see #1033
  • Decompiling types without method bodies, see #1032

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

Binaries are on NuGet.

ILSpy 3.0.1

21 Dec 13:52
Compare
Choose a tag to compare

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