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.x or later must be installed prior to starting ILSpy. Note that ILSpy 9.1 also allows a later runtime via #3391.
New Language Features
- Update pattern-detection to Roslyn 4.13
Enhancements
- #1572: Do not generate variable names that match C# keywords.
- #2716: Add an option to allow sorting custom attributes
- #3377: Extend error information if multiple assemblies with the same (short) name are selected when creating a solution file.
- #3393: Option to turn off smooth scrolling
- #3399: Add module filename as ToolTip of AnalyzerEntityTreeNode
- #3440: Added support for evaluation-order-preserving reference type check
- #3316: Add "variable scopes" to improve naming local variables and anonymous method parameters
Contributions
- Add support for array initialization based on
RuntimeHelpers.CreateSpan<T>
(see #3380 by @ds5678) - Load resource stream outside of delegate (see #3389 by @snorrk)
- Allow ILSpy to launch, when net8.0 is not installed, but a later version (see #3391 by @nil4)
- Fix nested namespace directories (see #3449 by @ds5678)
- Fix #3402: System.NullReferenceException on right click on .NET 9 (see #3403 by @tom-englert)
- Add an option to turn off smooth scrolling (see #3405 by @tom-englert)
- Use type hint in pointer arithmetic (see #3413 by @ds5678)
- Improve UI for primary constructors on non-record types (see #3455 by @ds5678)
- Fix exception when writing resx files without adding any resources (see #3418 by @jwfx)
- Enhance null handling in switch transformations (see #3422 by @ds5678)
- Don't include generic constraints in generated explicit overrides (see #3443 by @ds5678)
- Improve generation of not equals check (see #3425 by @ElektroKill)
Bug fixes
- Fix #2269: LocalFunctionDecompiler misplaces nested local functions in ctors
- Fix #3322: Add missing checks for equality comparison
- Fix #3378: Navigation shortcuts (Alt-Left and Alt-Right) don't work when TreeView has focus
- Fix #3381: Make sure that selectedNode is still selected when focus is deferred in IsActive property changed handler.
- Fix #3383: more aggressively transform object initializers on structs
- Fix #3384: add special case for null-literal conversions in optional argument handling.
- Fix #3385: Allow address uses of structs in using transform, if the reference is passed to an in parameter.
- Fix #3392: uses of init-setters must use object-initializer syntax.
- Fix #3401: Multiple problems when exporting an assembly as project
- Fix #3414: Apply latest session settings before saving upon closing the main window
- Fix #3342: Wrong null check in MethodVirtualUsedByAnalyzer
- Fix #3450: Fix "Clear assembly list" not actually persistent.
- Fix #3432: Do not include delegate construction use-sites in DetermineCaptureAndDeclarationScopes.
- Fix attributes tooltip of GenericParam metadata table
And many other fixes, for a full list click here.