Skip to content

Releases: icsharpcode/ILSpy

ILSpy 8.0 Preview 4

03 Apr 11:51
29ccf6c
Compare
Choose a tag to compare

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

Contributions

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

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

ILSpy 8.0 Preview 3

04 Dec 15:18
1e00940
Compare
Choose a tag to compare

ILSpy 8 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 or newer minor release must be installed prior to starting ILSpy.

IMPORTANT: If you don't have the .NET Desktop Runtime installed, the .NET bootstrapper (a dialog popping up when you try to run ILSpy) will link you to the .NET Runtime which supports only console apps! Please follow the above link and download the Desktop Runtime.

New Language Features

  • C# 11: Required members
  • Updated pattern detection for Roslyn 4.4.0

Contributions

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.

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

ILSpy 8.0 Preview 2

30 Jul 10:16
Compare
Choose a tag to compare
ILSpy 8.0 Preview 2 Pre-release
Pre-release

ILSpy 8 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 must be installed prior to starting ILSpy.

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

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

ILSpy 8.0 Preview 1

20 Apr 10:14
Compare
Choose a tag to compare
ILSpy 8.0 Preview 1 Pre-release
Pre-release

ILSpy 8 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 must be installed prior to starting ILSpy. This is true for:

  • the installer
  • the framework-dependent zip
  • the VSIXs

Functionality is supposed to be unchanged and fully functional in this release compared to 7.2. If something works in 7.2 but not 8.0-preview1, please file a bug.

