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 as struct (#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 involving Span<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)

    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 to genpdb
    • ๐Ÿšš #1740: Add LanguageVersion, RemoveDeadCode and RemoveDeadStores switches

    ILSpy pwsh cmdlets

    • ๐Ÿ‘‰ Show a progress bar during decompilation