Skip to content

Releases: dnSpyEx/dnSpy

v6.5.1

26 Jun 16:27
f7e5dc6
Compare
Choose a tag to compare

New features:

  • Added a new command under the File menu to restart dnSpy as administrator. This is helpful when debugging files that require elevation
  • Add .NET runtimes to the predefined assembly lists in the File -> Open List... dialog. (by @QianMoXi)
  • Added a new analyzer node that shows all subtypes of the type being analyzed using the analyzer component
  • Added an additional field in the start debugging dialog which allows the user to customize the environment variables the program is started with
  • When running dnSpy on Windows 11, all windows now have rounded corners to match other applications on that OS

Improvements and bug fixes:

  • Support for static interface members has been added to the analyzer component. Usages and implementations should now be properly detected.
  • Fixed a jump to reference issue with pseudo custom attributes which on occasions prevented the feature from working
  • Improved XAML syntax highlighting
  • Improved XML doc lookup for members with special characters and explicit interface implementations
  • Improved text rendering performance and efficiency for controls other than the main text view
  • Fix a bug that caused the m_ulExtra field in the tables stream header structure to have an incorrect value.
  • Fix a bug that prevented the Show Data in Hex Editor command from showing on PE image section header nodes when the file was a non .NET PE file.
  • Updated translations
  • ILSpy Decompiler
    • Fixed a decompiler crash that occurred for nested types with invalid generic parameter definitions
    • Force the C# code labels for goto statements to always use an IL offset padded to 4 bytes
    • Fixed a stack overflow that occurred when decompiling very large methods bodies that resulted in dnSpy completely crashing
    • Improved handling of in parameters for method calls

Dependency updates:

  • Updated VS MEF to 17.10.37
  • Updated Roslyn to 4.10
  • Update NuGet.Configuration to 6.10
  • Updated dbgshim.dll component to the latest version

New Contributors

Full Changelog: v6.5.0...v6.5.1

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 and me working on it!

SHA-256 hashes:
dnSpy-net-win32.zip: 90f31f7af3250c19e28641f37ed627e9aeb67b27332dd8e125084d605035c668
dnSpy-net-win64.zip: 7b4e16ffdeded7e27785377f110388e4afb52250d4606246d52154e935be0ee8
dnSpy-netframework.zip: 95816dae47093966ccdb780c063f71576640d85d3e8584de490be43b1452f4e4

v6.5.1-rc1

20 Jun 20:33
c0da69c
Compare
Choose a tag to compare
v6.5.1-rc1 Pre-release
Pre-release

New features:

  • Added a new command under the File menu to restart dnSpy as administrator. This is helpful when debugging files that require elevation
  • Add .NET runtimes to the predefined assembly lists in the File -> Open List... dialog. (by @QianMoXi)
  • Added a new analyzer node that shows all subtypes of the type being analyzed using the analyzer component
  • Added an additional field in the start debugging dialog which allows the user to customize the environment variables the program is started with
  • When running dnSpy on Windows 11, all windows now have rounded corners to match other applications on that OS

Improvements and bug fixes:

  • Support for static interface members has been added to the analyzer component. Usages and implementations should now be properly detected.
  • Fixed a jump to reference issue with pseudo custom attributes which on occasions prevented the feature from working
  • Improved XAML syntax highlighting
  • Improved XML doc lookup for members with special characters and explicit interface implementations
  • Improved text rendering performance and efficiency for controls other than the main text view
  • Fix a bug that caused the m_ulExtra field in the tables stream header structure to have an incorrect value.
  • Fix a bug that prevented the Show Data in Hex Editor command from showing on PE image section header nodes when the file was a non .NET PE file.
  • Updated translations
  • ILSpy Decompiler
    • Fixed a decompiler crash that occurred for nested types with invalid generic parameter definitions
    • Force the C# code labels for goto statements to always use an IL offset padded to 4 bytes
    • Fixed a stack overflow that occured when decompiling very large methods bodies that resulted in dnSpy completely crashing

Dependency updates:

  • Updated VS MEF to 17.10.37
  • Updated Roslyn to 4.10
  • Update NuGet.Configuration to 6.10
  • Updated dbgshim.dll component to the latest version

New Contributors

Full Changelog: v6.5.0...v6.5.1-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 and me working on it!

