ILSpy Versions Save

.NET Decompiler with support for PDB generation, ReadyToRun, Metadata (&more) - cross-platform!

v7.2.1

2 years ago

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.

v7.2

2 years ago

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

Bug fixes

  • https://github.com/Dirkster99/AvalonDock/pull/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

v7.2-rc

2 years ago

Fixes

v7.2-preview4

2 years ago

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

  • 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)
  • Updated Chinese translation. (by @Nyerst in #2606)

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.

v7.2-preview3

2 years ago

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

  • Use Trace.Listeners instead of Debug.Listeners (by @yyjdelete in #2555)
  • Introduce MSI-based installer (by @Rpinski in #2558)

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.

v7.2-preview2

2 years ago

New Language Features

  • C# 9.0 skip locals init

Contributions

  • Various improvements in pattern detection for records (by @yyjdelete in #2476)
  • ILSpyCmd: Added support for single-file bundles (by @Freakness109 in #2499)
  • BAML decompiler: Add missing x:Static (by @wwh1004 and @bert2 in #2536)

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.

v7.2-preview1

2 years ago

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

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

v7.1

2 years ago

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)
  • 6a34df5cd0ebb65e6d416eedc3937a19e3af87bc: 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.

v7.0

3 years ago

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)

v7.0-rc2

3 years ago
  • Simple UI language switching support
  • Bug fixes