github icsharpcode/ILSpy v10.0
ILSpy 10.0

5 hours ago

PSA We DO NOT own the domain ilspy dot org See #3709

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

New Language Features

  • C# 13: allows ref struct constraint
  • C# 14: extension members
  • #3467: C# 12 InlineArrays
  • Update pattern detection to Roslyn 5.0 RTM
  • #3500: Added .NET 10 as test target

User Interface

  • Dedicated UI and Decompiler APIs for C# 14 extensions #3680
  • Navigate visible history (see #3591 by @miloush)
  • Removed translations (see #3648)
  • #3521: Add API to set an initially highlighted entity after navigation
  • Improve WordBreak in CustomDialog (see #3535 by @CreateAndInject)
  • Use AssemblyWarning when AssemblyReference load faulted (see #3013 by @workgroupengineering)
  • Refactoring of EntityToString API (see #3635)

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)
  • #3519: Add API diff feature. Please see the PR for how this feature works.
  • #3494: Add dynamic ILSpy settings options to ILSpyCmd
  • #3489: Make WholeProjectDecompiler.CreateDecompiler protected virtual to make the decompilation pipeline extensible.

Contributions

  • Allow extracting multiple package entries (see #3508 by @CreateAndInject)
  • Render operating system name as well as architecture if present (see #3653 by @MatthewSteeples)
  • Improve decompilation of unmanaged function pointers (see #3620 by @ds5678)
  • Improve decompilation of pre-increment operators (see #3472 by @ds5678)
  • Support batch PDB generation (see #3619 by @sonyps5201314)
  • TargetFramework and TargetServices APIs are now public (see #3501 by @nikitalita)
  • Allow creating a MetadataFile with a MetadataReader / MetadataStringDecoder (see #3487 by @lordmilko)
  • Add configuration option to check for overflow and underflow (see #3484 by @ds5678)
  • Support disassembling single file bundle for ILSpy (see #3398 by @cshung)
  • Refactor for cross platform port (see #3641by @lextm)
  • Fix in erroneously being applied to this (see #3682 by @nikitalita)
  • Update TransformCollectionAndObjectInitializers to check for init-only properties (see #3678 by @nikitalita)
  • Fix PowerShell PostBuild failing when solution path contains spaces (see #3669 by @Myself-Bloons)
  • Replace FileVersionInfo.GetVersionInfo with DecompilerVersionInfo.Version constant (see #3667 by @MattParkerDev)
  • 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)
  • Fix #3462: Scrolling with scroll wheel breaks after using file search (see #3538 by @tom-englert)
  • 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)
  • Add an option to not transform Activator.CreateInstance<T>() to new T() (see #3497 by @DoctorKrolic)
  • Fix stack overflow exception in CSharpResolver (see #3471 by @ds5678)
  • Handle explicit optional parameter after default parameter (see #3470 by @ds5678)
  • Fix disassembler output, correcting flag(NUM) to flags(NUM) (see #3473 by @hez2010)
  • Fix null reference exception when writing resource files (see #3474 by @ds5678)
  • Fix SDK-style (modern) inter-project references (see #3502 by @petercrabtree)
  • Fix incorrect method match for static methods with instance signature (see #3504 by @MSchmoecker)

API Clean-up

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

Performance

  • #3486: Remove XML serialization from DecompilerSettings in ILSpy

Bug fixes

  • Fix #3655: ExtractPackageEntryContextMenuEntry
  • Fix #3684: Hide compiler-generated base-class forwarding accessor methods
  • Fix #3674: Incorrect derived types shown, when generic type inherit from non-generic type with the same name.
  • Fix #3671: TransformCollectionAndObjectInitializers mistakenly included trailing variable initialization.
  • 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.
  • Fix #3464: Missing cast in interpolated string
  • Fix #3482: Drag and Drop is no longer working in the Assemblies tree view.
  • Fix #3492: Do not crash, if field used by RuntimeHelpers.InitializeArray is malformed.

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

Don't miss a new ILSpy release

NewReleases is sending notifications on new releases.