github dnSpyEx/dnSpy v6.4.0-rc1

latest releases: v6.5.0, v6.5.0-rc3, v6.5.0-rc2...
pre-release11 months ago

This is the first release candidate for the next version of dnSpyEx. As with any release candidate, if you encounter any issues please report them, especially if they were not present in the prior versions!

New features:

  • All distributions of dnSpyEx now support resolving Windows shortcut files (*.lnk) when they are dragged onto the assembly explorer.
  • Extended the export to project feature by adding support for unpacking multi-element resources back to .resx source files
  • Introduce two additional options to the Save Module dialog. (AddMvidSection and ForceBigColumns)
  • Added a new menu command to copy the full name of any metadata member.
  • Add support for horizontal scrolling with the shift key in the text and hex editors.
  • Add support for multiline copy and paste to the text editor.
  • ILSpy Decompiler:
    • Display custom attributes defined on interface implementations in the IL disassembly
    • Add IL with C# decompiler language which annotates the IL disassembly with comments showing the higher level C# statements above the IL code responsible for them.
    • Show field initial value for simple primitive types in a comment located above the field declaration.
    • Added a new decompiler option to disable the insertion of unnecessary parenthesis.
  • Reworked BAML disassembler:
    • Heavily improved syntax highlighting and other editor features like indent guides and brace pair highlighting.
    • Add local jump to reference for BAML attribute, type, etc. declaration records.
    • Add support for dnSpy's number tooltips in the disassembler.
    • Introduce tooltips for type, assembly, property, and resource references.
    • Improved performance and memory efficiency.

Improvements and bug fixes:

  • Fixed regular non-publish .NET 6 debug and release dnSpy builds, they no longer crash on startup and now also use the correct x86 icon when applicable.
  • Fixed a commonly occurring NullReferenceException when editing event definitions using the assembly editor component.
  • Improved Chinese translation by @Wenveo
  • Fixed incorrect handling of __arglist parameter in the Edit in C#/Edit in VB options.
  • Fix incorrect display of VarArg and NativeVarArg in the signature editing dialog.
  • Properly handle Unmanaged calling convention across the dnSpyEx code base.
  • Fixed incorrect escaping behavior when displaying strings found in embedded resources.
  • Refresh search results when the scope of the search operation is changed (e.g. a different file is selected and the search mode is set to the selected file)
  • Fixed C# and VB tooltips for types with uninstantiated generic parameter signatures.
  • Escape Hangul Filler characters and other similar whitespace characters that were previously not escaped across the dnSpyEx UI.
  • Use reference assemblies for the compiler in the Edit in C#/Edit in VB options to fix issues with incorrect assembly references being emitted when editing .NET Standard or .NET Core assemblies.
  • Added a workaround for a bug in WPF WindowChromeWorker that caused OverflowException to be thrown for invalid hittest window messages.
  • Correctly set the available options based on the window state in the Windows Alt + Space menu.
  • Improved .NET Standard assembly resolution to prioritize exact version match over the latest available version.
  • Fixed a bug that resulted in the ability of the user to infinitely scroll horizontally.
  • ILSpy Decompiler:
    • Fixed multiple NRE's that occurred when decompiling heavily obfuscated property metadata.
    • Fixed an issue that caused incorrect dynamic types to be introduced for method parameters.
    • Improved type inference for calli instructions as well as stores to readonly auto-properties.
    • Fixed several issues relating to the decompilation of member names containing a . character.
    • Display custom attributes in the same order that they appear in metadata by default.
    • Improved performance and memory efficiency.
  • Debugger:
    • Fixed certain expressions in the Watch and Locals window being incorrectly syntax highlighted.
    • Fixed a bug that prevented the Show Raw Locals option from working when the Roslyn EE failed to initialize due to invalid metadata.
    • Fixed a bug that prevented the DebuggerDisplayAttribute evaluator from working as intended.
    • Several improvements to the built-in IL interpreter and function evaluator aimed at improving performance and accuracy.
    • Fixed type name parsing issues which lead to the debugger incorrectly resolving custom attributes, security declarations, and some marshal blobs.
    • Improve the Show in memory command for objects in the locals and watch windows.
    • Improve the display of method names in the Call stack window. __arglist, dynamic, nint, nuint and tuple element names are now properly displayed.
    • Added an anti-anti-debug option to prevent the malicious use of NtRaiseHardError to trigger kernel faults (blue screens of death).
    • Added an anti-anti-debug option to prevent the detection of the debugger using a call to CloseHandle with an invalid handle.
    • CorDebug:
      • Improved loading of dynamic modules (fixed issues with thread safety and added code to fetch more metadata from the CorDebug API)
      • Fallback to COM-based metadata reading when the in-memory metadata is corrupted (e.g. anti-dumping protection)
      • Display COM error code when the debugger fails to start.
      • Made the timeout for CoreCLR debugger initialization configurable.
      • Display the HRESULT when attaching the CoreCLR debugger fails.
      • Improve support for debugging of single file bundle files which do not contain the required debugging components by trying to load them from the locally installed .NET installations.
    • Mono:
      • Improved loading of obfuscated modules when debugging
      • Fixed several issues related to the resolution of method definitions on newer debugger protocol versions
      • Fixed an unhandled AggregateException when connecting to a Unity debuggee (by @UlyssesWu).
      • Display the IP and port used to connect to the debuggee in the output window.
      • Improve loading of metadata from in-memory modules.
  • BAML decompiler:
    • Fixed resolution of PresentationFramework when it was referenced using its special ID 0xFFFF.
    • Lazily resolve known XAML types, properties, and other members to increase performance.
    • Improve extraction of BAML connection ID information to work without all dependency assemblies and in other edge cases.
    • Fixed an issue that resulted in dnSpy introducing markup extensions in cases where they were not syntactically valid.
    • Properly place markup extension arguments containing spaces in single quotes.
    • Fix issues regarding incorrect or missing escaping from markup extensions.
    • Fixed crashes caused by the UI's WPF markup extension parser when it encountered invalid syntax.
    • Fix a bug that caused XAML paths to lack a Z character at the end.
    • Improved support for markup extensions where their classes inherit from generic classes.
    • Improved support for nested types within XAML markup extensions.

Dependency updates:

  • Updated Rosyn compiler to 4.6.0
  • Updated VS MEF to 17.6.17
  • Updated Newtonsoft.Json to 13.0.3

New Contributors

Full Changelog: v6.3.0...v6.4.0-rc1

Thanks to everyone for reporting issues, opening pull requests, and supporting the project through other means! This release would not have been possible otherwise :P A special thanks goes out to all my current and past GitHub Sponsors for supporting this project!

Don't miss a new dnSpy release

NewReleases is sending notifications on new releases.