SHA-256 hashes:
dnSpy-net-win32.zip: 62b8d2c4d4b23ee578bb8c180d2a3610fdd8b163cc27f0c1d0f5be651342cca1
dnSpy-net-win64.zip: aebc840f6b1b541205e7eff4602beba9317ccb20ec84d6ec9cbec82744d9cec6
dnSpy-netframework.zip: ad4cce041f1b0b16988982b8f6560f6e5ed66602b5f67fc0916b0a19d9296dcc

v6.5.0

04 Feb 11:41
2eef396
Compare
Choose a tag to compare

New features:

  • dnSpy now runs on .NET 8 and .NET Framework 4.8.
  • dnSpy now handles TypeRef rows with a ResolutionScope of 0 in the same way as the CLR rather than following the ECMA specification.
  • The low-level metadata editor is now aware of the implications of the #JTD metadata stream being present.
  • Enable Windows targetting in project files to allow compiling on other platforms (Note: dnSpy will still only run on Windows due to the WPF dependency)
  • Added binding redirects for various common assemblies with frequent version bumps to make extensions compiled for older versions load more seamlessly.
  • Added support for new resource serialization formats added as part of System.Resources.Extensions
  • Added a new, opt-out, update checker which runs on startup and will display an update notification in a new information bar component.
  • C# Interactive now references additional libraries giving access to newer features like Span<T> or immutable collections.
  • Enabled Server and concurrent GC as well as RDP hardware acceleration in the .NET 8 builds
  • ILSpy Decompiler:
    • Added support for C# ref types to the decompiler - ref types are now correctly decompiled into the proper C# syntax instead of being decompiled into pointer types.
    • Added support for C# function pointers to the decompiler - Function pointers are now correctly represented using the C# syntax rather than simple types of name method
  • Debugger
    • The debugger now supports displaying tuple element names, dynamic types, and native integer types defined in custom attributes.
    • The debugger expression evaluator now includes support for tuple element names and dynamic types.
    • Debugger tool windows now use the correct C# 9 function pointer syntax as well as the correct ref type syntax.
    • Display a message dialog when valid metadata cannot be obtained when executing the Open module from memory command.
    • Added an additional option to the .NET Framework start debugging dialog to override the CLR version to use for debugging purposes. This can be helpful for files that use obfuscated native loaders when dnSpy can't automatically detect the correct CLR version.

Improvements and bug fixes:

  • Fixed loading XML documentation for System.Private.CoreLib.dll.
  • Improve the method overridden by analyzer to take into account explicit overrides in the metadata.
  • Minor improvements to the low-level metadata table editor.
  • Improve dependency assembly resolution for cases where .NET Core/.NET 5+ or .NET Framework 2.0 might not be installed.
  • Improve performance of members overridden by analyzers.
  • Prevent the dependency assembly resolver from performing IO calls on assembly references with invalid file names.
  • Minor improvements to the member analyzer to reduce false positives.
  • Fixed some null reference errors that could occur when deleting a member or type that was still referenced in a module.
  • Improve assembly resolution performance when the module list is frozen (this is a backend change, no behavioral changes will be observable)
  • Updated Chinese translations.
  • Debugger:
    • Fixed some cases where expressions generated for the expression evaluator were missing parenthesis leading to errors.
    • Improve formatting of multi-dimensional array types in the local, watch, and autos windows.
    • Extend the breakpoint filter expression evaluator to allow for more complicated expressions.
    • Fixed a bug that caused the Raw Locals view to fail when the assembly referenced multiple core libraries.
    • Improve handling of dynamic types in Raw Locals display mode.
    • Extend support for attaching to Unity processes (by @rigdern)
    • Gracefully handle the case when the CorDebug IMetaDataImport interface cannot be obtained for a given module.
    • Improve the accuracy of the Break on entry point and break on module constructor feature for single file bundle debugging.
  • ILSpy Decompiler:
    • Usual round of optimizations and performance improvements.
    • Fixed incorrect methodof decompilation for ldtoken of a method.
    • Corrected expected prefixes on call and ldftn instructions.
    • Improve ambiguous type name analysis to include namespace names as ambiguous identifiers.
    • Improve IL disassembler display of function pointer types.
    • Improve decompilation of array access through special methods defined on array signatures.
  • BAML decompiler:
    • Improve decompilation and detection of BAML connection ID mappings found in method bodies.
    • Improve behavior when member and type references cannot be resolved to the declaring definitions due to missing dependencies.
    • Added support for specially declared BAML attributes - xml:lang and xml:space are now properly decompiled on all occasions.
    • Avoid outputting invalid identifier characters by ensuring all identifiers are escaped before being written to the output.
    • Fixed a crash in the BAML decompiler which could occur when assembly references were missing.

