Skip to content

Releases: icsharpcode/ILSpy

ILSpy 7.2 Preview 1

11 Oct 08:51
Compare
Choose a tag to compare
ILSpy 7.2 Preview 1 Pre-release
Pre-release

New Language Features

  • Adjusted pattern detection for Roslyn 3.11
  • C# 7.0 pattern matching
  • C# 9 covariant returns

Contributions

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

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

ILSpy 7.1

30 May 19:33
Compare
Choose a tag to compare

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

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.

ILSpy 7.0

28 Apr 16:33
Compare
Choose a tag to compare

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)

ILSpy 7.0 RC2

18 Apr 17:17
Compare
Choose a tag to compare
  • Simple UI language switching support
  • Bug fixes

ILSpy 7.0 RC1

08 Apr 17:33
Compare
Choose a tag to compare

General

  • Dark mode! (big thank you to @tom-englert in #2347)
  • Building ILSpy for .NET 5 is now possible (see multitargeting.props.template)
  • Added inline display of CustomDebugInformation table entries in metadata
  • Add metadata tree nodes for blob, guid, string and user string heap

Contributions

Bug fixes

  • 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)
  • And many other fixes, for a full list click here.

ILSpy 7.0 Preview 3

28 Feb 19:55
ee10d29
Compare
Choose a tag to compare

General

  • Detect use of csc /deterministic switch
  • Update Ready2Run (see #2279 by @cshung)
  • #2286: Enable server-mode GC in ILSpy
  • Improve assembly resolver API to allow async usage

UI Improvements

  • Search enabled in NuGet packages
  • Enable theming for message boxes (see #2276 by @AustinWise)

Bug fixes

  • #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)
  • And many other fixes, for a full list click here.

ILSpy 7.0 Preview 2

11 Jan 12:49
Compare
Choose a tag to compare

New Language Features

  • C# 9.0: record classes
  • C# 9.0: with expressions
  • C# 9.0: primary constructors

General

UI Improvements

  • Added setting highlight the current line in the code view (see #2224, by @DickvdBrink)
  • Fix #2205: About page should always be opened in a new tab.

Bug fixes

  • 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)
  • And many other fixes, for a full list click here.

ILSpy 7.0 Preview 1

16 Nov 15:39
Compare
Choose a tag to compare
ILSpy 7.0 Preview 1 Pre-release
Pre-release

Important note for consumers of our ICSharpCode.Decompiler NuGet package: we have aligned our dependencies with Roslyn 3.8.0, see #2173

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.

ILSpy 6.2.1

12 Oct 11:51
Compare
Choose a tag to compare

This is a bugfix release.

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

ILSpy 6.2

24 Sep 13:55
Compare
Choose a tag to compare

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