| Name | Modified | Size | Downloads / 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 structconstraint - C# 14:
extensionmembers - [#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
ckfiniteIL 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.CreateDecompilerprotected 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)
TargetFrameworkandTargetServicesAPIs 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
inerroneously being applied tothis(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 structconstraint (see [#3537] by @jjonescz) - Allow passing an
IDecompilerTypeSystemrather than aDecompilerTypeSystemtoCSharpDecompiler(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>()tonew 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)toflags(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
ResolvedUsingScopetoUsingScope - Removed legacy
ToTypeReference - Removed
ITypeReferenceand 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
FixLoneIsInstwith 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
UseRefLocalsForAccurateOrderOfEvaluationis 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.InitializeArrayis malformed.
And many other fixes, for a full list click here.