ILSpy Changelog

What's new in ILSpy 8.1.1.7464

Sep 16, 2023
  • Fixed bug 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.

New in ILSpy 8.1.0.7455 (Aug 3, 2023)

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

New in ILSpy 8.0.0.7313 Preview 4 (Apr 3, 2023)

  • Contributions:
  • More themes - Light/Dark are the original ones, R# & VS Code added (see #2906 and #2931 by @ltrzesniewski)
  • Improve selected text highlighting (see #2938 by @Konctantin)
  • Add support for record structs in CSharpAmbience (see #2911 by @ElektroKill)
  • Add support for Visual Basic Yield Return state machine decompilation (see #2874 by @ElektroKill)
  • Fix ResXResourceWriter support for MemoryStream resource element (see #2895 by @ElektroKill)
  • Use .interfaceimpl type syntax (see #2903 by @ltrzesniewski)
  • Fix empty parameter names in delegate declarations (see #2912 by @ElektroKill)
  • Support disassembling ReadyToRun binaries compiled using composite mode (see #2944 by @cshung)
  • Enhancements:
  • Move Settings to ILSpyX (see #2869)
  • Move all code related to single instance logic to separate class (see #2871)
  • Bug fixes:
  • Fix #2933: TwoLetterISOLanguageName is insufficient for loading localized documentation.
  • Fix #2915: inassembly search filter is case sensitive and automatically suggests the wrong term
  • Fix #2922: System.ArgumentOutOfRangeException when decompiling a function

New in ILSpy 78.0.0.7246 Preview 3 (Dec 4, 2022)

  • New Language Features
  • C# 11: Required members
  • Updated pattern detection for Roslyn 4.4.0
  • Enhancements:
  • Various performance improvements in the type system and decompiler engine. (see #2766 and #2754)
  • Support native ints in "Combine bit.and into shift" transform
  • #2780: Show embedded resource size
  • Bug fixes:
  • Fix #2759: Some characters cause rendering issues in the tree view causing ILSpy to freeze. Also ignore embedded resources with an invalid offset, treat them as having zero byte length.
  • Fix #2763: Improve decompilation of switch-on-enum by preserving enum type information when inlining local variables into SwitchInstruction.Value.
  • PDB generation: Use row ID instead of token in AsyncDebugInfo blob.
  • Fix #2806: Do not use implicitly typed out variables, if argument and parameter types do not match exactly.
  • #2823: Introduce IType.GetDefinitionOrUnknown() to allow better detection of async state-machines involving unknown types.
  • Fix #2825: Missing whitespace after new()
  • Fix #2827: Allow users to enter search queries that match our prefixes.
  • WholeProjectDecompiler: Fix #2830: Can't decompile project with / in resource name on Windows
  • Fix #2831: Popup/Tooltip scaling on multi-monitor multi-DPI setups.
  • WholeProjectDecompiler: Fix #2850: Make sure that type names longer than 255 characters are handled correctly.

New in ILSpy 8.0.0.7106 Preview 2 (Sep 20, 2022)

  • New Language Features:
  • C# 11: ref fields
  • C# 10: record structs
  • C# 10: Support DefaultInterpolatedStringHandler
  • Updated pattern detection for Roslyn 4.3.0
  • Output attributes on lambda expressions
  • Contributions:
  • Allow user to provide ID when generating a PDB (see #2678 by @andrewcrawley)
  • Assume conventionally named unresolved method references are properties or events (see #2677 by @fowl2)
  • Add EnableWindowsTargeting propery to csprojs targeting net6.0-windows (see #2752 by @clin1234)
  • Reduce allocations in TransformArrayInitializers (see #2731 by @ElektroKill)
  • Fix allowed language versions in ilspycmd (see #2703 by @superstrom)
  • Fix crash target framework detection with C++/CLI (see #2698 by @kant2002)
  • Enhancements:
  • #2684: Iteratively unhide compiler-generated code, if it is referenced by user-code
  • Use Unsafe.SizeOf when taking the size of a managed type
  • #2718: Move XAML files that have an x:Class declaration next to their C# counterparts when using WholeProjectDecompiler
  • Bug fixes:
  • #2691: Do not use AssemblyDefintion.GetAssemblyName(). This fails in culture-invariant mode (ilspycmd) when trying to work with satellite assemblies, because System.Reflection.AssemblyName tries to retrieve CultureInfo of the assembly culture
  • #2733: Ignore bad metadata when trying to resolve ResolutionScope
  • #2741: CallBuilder produces invalid invocation target when disambiguating calls to protected methods

New in ILSpy 8.0.0.7007 Preview (Apr 20, 2022)

  • Enhancements:
  • Performance optimization of analyzers (see #2643)
  • Bug fixes:
  • Target expressions of delegate references were not decompiled correctly
  • Make sure that changing the setting "ExpandMemberDefinitions" has an effect when refreshing a decompiled view.
  • Indentation of method-call chains.
  • ILSpy reports wrong visibility for overridden protected internal properties if located in another assembly.
  • Explicitly qualify members in TemplateBindings.
  • TranslateArrayInitializer crashes with out of order array init

New in ILSpy 7.2.1.6856 (Apr 4, 2022)

  • Enhancements:
  • Improved handling of nullability annotations on types involved in implicit conversions.
  • Improved detection of pinned regions.
  • Bug fixes:
  • Invalid implicit enum value for unordered items
  • Missing values for enums with skipped or duplicate items
  • Fix NRE in ScopeSearchToAssembly.
  • Add missing Microsoft.Win32.Registry dependency to nuspec.template
  • Assertion when using named arguments in a constrained call
  • Ignore custom attributes on parameter where SequenceNumber is out-of-range.

New in ILSpy 7.2.0.6844 (Feb 28, 2022)

  • New Language Features:
  • C# 7.0 pattern matching
  • C# 8.0 stackalloc in nested contexts
  • C# 9.0 skip locals init
  • C# 9 covariant returns
  • C# 10 file-scoped namespace declarations
  • C# 10 abstract static interface members
  • Updated pattern detection for Roslyn 4.0
  • Updated pattern detection for Mono C# compiler 5.x
  • Updates pattern detection for Roslyn 3.11
  • Contributions:
  • Introduce MSI-based installer (by @Rpinski in #2558)
  • ILSpyCmd: Added support for single-file bundles (by @Freakness109 in #2499)
  • Support loading compressed Xamarin assemblies (by @cpraehaus in #2471)
  • BAML decompiler: Add missing x:Static (by @wwh1004 and @bert2 in #2536)
  • Various improvements in pattern detection for records (by @yyjdelete in #2476)
  • Add TypeDefinitionDocuments to custom debug information data (by @davidwengier in #2578)
  • Fix MainWindow.OpenLink for net6.0 (by @yyjdelete in #2585)
  • Fix loading icons embedded as resources (by @AustinWise in #2595)
  • Use Trace.Listeners instead of Debug.Listeners (by @yyjdelete in #2555)
  • Updated ReadyToRun. (by @cshung in #2489)
  • Analyzers: Return valid modules only (by @zvirja in #2496)
  • Extensibility: Make SearchTermMatches virtual (by @beaverden in #2494)
  • Fix null check in BamlDecompilerTypeSystem.HasType (by @yyjdelete in #2509)
  • Updated Chinese translation (by @Nyerst in #2606)
  • Enhancements:
  • Assembly resolver: GetReferenceAssemblyPath now picks closest available version
  • #1175: Added inassembly: and innamespace: search predicates
  • #2298: Allow to change the DecompilerTextView's font size through scrolling.
  • #2404: Cache decompilation results when switching tabs
  • Better support for voice commands/keyboard navigation
  • Proper support for long paths in Windows 10 in WholeProjectDecompiler.
  • #2608: Support for submenu items
  • Added hyperlinks to metadata explorer tables
  • Add simple public API for XamlDecompiler
  • Improved performance of LoadedAssembly.GetTargetFrameworkId, LoadedAssembly.GetRuntimePackAsync and others
  • #2368: Dim namespaces containing only internal types
  • Improved window menu
  • Added "Copy results" menu item to Analyzer
  • #2550 and #2551: Fix tab and focus handling
  • #2330: Added an option to toggle namespace sub-directory support in project export
  • Added ETW instrumentation to the decompiler for performance measurements
  • Added DecompilerTypeSystem.CreateAsync to allow asynchronous initialization
  • #2522: Support backticks in fully-qualified names when searching for type
  • #2520: The matched pairs are hardly visible in the dark theme
  • Add "Extract package entry" context menu entry for binaries inside bundles/packages
  • IL disassembly: Option to show raw offsets and instruction bytes
  • IL disassembly: Show header sizes
  • Navigator window a11y fixes:
  • Use "ILSpyInstance" mutex to wait until the first ILSpy instance is ready to receive WM_COPYDATA
  • Overflow check did not work reliably due to fp rounding error
  • Decompilation of newarr with int.MaxValue causes OOME
  • Fix crash in ExpressionBuilder when decompiling object initializer composed of readonly properties
  • Various bugfixes in pinned-region detection.
  • Improved decompilation of VB.NET decimal constants.
  • Do not produce syntax errors with interpolated strings
  • LINQ does not support null-forgiving operator, suppress transform.
  • Add explicit unchecked() around non-constant cast of constant to nint
  • "Other resources" section in resource files was not properly displayed
  • Handle default implementations of properties and events in interfaces
  • Fixed various correctness issues in IL code generated by C++/CLI
  • Stability fixes in pattern matching detection
  • Stability fixes in deconstruction detection
  • This fixes an issue where return statements within try-blocks could turn into goto statements
  • BAML-to-XAML: Resolve namespaces of properties
  • Improved decompilation of display-classes
  • Suppress the string==null special-case within the string class itself
  • aggressively inline code in compiler-generated lambdas and expression trees
  • And many other fixes, for a full list click here
  • ilspycmd:
  • Removed .NET Core 2.1 TFM, added .NET 6.0 TFM

New in ILSpy 7.2.0.6843 Preview 4 (Feb 14, 2022)

  • Enhancements:
  • Updated AvalonEdit and other Nuget packages
  • Added hyperlinks to metadata explorer tables
  • Assembly resolver: GetReferenceAssemblyPath now picks closest available version
  • Improved performance of LoadedAssembly.GetTargetFrameworkId, LoadedAssembly.GetRuntimePackAsync and others
  • #2368: Dim namespaces containing only internal types
  • Improved window menu
  • #2608: Support for submenu items
  • Added "Copy results" menu item to Analyzer
  • Bug fixes:
  • Use "ILSpyInstance" mutex to wait until the first ILSpy instance is ready to receive WM_COPYDATA.
  • Overflow check did not work reliably due to fp rounding error.
  • Decompilation of newarr with int.MaxValue causes OOME.
  • Fix crash in ExpressionBuilder when decompiling object initializer composed of readonly properties.
  • And many other fixes, for a full list click here.

New in ILSpy 7.2.0.6651 Preview 2 (Oct 11, 2021)

  • New Language Features:
  • Adjusted pattern detection for Roslyn 3.11
  • C# 7.0 pattern matching
  • C# 9 covariant returns
  • Contributions:
  • Updated ReadyToRun. (by @cshung in #2489)
  • Analyzers: Return valid modules only. (by @zvirja in #2496)
  • Extensibility: Make SearchTermMatches virtual. (by @beaverden in #2494)
  • Support loading compressed Xamarin assemblies. (by @cpraehaus in #2471)
  • Fix null check in BamlDecompilerTypeSystem.HasType (by @yyjdelete in #2509)
  • Visual Studio AddIn:
  • Allow to open ILSpy on project and package references
  • Enhancements:
  • Add "Extract package entry" context menu entry for binaries inside bundles/packages.
  • Better support for voice commands/keyboard navigation.
  • Proper support for long paths in Windows 10 in WholeProjectDecompiler.
  • IL disassembly: Option to show raw offsets and instruction bytes.
  • IL disassembly: Show header sizes.
  • Add simple public API for XamlDecompiler
  • Bug fixes:
  • This fixes an issue where return statements within try-blocks could turn into goto statements.
  • BAML-to-XAML: Resolve namespaces of properties
  • Improved decompilation of display-classes.
  • Suppress the string==null special-case within the string class itself.
  • Aggressively inline code in compiler-generated lambdas and expression trees.

New in ILSpy 7.1.0.6543 (May 31, 2021)

  • General:
  • Adjusted pattern detection for Roslyn 3.10
  • Cross-platform support:
  • Fix #2417: ilspycmd is crashing if no valid ICU package is found.
  • Fix DotNetCorePathFinder on Unix systems: realpath always returned garbage
  • Fix #2358: use current Path.DirectorySeparatorChar instead of hard-coded backslashes.
  • Contributions:
  • Support for .NET 6 single-file bundles. (by @vitek-karas in #2373)
  • Added .vsconfig. (by @joshuacookdev in #2376)
  • Chinese translation updates. (by @maikebing in #2385)
  • Fix #2406: for readonly property with only getter, move readonly to property instead of getter (by @yyjdelete in #2408)
  • #2409: Styling of windows title bar is now optional. (by @tom-englert in #2412)
  • 6a34df5: small bug fix in the metadata explorer UI by @marwie
  • Fixed a source generation bug in ReflectionDisassembler: Identifiers containing multiple consecutive dots were not properly escaped. (#2386 by @DarkOoze)
  • Bug fixes:
  • #2392: Avoid some redundant casts with the ?: operator.
  • #2398: TranslateCondition: truncate condition value if necessary
  • #2391: mark method as unsafe when passing null to a parameter of pointer type.
  • #2396: Extend the #1903 workaround to unconstrained generic types.
  • #2389: missing extern keyword for properties and events.
  • #2395: Do not use for->foreach transform if collection is not an array.
  • #2390: Add support for generic object initializers.
  • #2390: Make sure all unused captured variables are removed even in lambdas.
  • #2407: Operator '-' cannot be applied to operand of type 'nuint'
  • #2354: decompilation of unary and binary operators with nullable value types.
  • And many other fixes, for a full list click here (https://github.com/icsharpcode/ILSpy/compare/v7.0...v7.1-preview1).

New in ILSpy 7.0.0.6488 (Apr 29, 2021)

  • NEW LANGUAGE FEATURES:
  • C# 9.0: record classes
  • C# 9.0: with expressions
  • C# 9.0: primary constructors
  • Support for .NET 5 custom calling conventions
  • Improved support for Unsafe-intrinsics
  • UI IMPROVEMENTS:
  • Dark mode (@tom-englert in #2347)
  • .NET bundles and Nuget packages are now directly embedded in the tree view
  • Search enabled in NuGet packages
  • Added setting highlight the current line in the code view (see #2224, by @DickvdBrink)
  • Simple UI language switching support
  • GENERAL:
  • Support for .NET bundles (see #2191)
  • Detect use of csc /deterministic switch
  • Improve assembly resolver API to allow async usage
  • #2286: Enable server-mode GC in ILSpy
  • Building ILSpy for .NET 5 is now possible (see multitargeting.props.template)
  • Improved project/solution decompilation (see #2186, by @wwh1004)
  • Updated ReadyToRun (see #2238 & #2279, by @cshung)
  • Added inline display of CustomDebugInformation table entries in metadata
  • Add metadata tree nodes for blob, guid, string and user string heap
  • Performance improvements in DataGrid filter (by @tom-englert)
  • Adjust fitness calculation for destructors (by @MikeFH in #2344)
  • Refactored insertion of search results (by @MikeFH in #2335)
  • Align dependencies with Roslyn 3.8.0, see #2173 (affects ICSharpCode.Decompiler NuGet package users)
  • Removed the dependency on Humanizer (see #2232 and #2235)
  • BUG FIXES:
  • Fix #2192: Add support for VB.NET delegate construction
  • Fix #2195: foreach loop conversion accidentally removes end container labels
  • Fix #2197: .NET 5 RC2: "Analyze/Used By" throws BadImageFormatException
  • Fix #2196: Add support for extern local functions.
  • Fix #1079: CSharpFormattingOptions.AutoPropertyFormatting has no effect
  • Fix #2222: switch-expression does not support implicit conversions.
  • #2241: Fix possible NRE in TypeProvider.GetTypeFromReference
  • Fix #2233: ResourcesFileTreeNode no longer creates child nodes for BAML files
  • Fix #2230: do not emit directly consecutive null propagation operators
  • Fix #603: Single element arrays should not span multiple lines
  • Fixed crash when loading DLLs with invalid sections in their .deps.json (see #2227, by @bernd5)
  • #2278: Implement support for CSharpBinderFlags.InvokeSimpleName
  • #2280: Add additional checks to GenerateVariableName
  • #2275: Fix exception when assembly does not contain proper MetadataVersion.
  • #2260: Fix switch(string) transform: handle empty cases where the C# compiler optimizes out the if
  • #2288: Fix decompilation of nullable lifting in expression trees (by @wwh1004)
  • PDBGen: Ignore duplicated ILFunctions (see 5a8b488)
  • #2314: ILSpy incorrectly resolves a runtime dependency when dll is present in both WindowsDesktop.App and NETCore.App
  • #1648 and #2133: Use simple assembly names for KnownThings to allow the resolver to use the relative framework version
  • #2349: Use proper ExpressionType with DynamicCompoundAssign.
  • #1512: XmlDocumentationProvider Unable to load some XML files to have special characters
  • #2342: Do not generate empty names for foreach loop variables.
  • #2340: Do not traverse assemblies with load errors in AssemblyList.GetAllAssemblies()
  • #2356: Can't navigate if switch language in Analyze panel
  • Improved decompilation of rethrow/throw and finally blocks in async methods. (see #1749, #2339 and #2353)

New in ILSpy 7.0.0.6225 Preview 1 (Nov 16, 2020)

  • New Language Features:
  • Add support for .NET 5 custom calling conventions.
  • Improved support for Unsafe-intrinsics
  • UI Improvements:
  • .NET bundles and Nuget packages are now directly embedded in the tree view.
  • General:
  • Improved project/solution decompilation (see #2186, by @wwh1004)
  • Support for .NET bundles (see #2191)
  • Supports code generated by Roslyn 3.8.0
  • Bug fixes:
  • Fix #2192: Add support for VB.NET delegate construction
  • Fix #2195: foreach loop conversion accidentally removes end container labels
  • Fix #2197: .NET 5 RC2: "Analyze/Used By" throws BadImageFormatException
  • Fix #2196: Add support for extern local functions.
  • And many other fixes, for a full list click here.

New in ILSpy 6.2.1.6137 (Oct 12, 2020)

  • PDB Generation is confused by enhanced using statements
  • Incorrect version in binding redirect for AvalonEdit
  • Some compilers produce display class ctors with unused local variables
  • Do not inline switch value, in case variable is reused.
  • Restrict the (uint?)-1 special case to casts to integer types.
  • Fix MemberIsHidden-check for local function display structs

New in ILSpy 6.2.0.6124 (Sep 24, 2020)

  • New Language Features:
  • C# 7.0: Deconstruction
  • C# 8.0: await foreach
  • C# 8.0: Disposable ref structs
  • C# 8.0: Enhanced using statements
  • C# 8.0: switch expressions
  • C# 9.0: init accessors
  • C# 9.0: function pointers (see #2150)
  • C# 9.0: foreach with GetEnumerator extension methods
  • C# 9.0: Lambda parameter discards
  • General:
  • Add an option to enable aggressive inlining of expressions
  • Add option for string.Concat decompilation
  • Add an option to always qualify member references (by @Pathoschild, see #2114)
  • ReadyToRun: Variable tracking in output (by @edkazcarlson, see #2067)
  • ReadyToRun: Optimized debug info output (by @cshung, see #2113)
  • Work on unifying the code formatting (see #2128)
  • Tests upgraded to Roslyn 3.8.0-3.final
  • UI Improvements:
  • Improve performance of Metadata DataGridCell (see #2151)
  • Fix #2107: Add ScrollViewer around DisplaySettingsPanel
  • Metadata: Improvements/fixes by @srutzky, see #2134, #2135, #2145, #2147 and #2153
  • Updated Chinese translation
  • Bug fixes:
  • Fix #2129: be more flexible about the initialization order for the async state machine
  • Fix #2140: ILSpy 6.2p1 no longer respects "use discards" setting
  • Fix #2139: ArgumentOutOfRangeException for some xmldoc
  • Fix #2039: Code generated by VB's On Error Resume Next causes "unassigned variable" compile errors
  • Fix #2156: range syntax not being detected correctly in some cases
  • BAML decompiler: #2109 and #2106
  • Fix #2086: Check that window belongs to ILSpy before sending it a WM_COPYDATA message.
  • Fix #2090: ignore mscorlib references without public key token, when trying to resolve mscorlib. This will automatically fallback to .NET 4.0's mscorlib.dll.
  • #1292: Fix some more problems with pinned locals.
  • Fix #1555: Eliminate value-type temporaries emitted by mcs on field reads.
  • Fix #2056: "remove branch into body" must be executed before the clone cleanup
  • Fix #2101: reset removeExtraLoad flag if keepAssignmentBefore is set; implement simple case-de-duplication: abort if there are any duplicate cases.
  • Fix #2100: 'value'-named auto property could not be recognized correctly.
  • Fix #1441: Decompose flags enum values starting from the value with the highest Hamming Weight (popcount).

New in ILSpy 6.2.0.6062 Preview 1 (Aug 31, 2020)

  • New Language Features:
  • C# 7.0: Deconstruction
  • C# 8.0: await foreach
  • C# 8.0: Disposable ref structs
  • C# 8.0: Enhanced using statements
  • C# 8.0: switch expressions
  • C# 9.0: init accessors
  • C# 9.0: Lambda parameter discards
  • General:
  • Add an option to enable aggressive inlining of expressions.
  • Add an option to always qualify member references (by @Pathoschild, see #2114)
  • ReadyToRun: Variable tracking in output (by @edkazcarlson, see #2067)
  • ReadyToRun: Optimized debug info output (by @cshung, see #2113)
  • Work on unifying the code formatting (see #2128)
  • UI Improvements:
  • Updated Chinese translation (by @maikebing, @Berrysoft, @yyjdelete, see #2066)
  • Fix #2107: Add ScrollViewer around DisplaySettingsPanel
  • Bug fixes:
  • Fix #2086: Check that window belongs to ILSpy before sending it a WM_COPYDATA message.
  • Fix #2090: ignore mscorlib references without public key token, when trying to resolve mscorlib. This will automatically fallback to .NET 4.0's mscorlib.dll.
  • #1292: Fix some more problems with pinned locals.
  • Fix #1555: Eliminate value-type temporaries emitted by mcs on field reads.
  • Fix #2056: "remove branch into body" must be executed before the clone cleanup
  • Fix #2101: reset removeExtraLoad flag if keepAssignmentBefore is set; implement simple case-de-duplication: abort if there are any duplicate cases.
  • Fix #2100: 'value'-named auto property could not be recognized correctly.
  • Fix #1441: Decompose flags enum values starting from the value with the highest Hamming Weight (popcount).
  • And many other fixes, for a full list click here.

New in ILSpy 6.1.0.5902 (Jul 28, 2020)

  • New Language Features:
  • C# 9.0: Native ints
  • C# 9.0: Attributes on local functions
  • General:
  • ILSpy now uses System.Reflection.Metadata 1.8.1
  • UI Improvements:
  • Assembly List UX: double-click selects list and dismisses dialog
  • Base types treenode: Create a flat list of nodes containing all base types instead of just the direct base types
  • Bug fixes:
  • Fix #2050: Ref local variable is inlined incorrectly, changing the exception behavior
  • Fix #1903: un-inline argument of unsupported isinst instructions.
  • Fix #2073: Ensure the startOffsetVar actually appears in the expected instruction, not somewhere else.
  • Fix #2068: ILSpy can't find referenced library even though it's open
  • And many other fixes, for a full list click here.

New in ILSpy 6.0.0.5836 (Jul 7, 2020)

  • Major Changes of Note:
  • ILSpy 6.0 sports a multi-tab docking interface
  • ILSpy 6.0 comes with a new Metadata Explorer
  • ILSpy 6.0 has new icons for high-DPI support
  • ILSpy 6.0 requires at least .NET 4.7.2 (v5.0 required .NET 4.6.2)
  • New Language Features:
  • C# 8.0: Indexing and Slices (Ranges)
  • C# 7.0: Changes to syntactic disambiguation of generic identifiers
  • C# 7.3 pattern-based fixed statement
  • C# 8.0 Default Interface Methods
  • C# 8.0 Async streams (currently not covering await foreach)
  • C# 8.0 await using
  • C# 8.0 Readonly members
  • Decompile calli instructions using C# 9.0 function pointer syntax
  • Improved support for Unsafe intrinsics
  • Support for generic and static local functions
  • UI Improvements:
  • Docking and multi tab support (see #1725 and #1801)
  • Metadata Explorer (see https://github.com/icsharpcode/ILSpy/wiki/Metadata-Explorer)
  • Assembly list dropdown in toolbar, enhanced assembly list management
  • Show target frameworks next to the assembly version in the tree-view
  • Using the middle mouse button to click on tree nodes and links will open the decompilation result in a new tab.
  • "Select PDB" context menu: allows to change the PDB file resolved by ILSpy or pick one from a different location
  • Added a "Debug Metadata Explorer" node for portable PDBs
  • Use XAML for icons (high DPI)
  • New icons (based on VS 2017 icon pack) (#1704 thanks to @Rpinski)
  • RichText Tooltips (#1654)
  • Add "Open with ILSpy" entry to the Windows Explorer context menu on exe and dll files (via Options/Misc)
  • Empty metadata tables can now be hidden from the tree view
  • Folding for XAML output (thanks to @jogibear9988)
  • Add "Reset to defaults" in Options dialog
  • Dynamic assembly list generation for target framework
  • Improvements & Bugfixes:
  • Project export: Added an option to allow SDK-style format for project files. (#2031 by @dymanoid)
  • Solution and project decompilation: Add missing ProjectTypeGuids
  • Add search features (thanks to @miloush and @sailro)
  • #1498: Remove Fusion API usage: Use standard file enumeration instead. This should enable us to use the GAC even with restricted access, as only the LIST permission is required.
  • Fix DotNetCorePathFinder to properly support netstandard2.1
  • Fix multi-module support
  • Updated links to MS Docs (#2030 by @AustinWise)
  • Improve ReduceNestingTransform by considering nested containers (#1880 by @Chicken-Bones)
  • Analyzers: Added "Implements interface"-Analyzer (#2028 by @dymanoid)
  • Analyzer follow type forwarders (#1846 by @yyjdelete)
  • The decompiler now supports Scalar Replacement Of Aggregates, which by default only works on display-classes and display-structs. There is an option to make it affect all instances and uses of plain types containing fields only. NOTE: It is still in preview stage. You can activate it when using a debug build.
  • Added support for null-propagation on unconstrained generic expressions
  • Added support for [module: NullablePublicOnly]
  • Enhanced assembly resolution to distinguish target frameworks and use the correct references in case there are multiple versions of framework assemblies loaded.
  • Better decompilation of local functions, pinned regions and display-classes
  • Disassembler: actually make use of the cancellation token
  • Support VB Select Case on string
  • Display System.Void as struct (#1835 by @yyjdelete)
  • Properly decompile auto events with tuples
  • Do not change accessibility of non-transformed local functions
  • Improve drag&drop support (#1860)
  • Fix bug in stackalloc initializer detection involving Span<decimal> (see #1855 by @yyjdelete)
  • Added struct constructor initializer pattern
  • DotNetCorePathFinder: Various bug fixes when working with .net core assemblies
  • Transform post-increment on float/double (#1769 thanks to @Chicken-Bones)
  • Fix extra minus sign when formatting -0 on .NET Core 3.0 (#1790 thanks to @Chicken-Bones)
  • Fix sealed modifier on interface methods with no body (#1792 thanks to @Chicken-Bones)
  • Fix NullReferenceException when foreach decompilation is turned off (#1754 thanks to @davidwengier)
  • Fixed performance problem when using an assembly from a MemoryStream (#1763 thanks to @yyjdelete)
  • Ready2Run (R2R):
  • Ready2Run (by @cshung see https://github.com/icsharpcode/ILSpy/wiki/ILSpy.ReadyToRun)
  • IL/IL with C#/ReadyToRun: Add metadata token hyperlinks to type, field, property and event declarations.
  • IL/IL with C#/ReadyToRun: Add rich-text tooltips
  • ReadyToRun: Optional output of UnwindInfo (#2043 by @edkazcarlson)
  • ReadyToRun: Using import cell name to describe callees (#1991 by @cshung)
  • ReadyToRun: Decorate the ready to run disassembly with DebugInfoBounds (#1987 by @cshung)
  • PDB Generation:
  • Improved sequence points of try-catch statements
  • Improved generation of sequence points (#1967 by @jacdavis)
  • PDB generation: Use correct sequence points in LINQ expressions and many smallish bug fixes
  • dotnet ilspycmd Tool:
  • New option: usepdb (for improved variable naming)
  • Breaking change: option debuginfo renamed to genpdb
  • #1740: Add LanguageVersion, RemoveDeadCode and RemoveDeadStores switches
  • ILSpy pwsh cmdlets:
  • Show a progress bar during decompilation

New in ILSpy 6.0.0.5420 Preview 1 (Dec 2, 2019)

  • BREAKING CHANGES / IN DEVELOPMENT:
  • The main new UI feature is a multi-tab docking interface. Please put it to the test and report bugs!
  • ILSpy 6.0 will require at least .NET 4.7.2 (v5.0 required .NET 4.6.2)
  • New Language Features:
  • C# 8.0 Default Interface Methods
  • C# 8.0 Async streams (currently not covering await foreach)
  • C# 8.0 await using
  • C# 8.0 Readonly members
  • New Features:
  • Add search features (thanks to @miloush and @sailro)
  • resources (#1707)
  • assemblies (#1708)
  • namespaces (#1736)
  • Add assembly column to search pane (#1690)
  • Decompiler Engine Improvements & Bugfixes:
  • Added struct constructor initializer pattern
  • DotNetCorePathFinder: Various bug fixes when working with .net core assemblies
  • Transform post-increment on float/double (#1769 thanks to @Chicken-Bones)
  • Fix extra minus sign when formatting -0 on .NET Core 3.0 (#1790 thanks to @Chicken-Bones)
  • Fix sealed modifier on interface methods with no body (#1792 thanks to @Chicken-Bones)
  • Fix NullReferenceException when foreach decompilation is turned off (#1754 thanks to @davidwengier)
  • Fixed performance problem when using an assembly from a MemoryStream (#1763 thanks to @yyjdelete)
  • UI Improvements:
  • New icons (based on VS 2017 icon pack) (#1704 thanks to @Rpinski)
  • Use XAML for icons (high DPI)
  • Docking and multi tab support (see #1725 and #1801)
  • RichText Tooltips (#1654)
  • Folding for XAML output (thanks to @jogibear9988)
  • dotnet ilspycmd Tool:
  • #1740: Add LanguageVersion, RemoveDeadCode and RemoveDeadStores switches

New in ILSpy 5.0.2.5153 (Nov 2, 2019)

  • Fix crash while resolving .NET core references
  • Respect language settings in display class transformation
  • Use specialized generic types if a specialized variable is captured
  • Stack overflow when decompiling a bool -> bool? conversion
  • Expand using declarations setting was not saved

New in ILSpy 5.0.1.5145 (Oct 7, 2019)

  • VSIX: Fixes for reference assemblies, type navigation
  • PDBgen: Fix for sequence points generation
  • Add support for null propagation on array access: arr?[i]
  • Additional smaller fixes and improvements

New in ILSpy 5.0.0.5124 (Sep 20, 2019)

  • New Language Features:
  • C# 8.0: Nullable Reference Types
  • C# 7.3: unmanaged generic constraint
  • C# 7.3 Indexing movable fixed buffers: Fixed buffers can be indexed into without first being pinned.
  • Use Unsafe intrinsics to represent IL operations that cannot be expressed in C#.
  • C# 7.0 Generalized async return types
  • C# 7.0 Local functions (#1586)
  • C# 7.0 Throw expressions (#1600)
  • New Features:
  • Decompile a set of assemblies to a solution (#1550 by @dymanoid)
  • New BAML Decompiler
  • MSIX for Microsoft Store: @onovotny added build support (including Azure Pipelines).
  • Generate VS Windows Forms Designer-compliant code if a method is identified as Windows Forms InitializeComponent
  • Added new RemoveDeadStores option.
  • Added new AlwaysShowEnumMemberValues option.
  • Decompiler Engine Improvements & Bugfixes:
  • Improved stability of decompiler and disassembler on invalid metadata tokens.
  • Improved decompilation in case not all types/references are available.
  • Added switch-on-string pattern for empty string case.
  • Add support for ReadOnlySpan<T> initialization pattern
  • Improved decompilation of ref readonly delegates and return types.
  • Improved decompilation of ref typed expressions, in particular ref/in extension methods and in parameters.
  • Improved support for Mono yield return state machines and closure types.
  • Improved decompilation of LINQ queries
  • PDB generator now can emit "method stepping information" for async #1422
  • Improvements & Bugfixes:
  • Many minor bug and stability fixes.
  • Improved performance in ILInlining step
  • VSIX: Fix issue of missing dependencies
  • UI Improvements:
  • Avoid blocking the UI when waiting on assembly load while restoring the saved position in the treeview
  • Support obfuscated names in treeview and search #1359
  • Escape non-printable characters in IL view
  • Rework C# decompiler options dialog (unify language settings panel)
  • Make indentation of decompiled code configurable.
  • Chinese translation by @maikebing (#1299) screenshots
  • Small improvements in search panel by @mcpiroman (#1476)
  • Show error message if an entity cannot be analyzed instead of crashing.
  • Improved linking in the decompiler view:
  • Method group / delegate references
  • The constructor of an attribute is reachable, by clicking on the open/close parenthesis.
  • Fixed fields are now properly linked
  • Added matching bracket highlighting
  • Updated to AvalonEdit 6.0 Preview
  • Dotnet ilspycmd Tool:
  • Add -d|-debuginfo option See Demo app
  • Add -r|-referencepath option
  • Architectural Changes:
  • We dropped support for all TFMs except netstandard2.0 #1416
  • Reactivate many tests from old decompiler

New in ILSpy 5.0.0.4688 Preview 1 (Mar 11, 2019)

  • New Language Features
  • C# 8.0: Nullable Reference Types
  • C# 7.3: unmanaged generic constraint
  • Improvements & Bugfixes
  • PDB generator now can emit "method stepping information" for async #1422
  • Generate VS Windows Forms Designer-compliant code if a method is identified as Windows Forms InitializeComponent
  • Add support for ReadOnlySpan initialization pattern
  • Improved decompilation of LINQ queries
  • Improved performance in ILInlining step
  • New BAML Decompiler
  • UI Improvements
  • Avoid blocking the UI when waiting on assembly load while restoring the saved position in the treeview
  • Support obfuscated names in treeview and search #1359
  • Escape non-printable characters in IL view
  • Reactivate SearchMsdnContextMenuEntry
  • dotnet ilspycmd Tool
  • Add -d|-debuginfo option See Demo app
  • Add -r|-referencepath option
  • Architectural Changes
  • We dropped support for all TFMs except netstandard2.0 #1416
  • Reactivate many tests from old decompiler

New in ILSpy 4.0.1.4530 (Jan 25, 2019)

  • This is a hotfix release. Two UI-related changes have been incorporated:
  • ILSpy: Restore 3.x default value of "Show internal types and members" setting
  • ILSpy.AddIn: Include BAML decompiler plugin in VSIX distribution

New in ILSpy 4.0.0.4521 (Jan 17, 2019)

  • New Language Features:
  • C# 1.0/2.0 overloaded &&/|| operators
  • C# 4.0 optional arguments
  • C# 7.1 reference assemblies: ILSpy will show a warning if you are looking at a reference assembly
  • C# 7.2 non-trailing named arguments
  • C# 7.2 stackalloc with Span
  • C# 7.3 stackalloc initializers
  • Improved Pattern Detection:
  • Decompilation and pretty-printing of float literals (#517 -> #1350)
  • Object and array initializer improvements
  • Various smaller improvements in correctness and prettiness of the decompiled code.
  • Decompilation of integer literals (#1322)
  • Variable splitting works better with method calls (#1253)
  • Expression Trees: Multiple levels of nesting are now supported better
  • C# 6.0 string interpolation with FormattableString/IFormattable
  • Improvements & Bugfixes:
  • Added option to display all members, including compiler-generated members and getters/setters in tree view. (#747)
  • Added option to display metadata token in 10-based or hex format. (#628)
  • Reorganized option pages. (#1130)
  • Local functions: Code is no longer hidden if local functions are used in the code, as long as they're not decompled correctly. Note that this might still lead to compile errors, if anonymous types or lambdas are used in the local functions.
  • Decompilation of invalid IL
  • Improved decompilation of C++/CLI constructs
  • Improved stability of analyzers
  • Various smaller bugfixes:
  • Misc
  • CreateCecilObjectModel: extension method to help plugin writers porting their plugins to ILSpy 4.0
  • IAmbience API revived: If you want to nicely print type names or member signatures in C# style, you can now use CSharpAmbience
  • "Open containing folder" and "Open command line here" added to Assembly tree nodes.
  • Experimental PDBgen (no lambda support, no yield/async state machines; very basic C#)
  • New IAnalyzer API
  • Added IDocumentationProvider: allows providing XML doc comments from custom sources
  • Added IDebugInfoProvider: allows providing debug info (variable names and sequence points)
  • Architectural Changes
  • For ILSpy 4 we replaced Mono.Cecil with System.Reflection.Metadata. The wiki entry on SRM deals at length with information that is important to addin writers, the background story and some of the performance/memory improvements you as a user of ILSpy can expect.
  • Our goal for this version given the underlying architectual changes is as follows: "As good or better as ILSpy 3.2 in terms of decompilation quality, stability, performance and memory usage."

New in ILSpy 4.0.0.4520 RC2 (Jan 14, 2019)

  • Only bug fixes in comparison to RC1. Prior feature release notes apply.

New in ILSpy 4.0.0.4319 Beta 2 (Aug 13, 2018)

  • Improved Pattern Detection:
  • Expression Trees: Multiple levels of nesting are now supported better
  • Misc:
  • CreateCecilObjectModel: extension method to help plugin writers porting their plugins to ILSpy 4.0
  • IAmbience API revived: If you want to nicely print type names or member signatures in C# style, you can now use CSharpAmbience
  • "Open containing folder" and "Open command line here" added to Assembly tree nodes.
  • Improvements & Bugfixes:
  • Local functions: Code is no longer hidden if local functions are used in the code, as long as they're not decompled correctly. Note that this might still lead to compile errors, if anonymous types or lambdas are used in the local functions.

New in ILSpy 4.0.0.4285 Beta 1 (Aug 2, 2018)

  • New Language Features:
  • C# 1.0/2.0 overloaded &&/|| operators
  • C# 4.0 optional arguments
  • C# 7.1 reference assemblies: ILSpy will show a warning if you are looking at a reference assembly
  • C# 7.2 non-trailing named arguments
  • Improved Pattern Detection:
  • C# 6.0 string interpolation with FormattableString/IFormattable
  • Misc:
  • Experimental PDBgen (no lambda support, no yield/async state machines; very basic C#)
  • New IAnalyzer API
  • Added IDocumentationProvider: allows providing XML doc comments from custom sources
  • Added IDebugInfoProvider: allows providing debug info (variable names and sequence points)
  • Contributions:
  • Chicken-Bones: Improved block ordering in ConditionDetection (#1218)
  • ashmind: Decimal constant improvements (#1236)
  • cshung: Bug fix for #1224 (#1243)
  • Improvements & Bugfixes:
  • Decompilation of invalid IL
  • Improved decompilation of C++/CLI constructs
  • Improved stability of analyzers
  • Architectural Changes:
  • For ILSpy 4 we replace Mono.Cecil with System.Reflection.Metadata. The wiki entry on SRM deals at length with information that is important to addin writers, the background story and some of the performance/memory improvements you as a user of ILSpy can expect.
  • Our goal for this version given the underlying architectual changes is as follows: "As good or better as ILSpy 3.2 in terms of decompilation quality, stability, performance and memory usage."

New in ILSpy 4.0.0.4226 Alpha 1 (Jul 24, 2018)

  • Technical details for this first release of ILSpy 4.0 are available in a dedicated page in our wiki: SRM deals at length with information that is important to addin writers, the background story and some of the performance/memory improvements you as a user of ILSpy can expect.
  • Our goal for this version given the underlying architectual changes is as follows: "As good or better as ILSpy 3.2 in terms of decompilation quality, stability, performance and memory usage."
  • Therefore we ask you to compare the last released production version with this Alpha 1 - we are confident that even at this early stage we match the quality in decompilation. If not, please do open an issue (sample assemblies very much appreciated!)

New in ILSpy 3.2.0 Build 3856 (Jul 2, 2018)

  • Security Advisory:
  • Resource Deserialization Security Vulnerability If you are using an older version, please update immediately! (especially if the assemblies you decompile are untrustworthy). Note that the integration in Visual Studio via Roslyn is not affected.
  • The Visual Studio addin is now available on the marketplace, the Decompiler engine as usual via NuGet.
  • New Language Features:
  • C# 4.0 Dynamic binding
  • C# 4.0 Named arguments
  • C# 7.0 Tuple types
  • C# 7.3 Attributes on backing fields of properties
  • Improved Pattern Detection:
  • C# 1.x switch-on-string
  • Compound assignments for user-defined operators
  • Improved decompilation of collection initializers
  • Improvements in TypeSystem:
  • Distinguish between unkown type and no type.
  • Dead code removal
  • Misc:
  • Rewrite of ILSpy.AddIn
  • Improved decompilation of Windows Forms assemblies
  • Search results now use a ListView with two columns, search results can be sorted by clicking on the header.
  • Updated pattern detection for changes in Roslyn 2.8
  • Improved control-flow decompilation of conditional statements (special thanks to @Chicken-Bones #1176 )
  • Upgrade to Mono.Cecil 0.10.0

New in ILSpy 3.2.0 Build 3846 RC (Jun 25, 2018)

  • Contributions:
  • Improved control-flow decompilation of conditional statements (special thanks to @Chicken-Bones #1176 )
  • Search engine partial name match (special thanks to @TheOneAmir #1119 )
  • Improvements & Bugfixes:
  • Improved stability of ILSpy.AddIn
  • Avoid ambiguities when referring to Attribute types in attribute context
  • Improved decompilation of Windows Forms assemblies
  • Improved code generation when using generic methods (emit fewer casts, if possible)
  • Support for extension 'Add' methods in collection initializers (forgotten C# 6.0 feature)
  • Improved decompilation of collection initializers
  • Use overload resolution to ensure we call the correct indexer accessor methods
  • Streamlined decompilation of enum value declarations
  • ... as well as other minor fixes

New in ILSpy 3.2.0 Build 3809 Beta (Jun 11, 2018)

  • New Language Features:
  • C# 4.0 Dynamic binding
  • C# 4.0 Named arguments
  • C# 7.0 Tuple types
  • C# 7.3 Attributes on backing fields of properties
  • Improved Pattern Detection:
  • C# 1.x switch-on-string
  • Compound assignments for user-defined operators
  • Improvements in TypeSystem:
  • Distinguish between unkown type and no type.
  • Dead code removal
  • Misc:
  • Rewrite of ILSpy.AddIn
  • Search results now use a ListView with two columns, search results can be sorted by clicking on the header.
  • Updated pattern detection for changes in Roslyn 2.8
  • Upgrade to Mono.Cecil 0.10.0
  • Various smaller bug fixes and stability improvements

New in ILSpy 3.1.0 Build 3645 RC (Mar 30, 2018)

  • Fixes for mcs:
  • LINQ
  • Delegate construction
  • Misc:
  • Updated pattern detection for changes in Roslyn 2.7
  • Refactored ILSpy.AddIn
  • Improvements in TypeSystem:
  • Lazy-loading for nested types (needs testing)
  • Add metadata tokens to type system
  • Remove dead code
  • Bug Fixes for Roslyn:
  • dotnet/roslyn#25251 (Decompilation should simplify "type" usage)
  • dotnet/roslyn#25246 (Decompilation cannot decompile xUnit's Assert.All)
  • #1095 (C# decompilation, for flags enums always use hex prefix)

New in ILSpy 3.1.0 Build 3599 Beta 1 (Mar 20, 2018)

  • New Language Features:
  • C# 7.2 private protected (contributed)
  • C# 7.2 conditional ref
  • C# 7.1 async Main (contributed)
  • C# 7.0 out variables
  • C# 7.0 ref returns and locals
  • C# 6.0 string interpolation
  • C# 6.0 await in catch / finally
  • C# 6.0 expression-bodied members
  • C# 6.0 null propagator (null-conditional operator, succinct null checking)
  • Improved Mono mcs Codegen (following areas):
  • switch
  • lock
  • foreach
  • Test Infrastructure Improvements:
  • Support for mcs
  • Support for vbc
  • Misc:
  • UI: Switch to VS MEF (contributed)
  • General/UI: Language version selection
  • VSIX: drop VS 2015 support

New in ILSpy 3.0.1 Build 3459 (Dec 22, 2017)

  • This is a bugfix release for the WPF UI only (NuGet and xplat clients not updated, use 3.0.0 instead)

New in ILSpy 3.0.0.3443 (Dec 18, 2017)

  • This release's dominating theme was rearchitecting the underlying decompiler engine. Daniel provided a great write-up of what that all entailed in the newdecompiler architecture notes in this Wiki.
  • The goal for language support was to at least match version 2.4. This was achieved and a lot of "guessing" (which could result in incorrect code) from the old engine was turned into working decompiled C# code. The current state of language support is a "living" document that will change over time, and it will give you a good idea where we are at this very moment in time.
  • Aside from the architectural changes to the decompiler engine, we also went cross-platform with support for .NET Standard in ICSharpCode.Decompiler. This allowed us to move automation tasks from parameters on the WPF UI to a x-plat Linux / Mac / Windows command line application (.NET Core). If a command line application does not allow you enough programmability, there are also PowerShell cmdlets - again, x-plat and for PowerShell on Windows as well as PowerShell Core x-plat (note that both are a first iteration, and pwsh itself isn't RTM yet).
  • We are very happy that a Visual Studio Code extension was contributed based on the x-plat work we were doing. At this point we'd like to thank everyone who contributed bug reports, features ideas, pull requests and in general support helping us get this thing off the ground and into the hands of our users!
  • So - what do you get? Way better quality decompiled code, performance improvements (speed and memory), more options of frontends on more platforms than ever before, and we also snuck in a few new features / helpful additions:
  • Open assembly from NuGet package
  • NuGet package includes debug symbols and source code #943 (comment)
  • "Live" documentation code snippets via a Xamarin Workbooks demo
  • "IL with C#" view (including sequence points guessing)

New in ILSpy 3.0.0.3403 Beta 4 (Dec 5, 2017)

  • This release is currently without VSIX (broken).
  • Changes since Beta 3:
  • NewtonSoft JSON replaced by LightJson (traded NuGet for code inclusion)
  • Cecil is referenced via NuGet (instead of submodule which is kept, see #1001)
  • ICSharpCode.Decompiler targets net46 instead of net461 (netstandard2.0 targetting unchanged)
  • Fix --type option in ICSharpCode.Decompiler.Console
  • Fix x-plat bugs in DotNetCore/DotNetCorePathFinder

New in ILSpy 3.0.0.3362 Beta 3 (Nov 28, 2017)

  • Final Beta, feature complete!
  • Expression tree support (last language feature)
  • Nupkg drag & drop (contributed, thanks!)
  • Support for retargetable assemblies
  • Correctness improvements, bug fixes
  • UI optimizations (loading speed)

New in ILSpy 3.0.0.3283 Beta 2 (Nov 6, 2017)

  • Improve handling of post-increment and compound assignments
  • Add foreach over array pattern
  • Pointer arithmetic
  • Many more correctness improvements and bug fixes
  • Frontends.sln builds x-plat .Console and .Powershell cmdlets (see https://github.com/icsharpcode/ILSpy/blob/master/ICSharpCode.Decompiler.PowerShell/Demo.ps1) projects using the Decompiler NuGet package. The Windows standalone executable package for the .Console (ILSpyCmd.Win10-x64_3.0.0.3283-beta2.zip) is attached to this release. (Would anyone volunteer implementing a Homebrew formula?)
  • A Xamarin Workbooks demo is included to show off snippets on how to use the Decompiler NuGet package. To see its output, please see comment #964 (comment)

New in ILSpy 3.0.0.3142 Beta 1 (Oct 23, 2017)

  • Switch statement decompilation
  • "IL with C#" view
  • Fixes to object initializers, catch, await and more
  • Nuget package -beta1 is corresponding to this release

New in ILSpy 3.0.0.2953 Preview 2 (Oct 3, 2017)

  • (Partial) support for nullables, foreach, using
  • New: Open assembly from Nuget package
  • A lot of small-ish fixes
  • The VSIX is here! And it supports output from netstandard and netcore projects.
  • The -alpha4 Nuget package corresponds to this release.

New in ILSpy 3.0.0.2787 Preview (Sep 19, 2017)

  • This is a preview release! Framework requirements: .NET 4.6.1 or higher.
  • Language support status can be found in issue #829, please note that this is a live issue and might have changed after this preview has been published. Notable missing feature compared to older versions: nullables. (only fully implemented features have a checkmark in the status issue). Before opening an issue ("X doesn't decompile correctly") please go check with issue #829!
  • New: support for .NET Standard and .NET Core assemblies.
  • Missing: decompile to VB. Contributions welcome because we concentrate solely on C#.
  • Architectural changes are documented in the wiki (Note: roadmap not up to date as of this release). Important points to note (design goals): the decompiler should always create semantically correct and compilable code.

New in ILSpy 2.3.2.1886 (Apr 11, 2016)

  • Bug fixes

New in ILSpy 2.3.1.1855 (Sep 3, 2015)

  • Bug fixes
  • Decompiler NuGet package

New in ILSpy 2.3.0.1827 (Sep 3, 2015)

  • UI improvements
  • Improved search: regex support, support for specifying the type of the search directly in the textbox (t: for type, m: for member and c: for constant)
  • "Used by" analyzer node on types
  • ILSpy truncates browsing history when switching language modes
  • Show version of assemblies next to caption in tree node
  • Adapt size of ResourceStringTable/ResourceObjectTable on changed size of MainWindow.mainPane.
  • Display assembly information as tooltip on Assembly tree nodes
  • BAML decompiler fixes:
  • Correctly qualify types in nested {x:Static} extensions
  • BAML to XAML conversion does not generate escape sequence {} correctly
  • IL decompiler fixes:
  • improved recognition of lock statements
  • improvements in pointer arithmetic decompilation
  • reduce nesting of if-else-if-statements
  • ILSpy can't find any Overridden By methods
  • Mistake ILSpy decompile: delegate instantiation should only be removed if an implicit conversion exists.
  • ILSpy Visual Studio AddIn 1.1:
  • Open Build Output in ILSpy
  • Collapse group in Visual Studio context menu
  • Improved extensibility for Reflexil (#523)

New in ILSpy 2.2.0.1706 (Sep 3, 2015)

  • Added option to allow folding on all braces
  • Added context menu to code view with folding commands
  • Show all images contained in .ico resource
  • Decompiling as a Visual Studio project now creates AssemblyInfo file
  • Added option to display metadata tokens in tree
  • Fixed lots of decompilation bugs

New in ILSpy 2.1 (Oct 9, 2012)

  • Decompilation working (on Windows 8 RP)

New in ILSpy 2.0 (Oct 9, 2012)

  • Assembly Lists
  • Support for decompiling Expression trees
  • Support for lifted operatores on nullables
  • Decompile to Visual Basic
  • Search for multiple strings separated by space (searching for "Assembly manager" in ILSpy.exe would find AssemblyListManager)
  • Clicking on a local variable will highlight all other occurrences of that variable
  • Ctrl+F can be used to search within the decompiled code view

New in ILSpy 2.0 Beta 1 (Oct 9, 2012)

  • New features:
  • Assembly Lists
  • Support for decompiling Expression trees
  • Support for lifted operatores on nullables
  • Integrated Debugger
  • Decompile to Visual Basic
  • Search for multiple strings separated by space (searching for "Assembly manager" in ILSpy.exe would find AssemblyListManager)
  • Clicking on a local variable will highlight all other occurrences of that variable
  • Ctrl+F can be used to search within the decompiled code view