I'd add that WPF was "don't bother" up until recently when WPF support was added. (Though I don't know if that means stock WPF or that it supports the breadth of WPF controls out there, and whether it requires WPF component vendors to make changes)
We just migrated our massive WPF application to .NET 8 and there are a handful of libraries that are not supported or had to be replaced but overall it was surprisingly smooth. The biggest issue we have is that garbage collection seems to have taken a huge hit and there are bugs in the Microsoft WPF components (any sort of list view in particular) but it's all relatively easy to work around.
Yes, it's partial parity, and is server only. It's also not easy to migrate; the upgrade-assistant tool typically just gives up.
The client libraries only came separately, and much later[1] , and in typical "Fuck your migration path" fashion, doesn't have any .NET standard support.
- WCF ? (very enterprisy i know) : you are still mostly screwed
- aspx ? compulsory rewrite
- MVC ? mostly smooth (but most of the pain is in initialization so comes early and can discourage newbies)
- Console ? mostly smooth
- before .Net 6 ? it was a death march, not only many API were lacking, but third party libraries were also missing.
- .Net 6 -> .Net 8 ? very smooth