Breaking Changes

  • ILSpy 8.0 will target net60-windows (see #2642) and all plugins will have to be migrated to the new platform.
    • Note: The ICSharpCode.Decompiler engine and NuGet package will continue to target netstandard2.0
  • Platform-independent APIs will be moved to ICSharpCode.ILSpyX, currently that includes (but is not limited to):
    • LoadedAssembly and AssemblyList APIs
    • PdbProvider APIs
  • LoadedAssembly.WaitUntilLoaded() was removed, because it leads to bugs; use await LoadedAssembly.GetLoadResultAsync() instead
  • The MSIX project has been removed and the installer introduced in 7.x will take its place in the Microsoft Store going forward (at RC/RTM).

Contributions

  • ilspycmd received support for the "nested directories" option on project export. (see #2636 by @GreyXor)
  • ilspycmd support for generating a solution from multiple projects (based on code provided by @marwie in #2364)
  • Namespace nesting in ILSpy tree view (based on code provided by @ds5678 in #2667)
  • Fix the ordering of COM interface methods, properties, and events to appear in their originally defined order (see #2639 by @zhuman)

Enhancements

  • Performance optimization of analyzers (see #2643)

Bug fixes

  • #2634: target expressions of delegate references were not decompiled correctly
  • #2632: Make sure that changing the setting "ExpandMemberDefinitions" has an effect when refreshing a decompiled view.
  • #2629: Indentation of method-call chains.
  • #2653: ILSpy reports wrong visibility for overridden protected internal properties if located in another assembly.
  • #2610: Explicitly qualify members in TemplateBindings.
  • #2655: TranslateArrayInitializer crashes with out of order array init

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

ILSpy 7.2.1

04 Apr 18:32
Compare
Choose a tag to compare

Enhancements

  • Improved handling of nullability annotations on types involved in implicit conversions.
  • Improved detection of pinned regions.

Bug fixes

  • #2640: Invalid implicit enum value for unordered items
  • #2646: Missing values for enums with skipped or duplicate items
  • #2664: Fix NRE in ScopeSearchToAssembly.
  • #2637: Add missing Microsoft.Win32.Registry dependency to nuspec.template
  • #2582: Assertion when using named arguments in a constrained call
  • #2654: Ignore custom attributes on parameter where SequenceNumber is out-of-range.
  • See full list of fixes here.

ILSpy 7.2

28 Feb 15:34
Compare
Choose a tag to compare

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

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

Bug fixes

  • Dirkster99/AvalonDock#324 Navigator window a11y fixes
  • #2579: Use "ILSpyInstance" mutex to wait until the first ILSpy instance is ready to receive WM_COPYDATA
  • #2615: Overflow check did not work reliably due to fp rounding error
  • #2612: Decompilation of newarr with int.MaxValue causes OOME
  • #2622: Fix crash in ExpressionBuilder when decompiling object initializer composed of readonly properties
  • #2533: Various bugfixes in pinned-region detection.
  • #2547 and #2495: Improved decompilation of VB.NET decimal constants.
  • #2544: Do not produce syntax errors with interpolated strings
  • #2545: LINQ does not support null-forgiving operator, suppress transform.
  • #2541: Add explicit unchecked() around non-constant cast of constant to nint
  • #2518: "Other resources" section in resource files was not properly displayed
  • #2534: Handle default implementations of properties and events in interfaces
  • #2458, #2459: Fixed various correctness issues in IL code generated by C++/CLI
  • #2530: Stability fixes in pattern matching detection
  • #2378: Stability fixes in deconstruction detection
  • #2379: This fixes an issue where return statements within try-blocks could turn into goto statements
  • #2052: BAML-to-XAML: Resolve namespaces of properties
  • #1858 and #2188: Improved decompilation of display-classes
  • #2424: Suppress the string==null special-case within the string class itself
  • #2092: 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

Visual Studio AddIn

ILSpy 7.2 RC

15 Feb 14:37
Compare
Choose a tag to compare

Fixes

ILSpy 7.2 Preview 4

07 Feb 06:46
Compare
Choose a tag to compare
ILSpy 7.2 Preview 4 Pre-release
Pre-release

Note: ILSpy_binaries_7.2.0.6841-preview4_Fix_zhCN_Start.zip is a quick fix for #2623 - please use when experiencing start crashes on a Chinese system.

New Language Features

  • C# 8.0: stackalloc in nested contexts

Contributions

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

  • #2579: Use "ILSpyInstance" mutex to wait until the first ILSpy instance is ready to receive WM_COPYDATA.
  • #2615: Overflow check did not work reliably due to fp rounding error.
  • #2612: Decompilation of newarr with int.MaxValue causes OOME.
  • #2622: Fix crash in ExpressionBuilder when decompiling object initializer composed of readonly properties.
  • And many other fixes, for a full list click here.

ILSpy 7.2 Preview 3

09 Dec 08:42
43a22d2
Compare
Choose a tag to compare
ILSpy 7.2 Preview 3 Pre-release
Pre-release

New Language Features

  • Updated pattern detection for Roslyn 4.0
  • Updated pattern detection for Mono C# compiler 5.x
  • C# 10 file-scoped namespace declarations
  • C# 10 abstract static interface members

Contributions

ilspycmd

  • Removed .NET Core 2.1 TFM, added .NET 6.0 TFM

Enhancements

  • #2404: Cache decompilation results when switching tabs.
  • #2550 and #2551: Fix tab and focus handling.
  • #2330: Added an option to toggle namespace sub-directory support in project export.
  • #1175: Added inassembly: and innamespace: search predicates

Bug fixes

  • #2533: Various bugfixes in pinned-region detection.
  • #2547 and #2495: Improved decompilation of VB.NET decimal constants.
  • #2544: Do not produce syntax errors with interpolated strings
  • #2545: LINQ does not support null-forgiving operator, suppress transform.
  • #2541: Add explicit unchecked() around non-constant cast of constant to nint
  • And many other fixes, for a full list click here.

ILSpy 7.2 Preview 2

08 Nov 06:16
Compare
Choose a tag to compare
ILSpy 7.2 Preview 2 Pre-release
Pre-release

New Language Features

  • C# 9.0 skip locals init

Contributions

Visual Studio AddIn

Enhancements

  • 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
  • #2298: Allow to change the DecompilerTextView's font size through scrolling.

Bug fixes

  • #2518: "Other resources" section in resource files was not properly displayed
  • #2534: Handle default implementations of properties and events in interfaces
  • #2458, #2459: Fixed various correctness issues in IL code generated by C++/CLI.
  • #2530: Stability fixes in pattern matching detection
  • #2378: Stability fixes in deconstruction detection
  • And many other fixes, for a full list click here.