github icsharpcode/ILSpy v10.0-preview2
ILSpy 10.0 Preview 2

one day ago

This preview release is based on .NET 10.0. Please make sure that you have it installed on your machine beforehand.

New Language Features

  • Update pattern detection to Roslyn 5.0 RTM
  • C# 13: allows ref struct constraint
  • C# 14: extension members

Enhancements

  • CSharpConversions: General improvements, fixing various missing rules for C# up to version 9.
  • #3344: Support ckfinite IL opcode in decompiler
  • #3563: Disassembler: Add support for ildasm /caverbal format
  • Detection of records and primary constructors: various bugfixes and improvements. (Special thanks to @sonyps5201314 and @mmusu3)

User Interface

Contributions

  • Allow extracting multiple package entries (see #3508 by @CreateAndInject)
  • Support allows ref struct constraint (see #3537 by @jjonescz)
  • Allow passing an IDecompilerTypeSystem rather than a DecompilerTypeSystem to CSharpDecompiler (see #3529 by @lordmilko)
  • Add DecompilerSettings.ExpandParamsArguments (see #3534 by @MSchmoecker)
  • Add DecompilerSettings.AlwaysMoveInitializer: Always move initializer from static constructor to field initializer (see #3540 by @miloush)
  • Improve decompilation of unmanaged function pointers (see #3620 by @ds5678)
  • Improve decompilation of pre-increment operators (see #3472 by @ds5678)
  • Fix #3462: Scrolling with scroll wheel breaks after using file search (see #3538 by @tom-englert)
  • Support batch PDB generation (see #3619 by @sonyps5201314)
  • Fixes for primary constructors (see #3614 by @mmusu3)
  • Improve inlining of boxed values (see #3587 by @ds5678)
  • List name first in ILSpy title for multiple instances (see #3589 by @miloush)
  • Improve Framework Id detection (see #3581 by @ds5678)
  • Enable detection of .NET version without TargetFrameworkAttribute (see #3580 by @ds5678)
  • Do not create object initializers for tuples (see #3579 by @ds5678)
  • Fix lower case type name conflicting with variable name (see #3572 by @ds5678)
  • Fix regression in decompiling local functions with default parameters (see #3560 by @ds5678)
  • Copy-propagate the stack slot for collection initializers (see #3554 by @ds5678)
  • Normalize UTF-8 BOM Marks and ps1 Indention (see #3546 by @petercrabtree)
  • Minor Dev Environment Fixes (.editorconfig cleanup, typo fix, .gitignore tweak) (see #3544 by @petercrabtree)
  • Replace GeneratePdbForAssembly with GeneratePdbForAssemblies to improve user experience and remove redundant code. (see #3630 by @sonyps5201314)
  • Fix the issue where PDBs generated by ILSpy do not match (see #3629 by @sonyps5201314)
  • Do not use ObservableObject when ObservableObjectBase is sufficient. (see #3644 by @tom-englert)

API Clean-up

  • Removed legacy UnresolvedUsingScope
  • Renamed ResolvedUsingScope to UsingScope
  • Removed legacy ToTypeReference
  • Removed ITypeReference and implementations

Bug fixes

  • Fix #3524: Property without backing field cannot have an initializer.
  • Fix #3512: Local function name collides with local variable name
  • Fix #2165: DeclareVariables step must update ResolveResult annotation when using out var.
  • Fix #3518 by replacing FixLoneIsInst with an inlining restriction.
  • Fix #3465: Operator '>' cannot be applied to operands of type 'X' and 'X'
  • Fix #3468: Try harder to avoid ref locals if UseRefLocalsForAccurateOrderOfEvaluation is not enabled.
  • Fix #3323: Simplify cleanup in AwaitInFinallyTransform, ensuring that we do not miss any containers.
  • Fix #1873: Clear ILRange in CopyPropagation
  • Fix #1789: missing hyperlink for MethodGroupResolveResult.
  • Fix #3476: Scroll position not restored when navigating back
  • Fix #3545: Covariant return not detected for abstract override property
  • Fix #3549: Do not crash on encountering nil tokens.
  • Fix #3543: Missing parentheses around field assignment expression in list initializers
  • DebugDirectoryTreeNode: AddressOfRawData and PointerToRawData columns should use hex display.
  • DebugDirectoryTreeNode: PointerToRawData was always showing 0 and AddressOfRawData was showing the wrong value.
  • Fix #3577: Properly infer the switch governing type and preserve conversions
  • Fix #3626: Do not emit named arguments for bool constants, if it causes the call to become ambiguous.
  • Fix #3612: WholeProjectDecompiler.CleanUpName does not count bytes on Unix.

And many other fixes, for a full list click here.

Don't miss a new ILSpy release

NewReleases is sending notifications on new releases.