ILSpy 9.x is based on .NET 8.0. All artifacts except the self-contained distribution are built framework-dependent, which means .NET 8.0 must be installed prior to starting ILSpy.
Breaking Changes in ICSharpCode.Decompiler
- Remove
IsRef
,IsOut
andIsIn
flags fromIParameter
- Replace
ParameterModifiers
withReferenceKind
.
New Language Features
- Update pattern detection to Roslyn 4.11.0
- Support types that provide DisposeAsync without implementing IAsyncDisposable.
- Add support for C# 12 primary constructors.
- Add support for C# 12 'ref readonly' parameters
Contributions
- Add smooth scrolling to settings panels and DecompilerTextView (see #3244 by @tom-englert)
- Decompiler Settings: Checkbox in group header does not reflect state of the group (see #3252 by @tom-englert)
- Various WPF-related refactorings by @tom-englert (see #3257, #3266, #3274, #3283, #3285, #3291, #3292, #3294, #3295, #3297, #3298, #3299, #3302, #3308 and #3314)
- Ignore empty version directories of dotnet (#3265 by @Herrmel)
- Fix Derived Types Node always being empty (#3280 by @Applesauce314)
Enhancements
- Allow running tests on ARM64 (see #3231)
- Alow collecting analyzers annotated with
ExportAnalyzerAttribute
(see #3239) - Fix #3237: Use ref readonly locals for
readonly.ldelema
- Fix #3001: Support new resources format in ResourcesFile/ResXResourceWriter
- Fix #3134: Include
newobj
,initobj
andcall
instructions inTypeInstantiatedByAnalyzer
- Fix #3089: Add comment regarding .constraint prefix expressed as cast in C#
Bug fixes
- Fix #3209: Ensure using directives are added for extension methods in higher level patterns such as: foreach ->
GetEnumerator()
, collection initializer ->Add()
and deconstruction ->Deconstruct()
. - Fix #3255: Ignore exceptions while decoding sequence point blobs.
- Fix #2166: Unnecessary uint casts/conversions for certain bitwise operations
- Fix #3310: Filter out copy-constructor only if it's an actual record type.
And many other fixes, for a full list click here.