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 or later must be installed prior to starting ILSpy.
Breaking Changes
- ICSharpCode.Decompiler: Added
MetadataFile
base class forPEFile
- ICSharpCode.Decompiler:
IModule.PEFile
is now namedIModule.MetadataFile
- ICSharpCode.Decompiler/ILSpyX: Added
IFileLoader
API to allow for easier extensibility of supported file formats (see #3191) - ILSpy: Split BAML decompiler into library and add-in (see #3178)
- ILSpy/ILSpyX: Moved non-UI analyzer API to ILSpyX (see #3186)
- ICSharpCode.Decompiler:
IProjectFileWriter
andIProjectInfoProvider
APIs are now public (see #3151 and #3191)
Performance
- Activate Dynamic Adaptation To Application Sizes (DATAS) (#3122).
- RDP hardware acceleration (#3122): Enabling hardware acceleration for Remote Desktop Protocol (RDP) to boost performance.
New Language Features
- Update pattern-detection to Roslyn v4.9.2
- Added support for switch on
(ReadOnly)Span<char>
using a compiler-generated hash function. - Added new
a.GetValueOrDefault(b) -> a ?? b
transform for side-effect-free default values.
Enhancements
- Added support for reading standalone ECMA-335 metadata (portable PDB and other metadata blobs) (see #3149)
- Added support for reading WebCIL assemblies (IL embedded in WASM) (see #3184)
- #3118: Add "Clear assembly list" menu item.
- #2893: Add option to disable automatic assembly loading.
- IL output: Add indentation level to make it easier to see custom attributes belonging to interface implementations.
- IL output: Print metadata token of custom attribute.
Contributions
- Fix metadata display of
DynamicLocalVariable
andDefaultNamespace
custom debug information (#3111, @ElektroKill) - Read and use tuple element names and dynamic type information from PDBs (#3114, @ElektroKill)
- Adjust colors of AvalonEdit built-in highlightings for dark themes (#3138, @ltrzesniewski)
- Bugfix: infinite loop in
DetermineEffectiveAccessibility
(#3164, @yzdeveloper) - TreeView: Add referenced types, members and exported types under references (#3092, @fowl2)
- Add support for
Mono C# compiler 2.6.4
pinned region with array variable (#3110, @ElektroKill)
Bug fixes
- Fix #3072: Ignoring resources with the same name as a namespace.
- Fix bug in
UnknownType
: Ensuring that the FullName of nested unknown types contains the outer type name(s), not just the namespace and nested type name. - Fix #3153: Always using SHA1 for public key tokens.
- Fix ILSpy for ZIP files/VSIX with bundle signatures: Enabling ILSpy to open ZIP files and VSIX packages containing bundle signatures.
- Omit package entries from the treeview that denote the directory.
- Fix #3142: Exception when analyzing source of library with global assembly attributes
- Fix #3113: Remove GetAlternativeName and instead reuse existing names, if there are no conflicts.
And many other fixes, for a full list click here.