v6.2.0
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
, andSave XAML
options in theFile
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 thejmp
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.
- Added jump to reference support for
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.
- Fixed a bug that caused the infamous
- 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
- @fifty-six made their first contribution in #13
- @DeNcHiK3713 made their first contribution in #22
- @inkahootz made their first contribution in #35
- @riQQ made their first contribution in #36
- @wwh1004 made their first contribution in #42
- @SychicBoy made their first contribution in #83
- @mobile46 made their first contribution in #87
- @Gorialis made their first contribution in #90
Full Changelog: v6.1.9...v6.2.0
Once again, thank you for the support :D