Skip to content

Bump ICSharpCode.Decompiler from 8.0.0.7345 to 11.1.0.9782 - #736

Open
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/nuget/ICSharpCode.Decompiler-11.1.0.9782
Open

dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/nuget/ICSharpCode.Decompiler-11.1.0.9782

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Pinned ICSharpCode.Decompiler at 11.1.0.9782.

Release notes

Sourced from ICSharpCode.Decompiler's releases.

11.1

A major focus of this release was to find the small (and not so small) bugs of the decompiler via a revamp of our testing by adding two new tools that allow mass-testing (for more information see TestTools/README.md):

  • nugetfuzz: downloads packages from nuget.org and runs them through a DEBUG build of ilspycmd (sanity checks/assertions enabled). It records: crash, assertion fail, warnings in the decompiler output (as comment "IL_<nnnn>: ...") as well as any residue of compiler-generated identifiers in C# code (hints at missing language feature/pattern support).
  • decompdiff: runs an assembly through two different versions of the decompiler (driven via ilspycmd) and calculates a diff of the generated source code.

You should see better decompilation results as an effect of this push and the general push of fixing previously reported decompiler bugs by users.

New Language Features

  • PR #​4014: Emit C# 7.1 default literals where the context supplies the type
  • PR #​3930: Decompile C# 14 implicit span conversions (first-class span types)
  • PR #​3975: Fix #​3624: decompile semi-auto properties with the C# 14 field keyword

User Interface

  • PR #​4039: Fix five Avalonia UI regressions: mouse navigation, derived types, Enter, Delete, Analyze in the Analyzer pane
  • PR #​4056: Fix #​4054: Accept drops from sources that do not permit the Move effect
  • PR #​4150: Fix #​4146: keep Options section names readable on hover
  • PR #​3998: Fix #​3996: edit the display font size in points, not pixels
  • PR #​4154: Fix #​3526: show WPF resource entry names unescaped
  • PR #​4139: Scroll a node's new children into view when it is expanded
  • PR #​4129: Reject the name of an existing list in the assembly list prompt
  • PR #​4116: Fix #​2093: find a navigation target in a reference assembly too
  • PR #​4117: Empty the panes when the assembly list is cleared
  • PR #​4044: Fix #​4040: Compose accessibility and static overlays onto search result icons
  • PR #​4025: Fix package search and navigation follow-ups from #​4023
  • PR #​3997: Fix #​3993, #​3994: main-menu shortcuts and dark-mode hover tooltips
  • PR #​4002: Give dark-theme syntax colors a perceptual contrast floor
  • PR #​3989: Prevent double dark conversion of syntax colors
  • PR #​3988: Keep the editor zoom separate from the configured font size

Contributions

  • PR #​4133: Remove the delegate cache left by a discarded method-group conversion — @​dualfroz, thank you!
  • PR #​4134: Recognize a VB exception filter's type test — @​dualfroz, thank you!
  • PR #​4053: Handle unresolved value-type call targets — @​sonyps5201314, thank you!
  • PR #​4022: Improve floating-point fraction and negative constant reconstruction — @​SychicBoy, thank you!
  • PR #​3897: Fix #​3894: keep lambda parameter typing consistent — @​sailro, thank you!
  • PR #​3888: Fix #​3853: infer scoped locals from ref safety — @​sailro, thank you!
  • PR #​3887: Model scoped and UnscopedRef lifetimes in the type system — @​sailro, thank you!
  • PR #​3980: Keep instance-dependent assignments in constructors — @​sailro, thank you!

Performance

  • PR #​4156: Keep the UI responsive while searching and drawing reference nodes
  • PR #​4106: Read the file system once per reference closure, not per reference
  • PR #​4023: Search inside packages without stalling, and navigate to what it finds

Enhancements

... (truncated)

11.0

The major news item of this release cycle is us porting ILSpy from WPF to Avalonia. With this port, ILSpy is now available on Linux and Mac in addition to Windows. Do note that there is no longer a WPF frontend, it was entirely removed in favor of the new Avalonia one.

