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.2 or newer minor release must be installed prior to starting ILSpy.
New Language Features
- C# 11: Required members
- Updated pattern detection for Roslyn 4.4.0
Contributions
- Add option to always fully qualify type names with
global::
(see #2762 by @hexafluoride) - Refresh ready to run for .NET 7 (see #2774 by @cshung)
- Fix #2736: ILSpy decides to fully qualify type name when it is not necessary (see #2789 by @ElektroKill)
- Fix initialization of FakeProperty with setter (see #2792 by @exyi)
- Add progress reporting to PortablePdbWriter (see #2802 by @andrewcrawley)
- Include assembly name in decompiled code (see #2810 by @miloush)
- Add
IEntityProcessor
toReflectionDisassembler
(see #2835 by @tom-englert) - Fix dynamic type index calculation in
ApplyAttributeTypeVisitor
(see #2840 by @ElektroKill) - Add support for another
using
pattern (see #2841 by @ElektroKill) - Fix debug assertion regarding using directives (see #2843 by @ElektroKill)
- Add support for VB cached delegate initialization (see #2844 by @ElektroKill)
- Add support for VB auto events (see #2845 by @ElektroKill)
- Add support for lock statements within yield return state machines (see #2846 by @ElektroKill)
- Add support for VB async state-machines (see #2853 by @ElektroKill)
- Enable various passing ignored tests (see #2852 and #2854 by @ElektroKill)
- Improve support for post-increment/decrement on pointers (see #2856 by @ElektroKill)
Enhancements
- Various performance improvements in the type system and decompiler engine. (see #2766 and #2754)
- Support native ints in "Combine bit.and into shift" transform
- #2780: Show embedded resource size
Bug fixes
- Fix #2759: Some characters cause rendering issues in the tree view causing ILSpy to freeze. Also ignore embedded resources with an invalid offset, treat them as having zero byte length.
- Fix #2763: Improve decompilation of switch-on-enum by preserving enum type information when inlining local variables into SwitchInstruction.Value.
- PDB generation: Use row ID instead of token in AsyncDebugInfo blob.
- Fix #2806: Do not use implicitly typed out variables, if argument and parameter types do not match exactly.
- #2823: Introduce IType.GetDefinitionOrUnknown() to allow better detection of async state-machines involving unknown types.
- Fix #2825: Missing whitespace after new()
- Fix #2827: Allow users to enter search queries that match our prefixes.
WholeProjectDecompiler
: Fix #2830: Can't decompile project with / in resource name on Windows- Fix #2831: Popup/Tooltip scaling on multi-monitor multi-DPI setups.
WholeProjectDecompiler
: Fix #2850: Make sure that type names longer than 255 characters are handled correctly.
And many other fixes, for a full list click here.