Releases: icsharpcode/ILSpy
ILSpy 5.0 Preview 3
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
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 readonlydelegates 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
New Language Features
- C# 8.0: Nullable Reference Types
- C# 7.3:
unmanagedgeneric 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
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
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
Only bug fixes in comparison to RC1. Prior feature release notes apply.
ILSpy 4.0 RC1
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
ILSpy 4.0 Beta 3
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
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
ILSpy 4.0 Beta 2
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
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."