Aside from this already major UI work, a few other long-standing UI features from our wish list made it into ILSpy:

  • File / Open from NuGet feed
  • File / Open from running process (all platforms!)
  • Window / Bookmarks (full-featured bookmarks implementation for the decompiled C# view)
  • View / Options / Display / Show Omnibar (breadcrumb/search bar feature at the top of decompiled code)

A second focus area was improving the ilspycmd story for agentic development. Download numbers for our dotnet tool took off in the last quarter of 2025, and agents like Claude are the reason for that (downloads are now exceeding 70k/week). Given we are using Claude as well, we found a few areas lacking that needed improvement, especially to save on token spend:

  • PR #​3924: ilspycmd: add --member for single-member decompilation
  • PR #​3801: Fix #​3797: resolve ilspycmd -t type names with fuzzy matching
  • PR #​3951: Add --dump-table metadata dump mode to ilspycmd

Together with list/extract embedded resources, decompile BAML to XAML which shipped in 10.1, we now have a good set of optimized options for the most common scenarios in skills and tool calling available for you.

A part of this initiative was hardening:

  • PR #​3843: Bound XamarinCompressedFileLoader against crafted XALZ headers
  • PR #​3842: Bound WebCilFile section access against mapped-view length
  • PR #​3841: Harden BAML reader against crafted-resource crashes
  • PR #​3840: Bound .rsrc resource-tree parsing against crafted input
  • PR #​3838: Guard against OOB read when bundle signature is at file start

The third pillar of this release is fixing long-standing annoyances and in general investing in tech debt, eg fuzzing our decompiler engine with NuGet packages. A lot (!) of the changes detailled in the release notes for preview 1 and rc deal with exactly those many small to big improvements.

Finally, we'd like to point out one retirement: the VS2017/2019 add-in has been removed, we continue to support VS2022-2026.

What is new since RC?

  • PR #​3976: Fix #​3451: qualify an explicit implementation as the type implements it
  • PR #​3971: Fix #​3510: keep exporting a project when a member cannot be decompiled
  • PR #​3969: Keep null-conditional LINQ chains in method syntax — @​sailro, thank you!
  • PR #​3970: Generate DecompilerSettings boilerplate from [DecompilerSetting] attributes
  • PR #​3967: Keep ref-returning switches as statements — @​sailro, thank you!
  • PR #​3950: Reconstruct nested deconstruction designations
  • PR #​3956: Fix #​3952: decompile VB.NET anonymous types and queries to valid C#
  • PR #​3959: Fix overflow approximating fractions of large negative constants
  • PR #​3960: Fix overflow computing the element count of a multi-dim array initializer
  • PR #​3961: Recognize a protected copy constructor on a sealed record
  • PR #​3958: Fix crash decompiling reference assemblies with stripped method bodies
  • PR #​3955: Fix #​3954: name the entry point of a top-level program 'Main'

For a full list of changes click here.

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

Note for Mac users: see https://github.com/icsharpcode/ILSpy/wiki/Build-Artifacts#running-the-macos-artifact because the ILSpy.app is neither signed nor notarized.

11.0-rc

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

Note for Mac users: see https://github.com/icsharpcode/ILSpy/wiki/Build-Artifacts#running-the-macos-artifact because the ILSpy.app is neither signed nor notarized.

New Features

  • PR #​3936: Add "Open from running process" dialog
  • PR #​3951: Add --dump-table metadata dump mode to ilspycmd
  • PR #​3924: ilspycmd: add --member for single-member decompilation

User Interface

  • PR #​3932: Metadata row details: full-width layout and a decompiler-styled editor for text blobs
  • PR #​3927: Fix #​2879: show stored FieldList/MethodList values for memberless types
  • PR #​3922: Fix #​749: toggle a member's fold together with its documentation
  • PR #​3923: Fix #​781: click highlights member references, Ctrl+Click navigates
  • PR #​3918: Fix #​633: Overrides analysis and this/base keyword navigation
  • PR #​3906: Show hover tooltips for dynamic member accesses

Enhancements

  • PR #​3933: Convert float/double += 1 into increment and decrement expressions
  • PR #​3926: Generate and resolve xml doc ID strings at the metadata level
  • PR #​3917: Represent VB.NET parameterized properties as accessor methods in C# output
  • PR #​3899: Don't undo the compiler's &&-to-& optimization
  • PR #​3889: Reimplement cross-platform single-instance handling
  • PR #​3904: Proper event tracing for ICSharpCode.Decompiler and ICSharpCode.ILSpyX
  • PR #​3902: Beautify enum declarations by referencing previously declared members

Testing / Infrastructure

  • PR #​3943: Do not pass /shared to compilers that cannot reach a compiler server
  • PR #​3941: Skip redundant push builds for branches with an open PR
  • PR #​3928: Add pretty test for C# 13 ref struct interfaces / allows ref struct
  • PR #​3919: Preserve Debug Steps tree state across filter sessions
  • PR #​3914: Support Roslyn 1.x/2.x compiler configurations in tests on non-Windows
  • PR #​3915: Revive TypeInferenceTests from NRefactory and cover the C# standard inference rules
  • PR #​3912: Revive NRefactory conversion tests and cover all of C# standard chapter 10
  • PR #​3907: Generate version-info files with CRLF on all platforms

Contributions

  • PR #​3903: Provide a WholeProjectDecompiler constructor with no default parameter values — @​ds5678, thank you!
  • PR #​3934: Publicize IProjectFileWriter implementations — @​ds5678, thank you!
  • PR #​3910: Fix #​3909: emit nullable override disambiguators — @​sailro, thank you!
  • PR #​3911: Fix #​3908: use the async iterator element type for yield — @​sailro, thank you!
  • PR #​3896: Fix #​3895: keep byref-like ToString in string concatenation — @​sailro, thank you!
  • PR #​3893: Fix #​3892: preserve unsafe for pointer constructors — @​sailro, thank you!

Bug Fixes

... (truncated)

11.0-preview1

[!WARNING]
We DO NOT own the domain ilspy[.]org See #​3709
Download ILSpy only from GitHub Releases!

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

Note for Mac users: see https://github.com/icsharpcode/ILSpy/wiki/Build-Artifacts#running-the-macos-artifact because the ILSpy.app is neither signed nor notarized.

Avalonia Cross Platform Port

  • PR #​3755: Avalonia 12 Port and Removal of the WPF UI
  • PR #​3759: Metadata explorer cleanup, flags-filter fixes, and WPF row-details parity
  • PR #​3766: Round-trip the legacy WPF SessionSettings shape
  • PR #​3768: Build, test, and package ILSpy on Linux and macOS in CI
  • PR #​3861: Show text-based resources inline with syntax highlighting
  • PR #​3875: Avalonia 12.1
  • PR #​3876: Keep BAML decompilation working when WPF assemblies are missing

New Features

  • PR #​3847: Unpack !AvaloniaResources into per-file resource tree nodes
  • PR #​3801: Fix #​3797: resolve ilspycmd -t type names with fuzzy matching
  • PR #​3789: Add a bookmarks feature for the decompiled C# view
  • PR #​3786: Add omnibar breadcrumb and search bar above the decompiled code
  • PR #​3769: Make the override modifier a link to the overridden member
  • PR #​3762: Add Open from NuGet feed dialog for browsing and opening packages

User Interface

  • PR #​3857: Fix #​2078: Generic local functions not highlighted properly
  • PR #​3855: Fix #​3845: Add option to expand XML documentation comments
  • PR #​3814: Toggle the fold under the right-click, not at the caret
  • PR #​3812: Syntax-colour analyzer signatures with bold type names (#​2164)

Enhancements

  • PR #​3872: Decompile await on dynamic expressions
  • PR #​3837: Fix #​3804: decompile foreach over inline array
  • PR #​3791: Fix #​3777: decompile runtime async without a separate C# 15 setting
  • PR #​3843: Bound XamarinCompressedFileLoader against crafted XALZ headers
  • PR #​3842: Bound WebCilFile section access against mapped-view length
  • PR #​3841: Harden BAML reader against crafted-resource crashes
  • PR #​3816: Allow overriding an assembly's target framework for reference resolution
  • PR #​3840: Bound .rsrc resource-tree parsing against crafted input
  • PR #​3838: Guard against OOB read when bundle signature is at file start
  • PR #​3818: Display the IL 'tail.' prefix in C# output
  • PR #​3808: Migrate the VS extension to an SDK-style VSIX (dotnet build) and retire the VS2017/2019 add-in
  • PR #​3802: Fix #​3799 and three related stackalloc initializer decompilation defects
  • PR #​3780: Compute public-key tokens with a managed SHA-1
    ... (truncated)

10.1.1

[!WARNING]
We DO NOT own the domain ilspy[.]org See #​3709
Download ILSpy only from GitHub Releases!

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

Bug Fixes

  • Fix: Stop the assembly list from disposing removed assemblies

10.1

[!WARNING]
We DO NOT own the domain ilspy[.]org See #​3709
Download ILSpy only from GitHub Releases!

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

New Language Features

Enhancements

  • #​3730: List/extract embedded resources, decompile BAML to XAML in ilspycmd. This was added to address existing workarounds for decompilation skills.
  • #​3732: Reduce build warnings: lift IDisposable, fix CS9336 precedence bug, dispose evicted assemblies

Bug fixes

  • Fix #​3734: Search pane flickers when navigating to search result in large assembly
  • Fix #​3705: Code window is empty when select a .baml and refresh

For a full list of changes click here.

10.0.1

[!WARNING]
We DO NOT own the domain ilspy[.]org See #​3709
Download ILSpy only from GitHub Releases!

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

Bug fixes

  • Fix #​3723: InvalidCastException when navigating to Metadata -> Tables -> 00 Module node
  • Fix #​3718: Incorrect current line, when click on ResolutionScope link in 01 TypeRef table
  • Fix #​3711: InvalidCastException when "Loading..." node is selected
  • Fix #​3703: Primary constructor is public

Enhancements

  • #​3715: Add CompilerOptions.UseRoslyn4_14_0
  • #​3713: Use releaseTag with fallback to downloadUrl in updates.xml
  • #​3695: .NET 11 for Tests

For a full list of changes click here.

10.0

[!WARNING]
We DO NOT own the domain ilspy dot org See #​3709
Download ILSpy only from GitHub Releases!

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)
    ... (truncated)

