Skip to content

v6.3.0-rc1

Pre-release
Pre-release
Compare
Choose a tag to compare
@ElektroKill ElektroKill released this 29 Dec 18:16
· 349 commits to master since this release
e8696e5

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:

  • Improved Search tool window
    • Display member types in search results (return types, parameter types, etc.) to make it easier to locate the right member.
    • Tooltips on search results now contain more information, including full member signatures. If the result is located in a method body, the appropriate instruction is also included in the tooltip.
    • Literal and enum fields are now included in search results when searching for a constant.
    • Improved analysis of custom attributes. Previously arrays in custom attributes or boxed custom attributes were not searched, now they are.
    • Added an option to disable searching compiler-generated members.
    • Added support for searching DateTime resources when searching for constants.
    • Reduced heap allocations that occurred during the search process.
    • Include properties with literal constants in search results when searching for constants.
  • Added a command under the File menu to close all framework and system assemblies (by @mitchcapper).
  • Added a new context menu command for methods to replace their body with one which returns a default value and initializes all out parameters.
  • Added support for exporting projects in the new SDK format in the form of a toggle in the project export dialog.
  • Added additional toggles to the metadata writer options screen.
  • Added support for .NET 7 assembly resolution.
  • Added an update checker to the About screen.
  • ILSpy decompiler:
    • Add an option to the decompiler settings to decompile calli instructions to invocation expressions. (co-authored by @cnsheds)
    • Add MethodCodeType field to [MethodImplOptions] attribute if necessary
  • Debugger:
    • Add a new Static Fields tool window which displays and allows editing of values of all static fields available in the current context.
    • Add support for GetObjectValueAtAddress Roslyn expression compiler intrinsic. It is now possible to enter expressions like @0x12345678 to retrieve an object at a specific memory address. Due to debugger API limitations, this is only available when utilizing the CorDebug API (.NET Framework, .NET Core, .NET 5/6/7/etc.)
    • CorDebug:
      • Add support for Just My Code debugging including an option to disable stepping into system modules and an option to avoid stepping into code outside the primary module.
    • Mono/Unity:
      • Mono debugger API version of the debuggee is now written to the Output window when debugging is initiated.
      • Add support for dereferencing pointers in the Locals, Watch, etc. tool windows when using newer Mono debugger API versions.

Improvements and bug fixes:

  • Added more links to the Help menu.
  • Added support for displaying special C# types like nint, nuint, and dynamic in tooltips. Tuple element names are now also included.
  • Added support for loading XMLDoc for .NET Core framework assemblies.
  • Extended XMLDoc parser and analyzer to support documentation files generated by the MSVC compiler.
  • Properly display the __arglist method parameter across the dnSpy UI.
  • Properly update MethodSemanticsAttributes in the AsmEditor component.
  • Fixed various bugs in the EventFiredBy analyzer.
  • Fixed some bugs relating to parsing custom attributes.
  • Improved detection of member obsolescence when displaying tooltips.
  • Added support for displaying init property accessors in tooltips.
  • ILSpy decompiler:
    • Fixed array initializer detection for enum arrays where the enum was located in a different module.
    • Fixed syntax highlighting color for preprocessor directives.
    • Fixed and improved delegate construction detection (co-authored by @mobile46).
    • Fixed decompiler not removing unnecessary parameter names in anonymous functions leading to compiler errors.
    • Improve debug info generation for inlined finally methods in yield return state machines.
    • Improve performance and reduced heap allocations in the decompiler and IL disassembler.
    • Extended type analysis for switch, throw, and ckfinite OpCodes.
    • Fixed a crash that occurred when the HandlerStart property of an exception handler was null (by @mobile46).
    • Fixed setting incorrect brace annotations for switch case blocks.
    • Extended support for methods utilizing the __arglist parameter.
    • Improved jump-to-reference navigation in the IL disassembler.
    • Improved ambiguous type name analysis.
    • Fixed a missing space not being added before the new() generic parameter constraint.
    • Fixed a rare bug that occurred when decompiling obfuscated exception handler filter blocks.
    • Fixed incorrect placement of the [Optional] attribute on a parameter with a decimal constant.
  • Debugger:
    • Fix a potential exception when searching a dynamic module (by @mitchcapper).
    • Improved debugger evaluation correctness and accuracy.
    • Fix timing issues in debugger thread dispatchers.
    • Display a warning message when detaching the debugger will lead to process termination.
    • Fix Locals windows failing to display locals when debugging a module with an invalid MVID.
    • Child nodes should not be displayed for values of types IntPtr and UIntPtr.
    • Fix the architecture incompatibility warning for files targeting .NET Framework 1.x but being executed on CLR version 2.
    • CorDebug:
      • Improve suppression of NGEN image loading leading to a better debugging experience for modules present in the GAC.
      • Introduce a workaround for a .NET 6.0 bug that occurred when a debugger was attached to a process that utilized dynamic modules. (by @josegomez)
      • Use the CorDebug API directly to read thread and exception information to avoid issues with certain anti-dumping techniques.
      • Improve debugging support for legacy .NET Framework versions.
    • Mono/Unity:
      • Improved dynamic module detection and metadata fetching for newer Mono debugger API versions.
      • Fix computation of OffsetToStringData value resulting in improved evaluation accuracy and fixed Show in Memory command result.
      • Improved and optimized computation of OffsetToArrayData, it should now work smoother on newer Mono debugger API versions.
      • Use MDToken-based resolution for types and methods when possible on newer Mono debugger API versions.
      • Improve the result of the Show in Memory command for objects on newer Mono debugger API versions.
  • BAML decompiler:
    • Improved analysis of BAML connection IDs.
    • Fixed incorrect decompilation of readonly properties in XAML code.
    • Fixed a crash resulting from unescaped member identifiers.

Dependency updates:

  • Updated dnlib to 3.6.0
  • Updated Iced to 1.18.0
  • Roslyn compiler to 4.4.0
  • VS MEF to 17.2.41

New Contributors:

Full Changelog: v6.2.0...v6.3.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