New Language Features
- C# 8.0: Indexing and Slices (Ranges)
New Features
- TEMPORARILY REMOVED #2013 (comment): Added the capability to extract self-contained executables (PublishSingleFile)
- Project export: Added an option to allow SDK-style format for project files. (#2031 by @dymanoid)
- Dynamic assembly list generation for target framework
- Analyzers: Added "Implements interface"-Analyzer (#2028 by @dymanoid)
UI Improvements
- Using the middle mouse button to click on tree nodes and links will open the decompilation result in a new tab.
- 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
- Show target frameworks next to the assembly version in the tree-view
Enhancements
- ReadyToRun: Using import cell name to describe callees (#1991 by @cshung)
- ReadyToRun: Decorate the ready to run disassembly with DebugInfoBounds (#1987 by @cshung)
- Improve ReduceNestingTransform by considering nested containers (#1880 by @Chicken-Bones)
- 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.
- Updated links to MS Docs (#2030 by @AustinWise)
- #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.
PDB generation
- Improved sequence points of try-catch statements
Bug fixes
- Fix #1946: Don't move
return
intotry
block when doing so changes the semantics of afinally
block. - Fix #1992: Analyzer fails to find usages of a type when it is used as a type argument
- Workaround dotnet/roslyn#43659 in decompiled code.
- And many other fixes, for a full list click here.