Dependencies
Dependencies copied to clipboard
Consider migrating to .NET 6
Currently, this project uses .NET Framework 4.6.1 which has been unsupported as of earlier this year. While the easiest fix would be to simply target .NET Framework 4.6.2 (or a newer version of .NET Framework), it may make sense to use this opportunity to migrate to the modern .NET. The current version, .NET 6, is a Long Term Support (LTS) version, making it a good candidate for a significant upgrade. And while it would definitely require more testing and validation, there are numerous advantages:
- .NET 6 is much faster than .NET Framework. This blog post lists some of the performance improvements in .NET 6 over previous versions of .NET Core (that already had improvements over Framework). You will also have new ways of publishing the application including using AOT compilation and bundling the framework with the app, so users don't need to install a runtime.
- Migrating sets up Dependencies for success with modern technologies and platforms including native Windows Arm64 support.
- All currently supported Windows versions (including Windows 7 SP1 ESU) are supported by .NET 6, so you won't be removing OS support for many potential users.
Here are some dependencies I've identified with their current status:
- Dragablz: It appears that the repo contains a .NET Framework 4.5 version of this component as a build dependency. I'm not sure what the reason is behind this but if the component is unmodified from the original, this may no longer be necessary. Dragablz is available as a NuGet package that supports .NET 6. A simple drop-in replacement seems to work at first glance for me.
- Mono.Cecil: This NuGet package is also supported on .NET 6.
- NDesk.Options: This package appears to be deprecated but there's NDesk.Options.Core which supports .NET 6 and the app builds just fine using it (no extensive testing done).
- Newtonsoft.Json: Supported on .NET 6.
Based on a preliminary attempt to port, this shouldn't be too hard. In fact, I've got a basic proof of concept working.
@lucasg If you approve of this change, I can formalize the work and create a PR, though I'll need help with testing and validation.
I did a port of the application to the Windows App SDK here:
https://github.com/lhak/Dependencies
The two branches (windowsappsdk and windowsappsdk_arm64) also contain .net 6 ports of the WPF app.
@lucasg If a PR will be created is it possible to merge this into the master?
Worth noting that while .NET 6 is supported for another whole year, it may as well be updated to .NET 8 which has a release candidate (but go live in production) version already and will be supported for another three years