Skip to content

Releases: icsharpcode/ILSpy

ILSpy 5.0

19 Sep 17:03
Compare
Choose a tag to compare

ILSpy 5.0

New Language Features

New Features

  • Decompile a set of assemblies to a solution (#1550 by @dymanoid)
  • New BAML Decompiler
  • MSIX for Microsoft Store: @onovotny added build support (including Azure Pipelines).
  • Generate VS Windows Forms Designer-compliant code if a method is identified as Windows Forms InitializeComponent
  • Added new RemoveDeadStores option.
  • Added new AlwaysShowEnumMemberValues option.

Decompiler Engine Improvements & Bugfixes

  • Improved stability of decompiler and disassembler on invalid metadata tokens.
  • Improved decompilation in case not all types/references are available.
  • Added switch-on-string pattern for empty string case.
  • Add support for ReadOnlySpan<T> initialization pattern
  • Improved decompilation of ref readonly delegates and return types.
    • Improved decompilation of ref typed expressions, in particular ref/in extension methods and in parameters.
  • Improved support for Mono yield return state machines and closure types.
  • Improved decompilation of LINQ queries
  • PDB generator now can emit "method stepping information" for async #1422

Improvements & Bugfixes

  • Many minor bug and stability fixes.
  • Improved performance in ILInlining step
  • VSIX: Fix issue of missing dependencies

UI Improvements

  • Avoid blocking the UI when waiting on assembly load while restoring the saved position in the treeview
  • Support obfuscated names in treeview and search #1359
  • Escape non-printable characters in IL view
  • Rework C# decompiler options dialog (unify language settings panel)
  • Make indentation of decompiled code configurable.
  • Chinese translation by @maikebing (#1299) screenshots
  • Small improvements in search panel by @mcpiroman (#1476)
  • Show error message if an entity cannot be analyzed instead of crashing.
  • Improved linking in the decompiler view:
    • method group / delegate references
    • the constructor of an attribute is reachable, by clicking on the open/close parenthesis.
    • fixed fields are now properly linked
  • Added matching bracket highlighting
  • Updated to AvalonEdit 6.0 Preview

dotnet ilspycmd Tool

  • Add -d|-debuginfo option See Demo app
  • Add -r|-referencepath option

Architectural Changes

  • We dropped support for all TFMs except netstandard2.0 #1416
  • Reactivate many tests from old decompiler

Known issues & limitations

  • C# 8.0 nullable reference types metadata only supports the latest format. Note that this is a breaking change and assemblies generated by older preview versions of C# 8 are not supported. (See #1619 (comment))
  • Generic local functions are not yet supported (#1588)
  • "Open assembly from GAC" may require administrator privileges (#1498)
  • Matching bracket highlighting does not yet support all language features that introduce new syntax.

ILSpy 5.0 RC1

09 Sep 07:14
Compare
Choose a tag to compare

New Language Features

Improvements & Bugfixes

  • Added new RemoveDeadStores option.
  • Added switch-on-string pattern for empty string case.
  • Improved decompilation in case not all types/references are available.
  • Many minor bug and stability fixes.

ILSpy 5.0 Preview 4

12 Aug 07:02
Compare
Choose a tag to compare
ILSpy 5.0 Preview 4 Pre-release
Pre-release

New Language Features

New Features

Improvements & Bugfixes

  • C# 8.0 nullable reference types metadata was updated to the latest format. Note that this is a breaking change and assemblies generated by older preview versions of C# 8 are no longer supported.
  • Improved decompilation of ref typed expressions, in particular ref/in extension methods and in parameters.
  • Improved support for Mono yield return state machines and closure types.
  • Improved stability of decompiler and disassembler on invalid metadata tokens.
  • Many minor bug and stability fixes. For a complete list of all changes since preview3 see here.

UI Improvements

  • Improved linking in the decompiler view:
    • method group / delegate references
    • the constructor of an attribute is reachable, by clicking on the open/close parenthesis.
  • Added matching bracket highlighting
  • Updated to AvalonEdit 6.0 Preview

Known issues & limitations

  • C# 8.0 nullable reference types metadata was updated to the latest format. Note that this is a breaking change and assemblies generated by older preview versions of C# 8 are no longer supported. (See #1619 (comment))
  • Generic local functions are not yet supported (#1588)
  • "Open assembly from GAC" may require administrator privileges (#1498)
  • Matching bracket highlighting does not yet support all language features that introduce new syntax.

ILSpy 5.0 Preview 3

08 Jul 11:49
Compare
Choose a tag to compare
ILSpy 5.0 Preview 3 Pre-release
Pre-release

This preview does not include any new language features.

Improvements & Bugfixes

  • VSIX: Fix issue of missing dependencies
  • MSIX support: @onovotny added build support (including Azure Pipelines). Not published in the store yet, see #1540
  • Tests updated to latest Roslyn implementation
  • Many minor bug and stability fixes (details)

ILSpy 5.0 Preview 2

12 May 05:42
Compare
Choose a tag to compare
ILSpy 5.0 Preview 2 Pre-release
Pre-release

New Language Features

  • C# 7.3 Indexing movable fixed buffers: Fixed buffers can be indexed into without first being pinned.
  • Use Unsafe intrinsics to represent IL operations that cannot be expressed in C#.

Improvements & Bugfixes

  • Improved decompilation of ref readonly delegates and return types.
  • Improved linking and display of fixed fields in the decompiler view.
  • Improved support for C# 8.0 nullable reference types: dynamic?
  • Many minor bug and stability fixes.

UI Improvements

  • Rework C# decompiler options dialog (unify language settings panel)
  • Make indentation of decompiled code configurable.
  • Chinese translation by @maikebing (#1299) screenshots
  • Small improvements in search panel by @mcpiroman (#1476)
  • Show error message if an entity cannot be analyzed instead of crashing.

ILSpy 5.0 Preview 1

10 Mar 16:59
Compare
Choose a tag to compare
ILSpy 5.0 Preview 1 Pre-release
Pre-release

New Language Features

  • C# 8.0: Nullable Reference Types
  • C# 7.3: unmanaged generic constraint

Improvements & Bugfixes

  • PDB generator now can emit "method stepping information" for async #1422
  • Generate VS Windows Forms Designer-compliant code if a method is identified as Windows Forms InitializeComponent
  • Add support for ReadOnlySpan initialization pattern
  • Improved decompilation of LINQ queries
  • Improved performance in ILInlining step
  • New BAML Decompiler

UI Improvements

  • Avoid blocking the UI when waiting on assembly load while restoring the saved position in the treeview
  • Support obfuscated names in treeview and search #1359
  • Escape non-printable characters in IL view
  • Reactivate SearchMsdnContextMenuEntry

dotnet ilspycmd Tool

  • Add -d|-debuginfo option See Demo app
  • Add -r|-referencepath option

Architectural Changes

  • We dropped support for all TFMs except netstandard2.0 #1416
  • Reactivate many tests from old decompiler

ILSpy 4.0.1

25 Jan 13:54
Compare
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
Compare
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
Compare
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
Compare
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