10.0-preview3

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

Enhancements

  • Dedicated UI and Decompiler APIs for C# 14 extensions #​3680

Contributions

  • 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)
  • Render operating system name as well as architecture if present (see #​3653 by @​MatthewSteeples)
  • Refactor for cross platform port (see #​3641by @​lextm)

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.

For a full list of changes click here.

10.0-preview2

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

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

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
    ... (truncated)

10.0-preview1

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

New Language Features

  • #​3467: C# 12 InlineArrays
  • #​3500: Added .NET 10 as test target
  • #​3500: Added minimal language feature support to successfully detect new code patterns used in .NET 10

Enhancements

  • #​3519: Add API diff feature. Please see the PR for how this feature works, and in the collapsed region at the end of the release notes how such an API diff report could look like (full file is attached to release as ICSharpCode.Decompiler9.1to10Preview1Changes_ApiDiff.md).
  • #​3494: Add dynamic ILSpy settings options to ILSpyCmd
  • #​3489: Make WholeProjectDecompiler.CreateDecompiler protected virtual to make the decompilation pipeline extensible.

Contributions

  • Add configuration option to check for overflow and underflow (see #​3484 by @​ds5678)
  • Allow creating a MetadataFile with a MetadataReader / MetadataStringDecoder (see #​3487 by @​lordmilko)
  • Add an option to not transform Activator.CreateInstance<T>() to new T() (see #​3497 by @​DoctorKrolic)
  • TargetFramework and TargetServices APIs are now public (see #​3501 by @​nikitalita)
  • Support disassembling single file bundle for ILSpy (see #​3398 by @​cshung)
  • 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)

Performance

  • #​3486: Remove XML serialization from DecompilerSettings in ILSpy

Bug fixes

  • 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.

ICSharpCode.Decompiler Assembly Changes (API diff)

Changed Types

ICSharpCode.Decompiler.DecompilerSettings

Member Type Operation
Clone() : DecompilerSettings Method Removed
ParamsCollections : bool Property Added
UseObjectCreationOfGenericTypeParameter : bool Property Added
InlineArrays : bool Property Added
CheckForOverflowUnderflow : bool Property Added
Clone() : DecompilerSettings Method Added

... (truncated)

9.1

ILSpy 9.x is based on .NET 8.0. All artifacts except the self-contained distribution are built framework-dependent, which means .NET 8.0.x or later must be installed prior to starting ILSpy. Note that ILSpy 9.1 also allows a later runtime via #​3391.

New Language Features

  • Update pattern-detection to Roslyn 4.13

Enhancements

  • #​1572: Do not generate variable names that match C# keywords.
  • #​2716: Add an option to allow sorting custom attributes
  • #​3377: Extend error information if multiple assemblies with the same (short) name are selected when creating a solution file.
  • #​3393: Option to turn off smooth scrolling
  • #​3399: Add module filename as ToolTip of AnalyzerEntityTreeNode
  • #​3440: Added support for evaluation-order-preserving reference type check
  • #​3316: Add "variable scopes" to improve naming local variables and anonymous method parameters

Contributions

  • Add support for array initialization based on RuntimeHelpers.CreateSpan<T> (see #​3380 by @​ds5678)
  • Load resource stream outside of delegate (see #​3389 by @​snorrk)
  • Allow ILSpy to launch, when net8.0 is not installed, but a later version (see #​3391 by @​nil4)
  • Fix nested namespace directories (see #​3449 by @​ds5678)
  • Fix #​3402: System.NullReferenceException on right click on .NET 9 (see #​3403 by @​tom-englert)
  • Add an option to turn off smooth scrolling (see #​3405 by @​tom-englert)
  • Use type hint in pointer arithmetic (see #​3413 by @​ds5678)
  • Improve UI for primary constructors on non-record types (see #​3455 by @​ds5678)
  • Fix exception when writing resx files without adding any resources (see #​3418 by @​jwfx)
  • Enhance null handling in switch transformations (see #​3422 by @​ds5678)
  • Don't include generic constraints in generated explicit overrides (see #​3443 by @​ds5678)
  • Improve generation of not equals check (see #​3425 by @​ElektroKill)

Bug fixes

  • Fix #​2269: LocalFunctionDecompiler misplaces nested local functions in ctors
  • Fix #​3322: Add missing checks for equality comparison
  • Fix #​3378: Navigation shortcuts (Alt-Left and Alt-Right) don't work when TreeView has focus
  • Fix #​3381: Make sure that selectedNode is still selected when focus is deferred in IsActive property changed handler.
  • Fix #​3383: more aggressively transform object initializers on structs
  • Fix #​3384: add special case for null-literal conversions in optional argument handling.
  • Fix #​3385: Allow address uses of structs in using transform, if the reference is passed to an in parameter.
  • Fix #​3392: uses of init-setters must use object-initializer syntax.
  • Fix #​3401: Multiple problems when exporting an assembly as project
  • Fix #​3414: Apply latest session settings before saving upon closing the main window
  • Fix #​3342: Wrong null check in MethodVirtualUsedByAnalyzer
  • Fix #​3450: Fix "Clear assembly list" not actually persistent.
  • Fix #​3432: Do not include delegate construction use-sites in DetermineCaptureAndDeclarationScopes.
  • Fix attributes tooltip of GenericParam metadata table

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

9.0

ILSpy 9.x is based on .NET 8.0. All artifacts except the self-contained distribution are built framework-dependent, which means .NET 8.0.x or later must be installed prior to starting ILSpy.

Generic themes of this release were refactoring the old WPF code base and moving away from platform-dependent implementations to make reuse easier via our ILSpyX package.

A few notable picks from the "What's new" department for you to check out: WebCIL and standalone ECMA-335 metadata support, as well as diagramming (either via ilspycmd or assembly context menu). And in general quality-of-life improvements like the ability to disable automatic assembly loading, performance improvements via DATAS and future-proofing for .NET 10.

New Language Features

  • Add support for C# 12 primary constructors.
  • Add support for C# 12 'ref readonly' parameters
  • Added support for switch on (ReadOnly)Span<char> using a compiler-generated hash function.
  • Added new a.GetValueOrDefault(b) -> a ?? b transform for side-effect-free default values.
  • Support types that provide DisposeAsync without implementing IAsyncDisposable.
  • Updated pattern detection to Roslyn 4.12

Enhancements

  • Added support for reading WebCIL assemblies (IL embedded in WASM) (see #​3184)
  • Added support for reading standalone ECMA-335 metadata (portable PDB and other metadata blobs) (see #​3149)
  • #​3118: Add "Clear assembly list" menu item.
  • #​2893: Add option to disable automatic assembly loading.
  • Allow implicit conversions in switch
  • IL output: Add indentation level to make it easier to see custom attributes belonging to interface implementations.
  • IL output: Print metadata token of custom attribute.
  • Replace native interop CommandLineToArgvW with parsing in Process.Unix.cs from System.Diagnostics.Process #​3201
  • Natural Sort without interop #​3196
  • AOT and x-plat changes #​3203
  • Allow running tests on ARM64 (see #​3231)
  • Alow collecting analyzers annotated with ExportAnalyzerAttribute (see #​3239)
  • Fix #​3237: Use ref readonly locals for readonly.ldelema
  • Fix #​3001: Support new resources format in ResourcesFile/ResXResourceWriter
  • Fix #​3134: Include newobj, initobj and call instructions in TypeInstantiatedByAnalyzer
  • Fix #​3089: Add comment regarding .constraint prefix expressed as cast in C#
  • Fix #​3372: Fix loading a DLL that contains byte sequences matching ZIP central directory
  • Use Microsoft.Sbom.Targets in NuGets #​3346

Contributions

  • Diagramming feature by @​h0lg (see #​3324)
  • Various WPF-related refactorings by @​tom-englert (see #​3257, #​3266, #​3274, #​3283, #​3285, #​3291, #​3292, #​3294, #​3295, #​3297, #​3298, #​3299, #​3302, #​3308, #​3314, #​3325 and #​3335)
  • High DPI fixes by @​CreateAndInject (see #​3348 and #​3350)
  • TreeView: Add referenced types, members and exported types under references (#​3092, @​fowl2)
  • Adjust colors of AvalonEdit built-in highlightings for dark themes (#​3138, @​ltrzesniewski)
  • Add support for Mono C# compiler 2.6.4 pinned region with array variable (#​3110, @​ElektroKill)
  • Add smooth scrolling to settings panels and DecompilerTextView (see #​3244 by @​tom-englert)
  • Ignore empty version directories of dotnet (#​3265 by @​Herrmel)
  • Missing DecompilerSettings by @​naratteu (see #​3356)
  • Fix metadata display of DynamicLocalVariable and DefaultNamespace custom debug information (#​3111, @​ElektroKill)
  • Read and use tuple element names and dynamic type information from PDBs (#​3114, @​ElektroKill)
  • Bugfix: infinite loop in DetermineEffectiveAccessibility (#​3164, @​yzdeveloper)
  • Decompiler Settings: Checkbox in group header does not reflect state of the group (see #​3252 by @​tom-englert)
  • Fix Derived Types Node always being empty (#​3280 by @​Applesauce314)

... (truncated)

9.0-rc

ILSpy 9.x is based on .NET 8.0. All artifacts except the self-contained distribution are built framework-dependent, which means .NET 8.0 or later must be installed prior to starting ILSpy.

New Language Features

  • Updated pattern detection to Roslyn 4.12

Contributions

  • Diagramming feature by @​h0lg (see #​3324)
  • More WPF-related refactorings by @​tom-englert (see #​3325 and #​3335)
  • High DPI fixes by @​CreateAndInject (see #​3348 and #​3350)
  • Missing DecompilerSettings by @​naratteu (see #​3356)

Enhancements

  • Allow implicit conversions in switch

Performance

  • Performance: Initialize ToolPanes in DockWorkspace.InitializeLayout() instead of the property getter to avoid WPF seeing them in InitializeComponent() and rendering all panes docked at the right before the layout is properly initialized.

Bug fixes

  • Fix #​3319: KeyDownEvent field reference was replaced with KeyDown event reference.
  • Fix #​3349: Make ILSpy ready for .NET 10
  • Fix #​3361: switch-value conversion was losing its target type.

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

9.0-preview3

ILSpy 9.x is based on .NET 8.0. All artifacts except the self-contained distribution are built framework-dependent, which means .NET 8.0 must be installed prior to starting ILSpy.

Breaking Changes in ICSharpCode.Decompiler

  • Remove IsRef, IsOut and IsIn flags from IParameter
  • Replace ParameterModifiers with ReferenceKind.

New Language Features

  • Update pattern detection to Roslyn 4.11.0
  • Support types that provide DisposeAsync without implementing IAsyncDisposable.
  • Add support for C# 12 primary constructors.
  • Add support for C# 12 'ref readonly' parameters

Contributions

  • Add smooth scrolling to settings panels and DecompilerTextView (see #​3244 by @​tom-englert)
  • Decompiler Settings: Checkbox in group header does not reflect state of the group (see #​3252 by @​tom-englert)
  • Various WPF-related refactorings by @​tom-englert (see #​3257, #​3266, #​3274, #​3283, #​3285, #​3291, #​3292, #​3294, #​3295, #​3297, #​3298, #​3299, #​3302, #​3308 and #​3314)
  • Ignore empty version directories of dotnet (#​3265 by @​Herrmel)
  • Fix Derived Types Node always being empty (#​3280 by @​Applesauce314)

Enhancements

  • Allow running tests on ARM64 (see #​3231)
  • Alow collecting analyzers annotated with ExportAnalyzerAttribute (see #​3239)
  • Fix #​3237: Use ref readonly locals for readonly.ldelema
  • Fix #​3001: Support new resources format in ResourcesFile/ResXResourceWriter
  • Fix #​3134: Include newobj, initobj and call instructions in TypeInstantiatedByAnalyzer
  • Fix #​3089: Add comment regarding .constraint prefix expressed as cast in C#

Bug fixes

  • Fix #​3209: Ensure using directives are added for extension methods in higher level patterns such as: foreach -> GetEnumerator(), collection initializer -> Add() and deconstruction -> Deconstruct().
  • Fix #​3255: Ignore exceptions while decoding sequence point blobs.
  • Fix #​2166: Unnecessary uint casts/conversions for certain bitwise operations
  • Fix #​3310: Filter out copy-constructor only if it's an actual record type.

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

9.0-preview2

ILSpy 9.x is based on .NET 8.0. All artifacts except the self-contained distribution are built framework-dependent, which means .NET 8.0 or later must be installed prior to starting ILSpy.

Breaking Changes

  • @​file support with breaking changes to command line options #​3205
  • New single instance handling #​3212

Enhancements

  • Replace native interop CommandLineToArgvW with parsing in Process.Unix.cs from System.Diagnostics.Process #​3201
  • Natural Sort without interop #​3196
  • AOT and x-plat changes #​3203

Bug fixes

  • Fix #​3197: Bug when trying to read a bundle/archive file
  • Fix #​3189: Support primitive types in Expression.Constant(object) pattern in Expression Trees

9.0-preview1

ILSpy 9.x is based on .NET 8.0. All artifacts except the self-contained distribution are built framework-dependent, which means .NET 8.0 or later must be installed prior to starting ILSpy.

Breaking Changes

  • ICSharpCode.Decompiler: Added MetadataFile base class for PEFile
  • ICSharpCode.Decompiler: IModule.PEFile is now named IModule.MetadataFile
  • ICSharpCode.Decompiler/ILSpyX: Added IFileLoader API to allow for easier extensibility of supported file formats (see #​3191)
  • ILSpy: Split BAML decompiler into library and add-in (see #​3178)
  • ILSpy/ILSpyX: Moved non-UI analyzer API to ILSpyX (see #​3186)
  • ICSharpCode.Decompiler: IProjectFileWriter and IProjectInfoProvider APIs are now public (see #​3151 and #​3191)

Performance

  • Activate Dynamic Adaptation To Application Sizes (DATAS) (#​3122).
  • RDP hardware acceleration (#​3122): Enabling hardware acceleration for Remote Desktop Protocol (RDP) to boost performance.

New Language Features

  • Update pattern-detection to Roslyn v4.9.2
  • Added support for switch on (ReadOnly)Span<char> using a compiler-generated hash function.
  • Added new a.GetValueOrDefault(b) -> a ?? b transform for side-effect-free default values.

Enhancements

  • Added support for reading standalone ECMA-335 metadata (portable PDB and other metadata blobs) (see #​3149)
  • Added support for reading WebCIL assemblies (IL embedded in WASM) (see #​3184)
  • #​3118: Add "Clear assembly list" menu item.
  • #​2893: Add option to disable automatic assembly loading.
  • IL output: Add indentation level to make it easier to see custom attributes belonging to interface implementations.
  • IL output: Print metadata token of custom attribute.

Contributions

  • Fix metadata display of DynamicLocalVariable and DefaultNamespace custom debug information (#​3111, @​ElektroKill)
  • Read and use tuple element names and dynamic type information from PDBs (#​3114, @​ElektroKill)
  • Adjust colors of AvalonEdit built-in highlightings for dark themes (#​3138, @​ltrzesniewski)
  • Bugfix: infinite loop in DetermineEffectiveAccessibility (#​3164, @​yzdeveloper)
  • TreeView: Add referenced types, members and exported types under references (#​3092, @​fowl2)
  • Add support for Mono C# compiler 2.6.4 pinned region with array variable (#​3110, @​ElektroKill)

Bug fixes

  • Fix #​3072: Ignoring resources with the same name as a namespace.
  • Fix bug in UnknownType: Ensuring that the FullName of nested unknown types contains the outer type name(s), not just the namespace and nested type name.
  • Fix #​3153: Always using SHA1 for public key tokens.
  • Fix ILSpy for ZIP files/VSIX with bundle signatures: Enabling ILSpy to open ZIP files and VSIX packages containing bundle signatures.
  • Omit package entries from the treeview that denote the directory.
  • Fix #​3142: Exception when analyzing source of library with global assembly attributes
  • Fix #​3113: Remove GetAlternativeName and instead reuse existing names, if there are no conflicts.

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

8.2

ILSpy 8.x is based on .NET 6.0. All artifacts except the self-contained distribution are built framework-dependent, which means .NET 6.0.2 or later must be installed prior to starting ILSpy.

New Language Features

  • C# 7.1 Pattern matching with generics
  • C# 8.0 Recursive patterns
  • C# 9.0 Relational patterns
  • C# 9.0 not patterns
  • C# 10.0 static abstract members in interfaces
  • C# 11.0 switch on (ReadOnly)Span<char>

Contributions

  • Add entry size info (@​startewho, #​3052)
  • Add GC Info to R2R output (@​eduardo-vp, #​3076)
  • Update R2R (@​cshung, #​3088)
  • Reduce "unsafe" by replacing byte* pointer usage with ReadOnlySpan<byte> (@​fowl2, #​3106 )

Enhancements

  • #​3090: add support for the NUGET_PACKAGES environment variable
  • Fixed some quirks in our search: #​3064, #​3065 and #​3038

Performance

  • #​3075: Avoid processing already-transformed blocks by introducing BlockTransformContext.IndexOfFirstAlreadyTransformedInstruction, which allows us to track already transformed instructions after a block has been merged into another by ConditionDetection.
  • #​3075: Add NextSetBit operation to BitSet to avoid looking at every store bit individually in ReachingDefinitionsVisitor.GetStores()
  • #​3075: Fix ILVariableEqualityComparer.GetHashCode
  • #​3075: Improve performance of CSharpResolver.LookupSimpleNameOrTypeName in cases with a large number of local variables.
  • #​3075: Eliminate recursion in some parts of the decompiler engine
  • ILSpy UI: #​3057 - sub-optimal use of StringBuilder when constructing tree-node labels

Bug fixes

  • #​3061: Handler blocks of exception filter blocks do not have a header.
  • #​3103: unaligned.stobj cannot be transformed into inline assignment
  • #​3091: extension methods named Add were skipping some checks in AccessPathElement.IsMethodApplicable.
  • #​3004: MetadataModule.ResolveEntity() returning null for System.IntPtr when C# 11 native integers are enabled.
  • #​3105 - VS2017-2019 addin didn't properly match subdirectory structure of 2022 addin
  • #​3014: Missing type information in lambda expressions

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

8.1.1

Release notes for 8.1 apply https://github.com/icsharpcode/ILSpy/releases/tag/v8.1 as this release is a bugfix release only.

Fixed bug #​3069 in switch-on-string detection, where complex switches compiled with newer versions of the C# compiler would cause a crash. Other minor fixes included too.

For details please see icsharpcode/ILSpy@v8.1...v8.1.1

8.1

ILSpy 8.x 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.

New Language Features

  • C# 11 checked operators
  • C# 11 unsigned right shift operator
  • C# 11 UTF8 string literals
  • C# 11 numeric IntPtr
  • C# 11 ref fields and scoped
  • mcs 2.6.4 pinned regions
  • Updated pattern-detection for Roslyn 4.6.0

Contributions

  • Copy clipboard with full syntax-highlighting (#​3045 by @​ltrzesniewski)
  • Fix sequence-points on expression-bodied members (#​3032 by @​KirillOsenkov)
  • Fix annotations on nested type references (#​3030 by @​ltrzesniewski)
  • Add clipboard-related context menu to resources tables (#​3024 by @​miloush)
  • Fix decompilation of record with missing base type (#​3021 by @​andrewcrawley)
  • Add support for mcs 2.6.4 pinned regions (#​3015 by @​ElektroKill)
  • Improvements in CustomDebugInformation metadata table (#​2799 by @​fowl2)
  • Fix ArgumentOutOfRangeException on unexpected file in GAC (#​2960 by @​ificator)
  • Support for compound-assignments on pointers (by @​ElektroKill)
  • Added a search box for resource tables (by @​miloush)

Enhancements

  • Default update check for dotnet tool ilspycmd (#​3035). Use --disable-updatecheck in automation scenarios.
  • VS 2022 extension ships with both x64 and ARM64 binaries (#​3009)
  • Added ARM64 binaries and ARM64 installer downloads
  • WholeProjectDecompiler: Improve resources -> resx conversion
  • Improve decompilation of compound-assignments involving local variables
  • Refactor ILReader to support re-imports of basic blocks (#​901)

Bug fixes

  • #​2891: Populate framework_dirs with the correct values depending on the current host runtime.

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

Commits viewable in compare view.

@dependabot
dependabot Bot requested a review from IanFrelinger as a code owner October 9, 2026 07:43
@dependabot dependabot Bot added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels Oct 9, 2026
@dependabot
dependabot Bot force-pushed the dependabot/nuget/ICSharpCode.Decompiler-11.1.0.9782 branch 2 times, most recently from c1320a0 to 8b5c14d Compare October 10, 2026 15:36
---
updated-dependencies:
- dependency-name: ICSharpCode.Decompiler
  dependency-version: 11.1.0.9782
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/nuget/ICSharpCode.Decompiler-11.1.0.9782 branch from 8b5c14d to d73147e Compare October 11, 2026 00:38
@IanFrelinger

Copy link
Copy Markdown
Owner

Superseded by #753, which lands this bump in one commit with the other Directory.Packages.props updates and moves Grpc.AspNetCore, Grpc.Net.Client, Grpc.Tools and Google.Protobuf together. Do not merge this pull request on its own.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant