ILSpy

ICSharpCode Team · icsharpcode.ILSpy

Cross-Platform .NET assembly browser and decompiler.

winget install --id icsharpcode.ILSpy --exact --source winget

Latest 10.0.0.8330

Release Notes

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

Installer type: wix

Architecture Scope Download SHA256
x64 Download C402EAE43BC545EE4D6DB354FB8EE6AB3FD8E7F56F01C6B58C851E5DFAB17BED
arm64 Download AAFA979F2A665709B14804487445FD96A8E03799C03C11B41F20A9EA34C51AFA

Details

Homepage
https://github.com/icsharpcode/ILSpy
License
MIT
Publisher
ICSharpCode Team
Support
https://github.com/icsharpcode/ILSpy/issues
Copyright
Copyright 2011-2023 AlphaSierraPapa for the ILSpy team

Tags

c-sharpdecompiledecompilerdecompiler-enginedotnetdotnetcoreilspymonopdbunity

Older versions (8)

9.1.0.7988
Architecture Scope Download SHA256
x64 Download B35F8FB2729829389AD31E753AFCF8F60FAD6E1AD689E1DF28C61CC2C193CA4E
arm64 Download 989BFD2C5EDF3F35060138BC726469BCE5E780F0716A1FF55A10BDCA50ED1CD4
9.0.0.7889
Architecture Scope Download SHA256
x64 Download FBC88F10E8631295526093825863D90709850939B146C080422CEEF17F389DFD
arm64 Download A94BDFB05FB7B10A85286A637EEB204423FD4E078B6057F992B54FD682CFCDCC
8.2.0.7535
Architecture Scope Download SHA256
x64 Download 0021B5B18638E8DB857B2AF038074185F4D25047D0D2DA3A67E1925303897EA7
arm64 Download 483280973AC93CDF5926F963ACF1291FFC5DFEC132B120B5B4F446196668EE56
8.1.1.7464
Architecture Scope Download SHA256
x64 Download A90663A304C50201D0517D89D3AA6BDBDBCD3B9E5ED5DA03E6190ED2A0E9B138
arm64 Download 6DD4BD5CE6FBE55861CEE6AD8D5DD0403694D0D5F7E5F4A96C180D2317AD7F4E
8.0.0.7345
Architecture Scope Download SHA256
x64 Download 873DE84F2FA0E0B161F127A04B4572A41359F4E0993664A2F98E234E946450E0
7.2.1.6856
Architecture Scope Download SHA256
x64 Download 9F9F915F4734F4FF14ED33E996C1DA112695E8C6A4C7DA22671C75235C346C40
7.2.0.6839
Architecture Scope Download SHA256
x64 Download 252EC7A1CB1268210BE7D0C93BE721249A4E931C9E47B9D74BF1DFFA678AE8E5
7.2.0.6791
Architecture Scope Download SHA256
x64 Download 3BBE72B8B4E997D89517608FE09131870805A5CD54A14ED6F5DA8389058350E4