This past spring, I inherited a large body of very ugly prototype code that was written circa 2015 (Win8.1 Metro app) and now the company wants to turn this prototype into a real cross-platform LOB product. The problem is, I haven't done any .NET development in over a decade (pre-WPF/XAML) and I'm looking for guidance on what the path forward for the re-write should be. I'm trying to get my head around Microsoft's roadmap for .NET and cross-platform development for 2020 (and beyond) and I'm more than a bit confused.
There are two applications: one is a Windows desktop application. The other is tablet (Surface Pro) application that runs on Win10. We want to support iOS and Android for the tablet app in late 2020/early 2021. I want the desktop app and the tablet app to share as much code as possible as there is a lot of common functionality between them. Plus, I want the tablet app to share as much code as possible between the Windows, iOS, and Android versions.
My understanding (which could be very wrong) is that I could re-write the desktop app using WPF / XAML / MVVM and put a large amount of code (Models and ViewModels) into a shared .NET Core 3.1 library. The Windows version of the tablet application could also be a WPF (is UWP dead?) application that uses the same shared library. I would like to share some custom user controls between the two applications as well. My reading on this forum is that UWP is not fully supported in Xamarin.Forms 4.x and that the future looks bleak for parity with iOS and Android. That's why I'm thinking the tablet.WIN version could/should be WPF.
Then, when .NET 5 is released in 2020, I'm assuming that Xamarin.Forms will be based on .NET 5, so it in theory (I think), I should be able to re-use my shared .Net Core 3.1 library in Xamarin.Forms and only have to worry about the View code for iOS and Android as they could bind to my shared ViewModels. I am assuming that my .NET Core 3.1 library won't need much (if any) work when .NET 5 is released.
Am I on the right track here? Totally confused? Any/all clarification, info, etc appreciated...