Skip to content

ILSpy 8.0

Compare
Choose a tag to compare
@christophwille christophwille released this 21 May 10:16
· 501 commits to master since this release

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+ must be installed prior to starting ILSpy.

Note - none of the following lists are exhaustive except of course the first one:

New Language Features

  • C# 10: record structs
  • C# 11: Required members
  • C# 11: ref fields
  • C# 10: Support DefaultInterpolatedStringHandler
  • Output attributes on lambda expressions
  • Updated pattern detection for Roslyn 4.4.0

Contributions

  • More themes - Light/Dark are the original ones, R# & VS Code added (see #2906 and #2931 by @ltrzesniewski)
  • Improve selected text highlighting (see #2938 by @Konctantin)
  • Namespace nesting in ILSpy tree view (based on code provided by @ds5678 in #2667)
  • ilspycmd received support for the "nested directories" option on project export. (see #2636 by @GreyXor)
  • ilspycmd support for generating a solution from multiple projects (based on code provided by @marwie in #2364)
  • Fix the ordering of COM interface methods, properties, and events to appear in their originally defined order (see #2639 by @zhuman)
  • 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 crash target framework detection with C++/CLI (see #2698 by @kant2002)
  • Add option to always fully qualify type names with global:: (see #2762 by @hexafluoride)
  • Fix #2736: ILSpy decides to fully qualify type name when it is not necessary (see #2789 by @ElektroKill)
  • Add progress reporting to PortablePdbWriter (see #2802 by @andrewcrawley)
  • Add IEntityProcessor to ReflectionDisassembler (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)
  • Add support for record structs in CSharpAmbience (see #2911 by @ElektroKill)
  • Add support for Visual Basic Yield Return state machine decompilation (see #2874 by @ElektroKill)
  • Fix ResXResourceWriter support for MemoryStream resource element (see #2895 by @ElektroKill)
  • Use .interfaceimpl type syntax (see #2903 by @ltrzesniewski)
  • Fix empty parameter names in delegate declarations (see #2912 by @ElektroKill)
  • Support disassembling ReadyToRun binaries compiled using composite mode (see #2944 by @cshung)
  • Make return duplication in ControlFlowSimplification less aggressive (see #2972 by @ElektroKill)
  • Show a dark title bar when a dark theme in ILSpy is selected (see #2948 by @tom-englert)
  • Consider constructor type when lifting decimal constants (see #2953 by @ElektroKill)
  • Extend EliminateRedundantTryFinally in ReduceNestingTransform (see #2959 by @ElektroKill)

Enhancements

  • Move Settings to ILSpyX (see #2869). Additionally, many platform-independent APIs have been moved to ICSharpCode.ILSpyX since Preview1. ILSpyX is published as a standalone NuGet package for others to reuse.
  • Performance optimization of analyzers (see #2643)
  • Various performance improvements in the type system and decompiler engine. (see #2766 and #2754)
  • #2684: Iteratively unhide compiler-generated code, if it is referenced by user-code
  • Support native ints in "Combine bit.and into shift" transform
  • #2780: Show embedded resource size
  • Use Unsafe.SizeOf when taking the size of a managed type

Bug fixes

Please see the release notes for Preview1 to RC1 for details or, for a full list of changes click here.