Dependency updates:

  • Updated dnlib to 4.4.0
  • Updated Iced to 1.21.0
  • Updated Rosyn compiler to 4.8.0
  • Updated VS MEF to 17.7.26
  • Updated NuGet.Configuration to 6.8.0
  • Updated dbgshim.dll component to the .NET 8 version

New Contributors

Full Changelog: v6.4.1...v6.5.0

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 and me working on it!

SHA-256 hashes:
dnSpy-net-win32.zip: acb63b4e3ea68e1931497ca74897176e712731e3840c73dfc8c1b9986fb240ab
dnSpy-net-win64.zip: 43d68dcfe37c441b7fbd46f032a7e8e94f198d83df3578fb316e58bd1c8f0595
dnSpy-netframework.zip: 5962e3cca902e650c61050e2a879af58b78eec91288b7a7b77a7bc761424a0ed

v6.5.0-rc3

25 Jan 17:36
4e3c54d
Compare
Choose a tag to compare
v6.5.0-rc3 Pre-release
Pre-release

Changes since v6.5.0-rc2

  • Updated Iced to 1.21.0
  • Further improvements to the break on module constructor/entry point for assemblies loaded by native loaders utilizing CLR hosting.

Full Changelog: v6.5.0-rc2...v6.5.0-rc3

v6.5.0-rc2

19 Jan 18:29
d98de37
Compare
Choose a tag to compare
v6.5.0-rc2 Pre-release
Pre-release

Changes since v6.5.0-rc1

  • Updated dnlib to 4.4.0
  • Updated Chinese translations
  • Improve update notification behavior for release candidate builds
  • Fixed a crash in the BAML decompiler which could occur when assembly references were missing

New Contributors

Full Changelog: v6.5.0-rc1...v6.5.0-rc2

v.6.5.0-rc1

08 Jan 21:45
e6c047e
Compare
Choose a tag to compare
v.6.5.0-rc1 Pre-release
Pre-release

New features:

  • dnSpy now runs on .NET 8 and .NET Framework 4.8, this means that if you are on an OS older than Windows 10 you must use the .NET Framework version. It is strongly recommended to update to a newer OS in that case to ensure that future updates are made available for you too.
  • dnSpy now handles TypeRef rows with a ResolutionScope of 0 in the same way as the CLR rather than following the ECMA specification.
  • The low-level metadata editor is now aware of the implications of the #JTD metadata stream being present.
  • Enable Windows targetting in project files to allow compiling on other platforms (Note: dnSpy will still only run on Windows due to the WPF dependency)
  • Added binding redirects for various common assemblies with frequent version bumps to make extensions compiled for older versions load more seamlessly.
  • Added support for new resource serialization formats added as part of System.Resources.Extensions
  • Added a new, opt-out, update checker which runs on startup and will display an update notification in a new information bar component.
  • C# Interactive now references additional libraries giving access to newer features like Span<T> or immutable collections.
  • Enabled Server and concurrent GC as well as RDP hardware acceleration in the .NET 8 builds
  • ILSpy Decompiler:
    • Added support for C# ref types to the decompiler - ref types are now correctly decompiled into the proper C# syntax instead of being decompiled into pointer types.
    • Added support for C# function pointers to the decompiler - Function pointers are now correctly represented using the C# syntax rather than simple types of name method
  • Debugger
    • The debugger now supports displaying tuple element names, dynamic types, and native integer types defined in custom attributes.
    • The debugger expression evaluator now includes support for tuple element names and dynamic types.
    • Debugger tool windows now use the correct C# 9 function pointer syntax as well as the correct ref type syntax.
    • Display a message dialog when valid metadata cannot be obtained when executing the Open module from memory command.
    • Added an additional option to the .NET Framework start debugging dialog to override the CLR version to use for debugging purposes. This can be helpful for files that use obfuscated native loaders when dnSpy can't automatically detect the correct CLR version.

