Skip to content

v6.2.0

Compare
Choose a tag to compare
@ElektroKill ElektroKill released this 14 Jun 16:55
· 482 commits to master since this release
480bda4

As of today, one full year has passed since the v6.1.9 release and I'm proud to announce that the v6.2.0 update is finally ready for release. Since the previous version, many things have been added, changed, improved, and fixed. I know that an update a year is not a very good update frequency, so I will try to make sure that new updates from now on are more regular.

I would also like to thank everyone for their incredible support of this project! I never expected it to blow up as it has in the last year. I can't express how thankful I am for all the bugs being reported, feature ideas, and pull requests! Knowing that there are more people in the world who benefit from this project really helps me keep up the motivation to continue working on this project.

With all that over here is a list of everything that has changed together:

New features:

  • dnSpy now runs under .NET 6 and .NET Framework 4.8.
  • Move to VS2022 icons for UI and exe files (by @inkahootz and @SychicBoy)
  • Support for tilt/horizontal scrolling in the UI.
  • Added support for editing custom attributes on module resources.
  • Added support for modifying the Log2Rid value when saving the module.
  • Add support for ARM64 target architecture in the assembly editor.
  • Add an enum for PE Magic field in the PE editor (by @riQQ)
  • Show debugged process's name in the title bar (by @inkahootz)
  • Add support for writing VS2022 compatible .sln files.
  • Added back the Save Code, Save BAML, and Save XAML options in the File context menu which save the contents of the currently open document tab.
  • Debugger:
    • Display a warning message before starting to debug a target file with a different bitness than the current dnSpy version running.
    • Add a new option that allows to automatically break on <Module>::.cctor when starting to debug.
    • Display the exception's HResult property when an unhandled exception is hit.
  • ILSpy decompiler:
    • Added jump to reference support for jmp() expressions created when the jmp CIL opcode is present.
    • CIL disassembler now includes information about generic parameter attributes and constraints.
    • Add more information to the output when disassembling the module node when using the CIL disassembler.
    • The decompiler now splits up long method call chains using a new line.
    • Generate debug info for yield break; statements.

Improvements and bug fixes:

  • Fix the .NET 6 console executable having the incorrect subsystem set in the PE options resulting in a crash.
  • Fixed escaping of namespaces in tooltips.
  • Fixed syntax highlighting for structs in tooltips.
  • Improved RVA <-> FileOffset conversions in PE editor to fix a crash with invalid values being passed in.
  • Improved assembly resolution for .NET Standard, .NET Core, .NET 5, .NET 6.
  • dnSpy now reads assembly resolution probe paths from .config files.
  • Read probe paths from .config files when searching for satellite assemblies during project export.
  • Fixed incorrect label in the Save Module dialog.
  • Add support for searching by full name (by @mobile46).
  • Optimized search module by reducing memory allocations.
  • Improvements to GitHub Actions workflow (by @Gorialis).
  • Use .NET Standard instead of .NET Framework for Roslyn projects fixing #84 (by @mobile46).
  • ILSpy Decompiler
    • Optimized the variable naming step in the decompiler by reducing memory allocations.
    • Improved insertion of checked() blocks.
    • Improved decompilation of query expressions.
    • Prevent delegate construction decompilation from crashing the entire decompiler if it failed.
    • Improved analysis for unsafe modifier.
    • Ignore invalid prefixes when constructing the ILAst. This prevents a common method used to crash the decompiler from working.
    • Many improvements and fixes to the async method decompilation logic.
    • Optimized the removal of dead nop instructions when building the ILAst. This deficiency was a known method to crash dnSpy's decompiler by filling a method body with huge amounts of useless code.
    • Fixed a rare case where field initializers would not be detected properly.
    • Fixed a rarely occurring bug that resulted in incorrect ILAst being built.
    • Optimized construction of ILAst by calculating the stack behavior of instruction only once and by caching the result of MethodDef.HasReturnType.
    • Improved required parenthesis analysis.
    • Fixed decompiler creating incorrect checked regions for some post increments.
  • Debugger:
    • Fixed a bug that caused the infamous ??? exception to occur when debugging.
    • Improved debugging support for newer mono runtimes.
    • Fixed a crash that occurred in the .NET Framework version of dnSpy when a module loaded into memory during debugging would contain an invalid file path resulting in a crash.
  • BAML decompiler
    • Resolve namespaces of properties.
    • Fix Name attribute for properties incorrect in rare circumstances.
    • Fix missing x:Static and x:Type (by @wwh1004)

Dependency updates:

  • Updated dnlib to 3.5.0
  • Updated Iced to 1.17.0
  • Roslyn compiler to 4.1.0
  • Ookii.Dialogs.Wpf to 5.0.1
  • VS MEF to 16.9.20
  • ILSpy to 2.4
  • Mono.Debugger.Soft was updated to the latest commit.

Note to extension developers: Please recompile your extensions for this version of dnSpyEx! Many dependencies have been updated and some of them have gone through API changes, for example, Iced.

New Contributors

Full Changelog: v6.1.9...v6.2.0

Once again, thank you for the support :D