ILSpy v6.0 Release Notes
Release Date: 2020-07-07 // almost 4 years ago-
Major Changes of Note
- ILSpy 6.0 sports a multi-tab docking interface
- ๐ ILSpy 6.0 comes with a new Metadata Explorer
- ๐ ILSpy 6.0 has new icons for high-DPI support
- ILSpy 6.0 requires at least .NET 4.7.2 (v5.0 required .NET 4.6.2)
๐ New Language Features
- C# 8.0: Indexing and Slices (Ranges)
- C# 7.0: Changes to syntactic disambiguation of generic identifiers
- ๐ C# 7.3 pattern-based
fixed
statement - 0๏ธโฃ C# 8.0 Default Interface Methods
- C# 8.0 Async streams (currently not covering
await foreach
) - C# 8.0 await using
- C# 8.0 Readonly members
- Decompile
calli
instructions using C# 9.0 function pointer syntax - ๐ Improved support for Unsafe intrinsics
- ๐ Support for generic and static local functions
๐ป UI Improvements
- ๐ Docking and multi tab support (see #1725 and #1801)
- ๐ Metadata Explorer (see https://github.com/icsharpcode/ILSpy/wiki/Metadata-Explorer)
- Assembly list dropdown in toolbar, enhanced assembly list management
- ๐ Show target frameworks next to the assembly version in the tree-view
- Using the middle mouse button to click on tree nodes and links will open the decompilation result in a new tab.
- "Select PDB" context menu: allows to change the PDB file resolved by ILSpy or pick one from a different location
- โ Added a "Debug Metadata Explorer" node for portable PDBs
- ๐ Use XAML for icons (high DPI)
- ๐ New icons (based on VS 2017 icon pack) (#1704 thanks to @Rpinski)
- RichText Tooltips (#1654)
- โ Add "Open with ILSpy" entry to the Windows Explorer context menu on exe and dll files (via Options/Misc)
- ๐ Empty metadata tables can now be hidden from the tree view
- Folding for XAML output (thanks to @jogibear9988)
- โ Add "Reset to defaults" in Options dialog
- Dynamic assembly list generation for target framework
๐ Improvements & Bugfixes
- ๐ Project export: Added an option to allow SDK-style format for project files. (#2031 by @dymanoid)
- Solution and project decompilation: Add missing ProjectTypeGuids
- โ Add search features (thanks to @miloush and @sailro)
- ๐ #1498: Remove Fusion API usage: Use standard file enumeration instead. This should enable us to use the GAC even with restricted access, as only the LIST permission is required.
- ๐ Fix DotNetCorePathFinder to properly support netstandard2.1
- ๐ Fix multi-module support
- โก๏ธ Updated links to MS Docs (#2030 by @AustinWise)
- ๐ Improve ReduceNestingTransform by considering nested containers (#1880 by @Chicken-Bones)
- Analyzers: Added "Implements interface"-Analyzer (#2028 by @dymanoid)
- Analyzer follow type forwarders (#1846 by @yyjdelete)
- ๐ The decompiler now supports Scalar Replacement Of Aggregates, which by default only works on display-classes and display-structs. There is an option to make it affect all instances and uses of plain types containing fields only. NOTE: It is still in preview stage. You can activate it when using a debug build.
- โ Added support for null-propagation on unconstrained generic expressions
- โ Added support for
[module: NullablePublicOnly]
- โจ Enhanced assembly resolution to distinguish target frameworks and use the correct references in case there are multiple versions of framework assemblies loaded.
- ๐ Better decompilation of local functions, pinned regions and display-classes
- Disassembler: actually make use of the cancellation token
- ๐ Support VB
Select Case
on string - Display
System.Void
asstruct
(#1835 by @yyjdelete) - Properly decompile auto events with tuples
- Do not change accessibility of non-transformed local functions
- ๐ Improve drag&drop support (#1860)
- ๐ Fix bug in
stackalloc
initializer detection involvingSpan<decimal>
(see #1855 by @yyjdelete) - โ Added struct constructor initializer pattern
- ๐ DotNetCorePathFinder: Various bug fixes when working with .net core assemblies
- Transform post-increment on float/double (#1769 thanks to @Chicken-Bones)
- ๐ Fix extra minus sign when formatting -0 on .NET Core 3.0 (#1790 thanks to @Chicken-Bones)
- ๐ Fix sealed modifier on interface methods with no body (#1792 thanks to @Chicken-Bones)
- ๐ Fix NullReferenceException when foreach decompilation is turned off (#1754 thanks to @davidwengier)
- ๐ Fixed performance problem when using an assembly from a
MemoryStream
(#1763 thanks to @yyjdelete)
Ready2Run (R2R)
- ๐ Ready2Run (by @cshung see https://github.com/icsharpcode/ILSpy/wiki/ILSpy.ReadyToRun)
- ๐ IL/IL with C#/ReadyToRun: Add metadata token hyperlinks to type, field, property and event declarations.
- IL/IL with C#/ReadyToRun: Add rich-text tooltips
- ReadyToRun: Optional output of UnwindInfo (#2043 by @edkazcarlson)
- ReadyToRun: Using import cell name to describe callees (#1991 by @cshung)
- ReadyToRun: Decorate the ready to run disassembly with DebugInfoBounds (#1987 by @cshung)
PDB Generation
- ๐ Improved sequence points of try-catch statements
- ๐ Improved generation of sequence points (#1967 by @jacdavis)
- ๐ PDB generation: Use correct sequence points in LINQ expressions and many smallish bug fixes
dotnet
ilspycmd
Tool- ๐ New option:
usepdb
(for improved variable naming) - ๐ฅ Breaking change: option
debuginfo
renamed togenpdb
- ๐ #1740: Add LanguageVersion, RemoveDeadCode and RemoveDeadStores switches
ILSpy pwsh cmdlets
- ๐ Show a progress bar during decompilation