Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consider migrating to .NET 6 #230

Open
prayaas-a opened this issue Sep 16, 2022 · 3 comments · May be fixed by #245
Open

Consider migrating to .NET 6 #230

prayaas-a opened this issue Sep 16, 2022 · 3 comments · May be fixed by #245

Comments

@prayaas-a
Copy link

prayaas-a commented Sep 16, 2022

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.

A demonstration of Dependencies running on .NET 6 and the current version side by side

@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.

@lhak
Copy link

lhak commented Oct 1, 2022

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.

@RandallFlagg
Copy link

@lucasg If a PR will be created is it possible to merge this into the master?

@prayaas-a
Copy link
Author

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

@RandallFlagg RandallFlagg linked a pull request Oct 29, 2023 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants