Releases: icsharpcode/ILSpy
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."
ILSpy 4.0 Alpha 1
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
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
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
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
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
- dotnet/roslyn#25251 (Decompilation should simplify "type" usage)
- dotnet/roslyn#25246 (Decompilation cannot decompile xUnit's
Assert.All
) - #1095 (C# decompilation, for flags enums always use hex prefix)
ILSpy 3.1 Release Candidate
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
- dotnet/roslyn#25251 (Decompilation should simplify "type" usage)
- dotnet/roslyn#25246 (Decompilation cannot decompile xUnit's
Assert.All
) - #1095 (C# decompilation, for flags enums always use hex prefix)