Download Latest Version ILSpy_binaries_10.0.0.8330-arm64.zip (4.9 MB)
Email in envelope

Get an email when there's a new version of ILSpy

Home / v10.0
Name Modified Size InfoDownloads / Week
Parent folder
ILSpy_selfcontained_10.0.0.8330-x64.zip 2026-04-06 76.4 MB
ILSpy_Installer_10.0.0.8330-x64.msi 2026-04-06 3.9 MB
ILSpy_Installer_10.0.0.8330-arm64.msi 2026-04-06 3.9 MB
ILSpy_binaries_10.0.0.8330-x64.zip 2026-04-06 4.1 MB
ILSpy_binaries_10.0.0.8330-arm64.zip 2026-04-06 4.9 MB
ILSpy.AddIn.VS2022_10.0.0.8330.vsix 2026-04-06 11.8 MB
ILSpy.AddIn.VS2017-2019_10.0.0.8330.vsix 2026-04-06 5.2 MB
ILSpy 10.0 source code.tar.gz 2026-04-04 2.3 MB
ILSpy 10.0 source code.zip 2026-04-04 3.9 MB
README.md 2026-04-04 7.7 kB
Totals: 10 Items   116.5 MB 182

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 [#3641]by @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.

Source: README.md, updated 2026-04-04