Improvements and bug fixes:

  • Fixed loading XML documentation for System.Private.CoreLib.dll.
  • Improve the method overridden by analyzer to take into account explicit overrides in the metadata.
  • Minor improvements to the low-level metadata table editor.
  • Improve dependency assembly resolution for cases where .NET Core/.NET 5+ or .NET Framework 2.0 might not be installed.
  • Improve performance of members overridden by analyzers.
  • Prevent the dependency assembly resolver from performing IO calls on assembly references with invalid file names.
  • Minor improvements to the member analyzer to reduce false positives.
  • Fixed some null reference errors that could occur when deleting a member or type that was still referenced in a module.
  • Improve assembly resolution performance when the module list is frozen (this is a backend change, no behavioral changes will be observable)
  • Debugger:
    • Fixed some cases where expressions generated for the expression evaluator were missing parenthesis leading to errors.
    • Improve formatting of multi-dimensional array types in the local, watch, and autos windows.
    • Extend the breakpoint filter expression evaluator to allow for more complicated expressions.
    • Fixed a bug that caused the Raw Locals view to fail when the assembly referenced multiple core libraries.
    • Improve handling of dynamic types in Raw Locals display mode.
    • Extend support for attaching to Unity processes (by @rigdern)
    • Gracefully handle the case when the CorDebug IMetaDataImport interface cannot be obtained for a given module.
    • Improve the accuracy of the Break on entry point and break on module constructor feature for single file bundle debugging.
  • ILSpy Decompiler:
    • Usual round of optimizations and performance improvements.
    • Fixed incorrect methodof decompilation for ldtoken of a method.
    • Corrected expected prefixes on call and ldftn instructions.
    • Improve ambiguous type name analysis to include namespace names as ambiguous identifiers.
    • Improve IL disassembler display of function pointer types.
    • Improve decompilation of array access through special methods defined on array signatures.
  • BAML decompiler:
    • Improve decompilation and detection of BAML connection ID mappings found in method bodies.
    • Improve behavior when member and type references cannot be resolved to the declaring definitions due to missing dependencies.
    • Added support for specially declared BAML attributes - xml:lang and xml:space are now properly decompiled on all occasions.
    • Avoid outputting invalid identifier characters by ensuring all identifiers are escaped before being written to the output.

Dependency updates:

  • Updated dnlib to 4.3.0
  • Updated Iced to 1.20.0
  • Updated Rosyn compiler to 4.8.0
  • Updated VS MEF to 17.7.26
  • Updated NuGet.Configuration to 6.8.0
  • Updated dbgshim.dll component to the .NET 8 version

New Contributors

Full Changelog: v6.4.1...v6.5.0-rc1

v6.4.1

08 Sep 17:58
6686866
Compare
Choose a tag to compare

CRITICAL SECURITY WARNING

This release of dnSpyEx addresses a recently discovered critical security concern involving arbitrary code execution. All users are recommended to update to this new version to remain safe and secure while using dnSpyEx. No functional or behavioral changes are included in this release.

For more information see https://blog.washi.dev/posts/popping-calcs-in-dnspy/

Thanks to @Elliesaur and @Washi1337 for informing me about this critical security concern.

Note for users of CI builds from the master branch:

Builds compiled after commit 63722fd are safe. If you are unsure how to check when your build was compiled, it is recommended to update to the latest CI build.

v6.4.0

13 Jun 18:42
ac0564b
Compare
Choose a tag to compare

CRITICAL SECURITY WARNING

This release of dnSpyEx addresses the many newfound vulnerabilities in .NET 6. Updating is highly recommended!
See https://github.com/dotnet/announcements/issues issues 250 and 252-261
image

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.
  • Added support for .url shortcut files and modified the code to recursively resolve shortcuts until a target file is reached.
  • 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.
  • Fix an issue in the new RESX writer which resulted in incorrectly generated RESX for resources with user serialized types.
  • 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.
    • Update Roslyn debugger intrinsic handling to match what is expected by Roslyn 4.6.0
    • 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
  • Updated Iced to 1.19.0

New Contributors

Full Changelog: v6.3.0...v6.4.0

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 and me working on it!

v6.4.0-rc2

08 Jun 08:02
4bd3d47
Compare
Choose a tag to compare
v6.4.0-rc2 Pre-release
Pre-release

Changes since v6.4.0-rc1

  • Updated Iced to 1.19.0
  • Fix an issue in the new RESX writer which resulted in incorrectly generated RESX for resources with user serialized types.
  • Added support for .url shortcut files and modified the code to recursively resolve shortcuts until a target file is reached.
  • Update Roslyn debugger intrinsic handling to match what is expected by Roslyn 4.6.0

New Contributors

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

v6.4.0-rc1

01 Jun 18:17
d888737
Compare
Choose a tag to compare
v6.4.0-rc1 Pre-release
Pre-release

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!