ILSpy 8 is based on .NET 6.0 compared to .NET Framework 4.7.2 for the previous generations of ILSpy. All artifacts except the self-contained distribution are built framework-dependent, which means .NET 6.0 must be installed prior to starting ILSpy.
New Language Features
- C# 11: ref fields
- C# 10: record structs
- C# 10: Support DefaultInterpolatedStringHandler
- Updated pattern detection for Roslyn 4.3.0
- Output attributes on lambda expressions
Contributions
- Allow user to provide ID when generating a PDB (see #2678 by @andrewcrawley)
- Assume conventionally named unresolved method references are properties or events (see #2677 by @fowl2)
- Add EnableWindowsTargeting propery to csprojs targeting net6.0-windows (see #2752 by @clin1234)
- Reduce allocations in TransformArrayInitializers (see #2731 by @ElektroKill)
- Fix allowed language versions in
ilspycmd
(see #2703 by @superstrom) - Fix crash target framework detection with C++/CLI (see #2698 by @kant2002)
Enhancements
- #2684: Iteratively unhide compiler-generated code, if it is referenced by user-code
- Use
Unsafe.SizeOf
when taking the size of a managed type - #2718: Move XAML files that have an x:Class declaration next to their C# counterparts when using WholeProjectDecompiler
Bug fixes
- #2691: Do not use AssemblyDefintion.GetAssemblyName(). This fails in culture-invariant mode (ilspycmd) when trying to work with satellite assemblies, because System.Reflection.AssemblyName tries to retrieve CultureInfo of the assembly culture
- #2733: Ignore bad metadata when trying to resolve ResolutionScope
- #2741: CallBuilder produces invalid invocation target when disambiguating calls to protected methods
And many other fixes, for a full list click here.