Paint.NET has finally been migrated to .NET 5! If you’re not familiar, .NET 5 (also known as .NET “Core” 5.0) is the new version of .NET that replaces .NET “Framework” (of which no more new versions will be made). More info here: https://devblogs.microsoft.com/dotnet/introducing-net-5/
It was a very large effort to move Paint.NET over to .NET 5 over the last 2 months! Most of that effort went towards rebuilding from scratch how Paint.NET is built and packaged (installer, MSI, APPX, portable ZIPs), because the old solutions were showing their age and were no longer serviceable. The app itself required only minor changes to work on .NET 5.
You should not really see any difference in the app’s features or the way it behaves, although performance has improved. Sometimes substantially! Sadly there are some plugins that will no longer work, although I may be able to find fixes for some of them.
I will be releasing this via the built-in updater sometime later this week. For now, I want to start with a smaller audience, so you must download and install it manually. Just close the app, run the installer EXE inside the ZIP, and it will do everything for you (as usual):
The download link for the installer is available at the forum page about this release.
You may also download a portable version of the app, which is useful if you just want to try things out or are not yet ready to fully commit to the new version. .NET 5 is built-in, so there is no need to install it (the app is “self-contained”). The portable version of the app will save settings in a local JSON file instead of using the registry.
The downloads links for the portable ZIPs are available at the forum page about this release.
If you have an ARM64 device such as the Surface Pro X, you may also install the app. For the portable ZIPs, use the architecture appropriate for your operating system: x86 for Win10, or x64 for Win11. This is untested, so please report back with how well it works.
Changes:
- The app has been migrated to .NET 5, and performance has been greatly improved as a result.
- Installation is much faster now due to no longer needing the “Optimizing performance for your system” stage (NGEN has been replaced with ReadyToRun via crossgen).
- Portable ZIPs are now officially available, utilizing self-contained deployment, and do not require the installation of .NET 5. You must manually update to newer versions of the app, however.
- Improved performance of most effects and other compute-intensive tasks by about 20% on average, due to .NET 5’s improved code generation
- Fixed a bug when saving with “Auto Detect” bit-depth that was causing fidelity loss on some images that already had 256 colors or less. This was reported here: https://forums.getpaint.net/topic/118401-images-already-with-256-or-fewer-colors-being-dithered-when-saved-with-palette/
- Fixed a bug in Polar Inversion that was causing hangs
- Improved performance of Polar Inversion by 3x, due to the aforementioned bug fix (and a little bit is due to .NET 5)
- Updated the built-in AvifFileType plugin to v1.1.13.0 (courtesy of @null54). See the project’s GitHub Releases page for more information.
Known Issues:
- If you have a lot of plugins installed, such that the Effects menu is too large for the screen and must be scrolled, the scroll indicator buttons (the up/down arrows) are a lot larger than they should be. This seems to be a bug in .NET 5.
- Several of Ed Harvey’s popular plugins are blocked because they are not compatible with .NET 5. I may find a solution for this, but it may also require a new version of the plugin to be released.
- Color Flip/Rotate
- Threshold
- Glass Blocks
- Color Filter
- Filtered Black and White
- Single Hue
- Color Tint
- Vitrious
- White Balance
Congratulations to the big change to .NET 5. Why don‘t you increase the program version 5.x instead only increase the minor version from 4.2.15?
I bumped from 4.2.16 to 4.2.17 because this is mostly an under-the-hood infrastructure update. There are no feature changes or major architectural changes for what gets installed on your system. I don’t update the major (4) or even minor (2) build numbers for these types of infrastructure changes unless there are feature or other changes that warrant it by themselves.
If I made it “5.0”, then someone who doesn’t know about .NET 5, or care about it, would boot up the new update and think … “uhh, it’s the same?”
You are right, thanx for the answer.
While I totally undestand this logic, I see this as a major update and calling it Paint.Net 5.0 would be clearer: Install experience is different, some plugins broken, major underlying changes (.NET 5 is a big deal). Similar UI doesn’t mean major version can’t be bumped. My $0.02.
It’s not a major update for most users though. There are no new features or anything like that; the app is mostly the same, other than a few bug fixes and performance optimizations. I could of course delay 4.2.17 until I added a bunch of features, and then call it 4.3 or 5.0, but I’d rather get the app onto .NET 5 and validated separately without also debugging new stuff. One step forward at a time. My version schema is focused on the user, not the developer.
So you finally did it. I remember you said you’d do that in the .NET Blog comments. This is the first time I’m eager to try an alpha build of Paint.net.
Still, if there is anything about this post that I’d change, it’s the opening paragraph. The .NET team made the version number jump to 5.0 so that people don’t have to know the distinction between .NET Framework and .NET Core.
Is this coming to the build-in updater anytime soon? Your blog said “later this week,” and it’s been 2 weeks and there’s still no update.
I’ve got a newer build that I’m planning to push out soon.
I really shouldn’t say things like “later this week” 🙂