This release is based on .NET 10.0. Please make sure that you have it installed on your machine beforehand.
Note for Mac users: see https://github.com/icsharpcode/ILSpy/wiki/Build-Artifacts#running-the-macos-artifact because the ILSpy.app is neither signed nor notarized.
New Features
- PR #3936: Add "Open from running process" dialog
- PR #3951: Add --dump-table metadata dump mode to ilspycmd
- PR #3924: ilspycmd: add --member for single-member decompilation
User Interface
- PR #3932: Metadata row details: full-width layout and a decompiler-styled editor for text blobs
- PR #3927: Fix #2879: show stored FieldList/MethodList values for memberless types
- PR #3922: Fix #749: toggle a member's fold together with its documentation
- PR #3923: Fix #781: click highlights member references, Ctrl+Click navigates
- PR #3918: Fix #633: Overrides analysis and this/base keyword navigation
- PR #3906: Show hover tooltips for dynamic member accesses
Enhancements
- PR #3933: Convert float/double += 1 into increment and decrement expressions
- PR #3926: Generate and resolve xml doc ID strings at the metadata level
- PR #3917: Represent VB.NET parameterized properties as accessor methods in C# output
- PR #3899: Don't undo the compiler's &&-to-& optimization
- PR #3889: Reimplement cross-platform single-instance handling
- PR #3904: Proper event tracing for ICSharpCode.Decompiler and ICSharpCode.ILSpyX
- PR #3902: Beautify enum declarations by referencing previously declared members
Testing / Infrastructure
- PR #3943: Do not pass /shared to compilers that cannot reach a compiler server
- PR #3941: Skip redundant push builds for branches with an open PR
- PR #3928: Add pretty test for C# 13 ref struct interfaces / allows ref struct
- PR #3919: Preserve Debug Steps tree state across filter sessions
- PR #3914: Support Roslyn 1.x/2.x compiler configurations in tests on non-Windows
- PR #3915: Revive TypeInferenceTests from NRefactory and cover the C# standard inference rules
- PR #3912: Revive NRefactory conversion tests and cover all of C# standard chapter 10
- PR #3907: Generate version-info files with CRLF on all platforms
Contributions
- PR #3903: Provide a WholeProjectDecompiler constructor with no default parameter values — @ds5678, thank you!
- PR #3934: Publicize
IProjectFileWriterimplementations — @ds5678, thank you! - PR #3910: Fix #3909: emit nullable override disambiguators — @sailro, thank you!
- PR #3911: Fix #3908: use the async iterator element type for yield — @sailro, thank you!
- PR #3896: Fix #3895: keep byref-like ToString in string concatenation — @sailro, thank you!
- PR #3893: Fix #3892: preserve unsafe for pointer constructors — @sailro, thank you!
Bug Fixes
- PR #3949: Fix #3803: Crash on nested deconstruction of custom structs
- PR #3947: Fix #3230: do not emit base-list interfaces the base list cannot name
- PR #3948: Fix #3652: Apostrophe in identifiers must not start a char literal
- PR #3929: Fix #2032: avoid propagating mutated SROA fields
- PR #3942: Fix #3938: nested-type members must not inherit ExtensionInfo
- PR #3916: Fix #1603: recognize foreach over enumerators that cannot be disposable
- PR #3905: Fix #1638: identify renamed yield state machine members via method impls
- PR #3898: Fix #3891: don't reduce nesting when there is no else block
- PR #3886: Fix #3858: Detect automatic events on the ILAst instead of the C# AST