Microsoft has released its second preview of .NET 6, but confirmed there will be no visual designer for WinUI 3.0 when it comes out in November this year.
WinUI 3.0 is intended to be the primary official framework for Windows desktop applications.
Microsoft’s .NET 6 is the first long-term release of its revamped development platform for running C#, F#, and to some extent Visual Basic applications on Windows, cross-platform, and on the web. It is a unifying release, integrating what used to be Xamarin Forms under the snappy new name MAUI (Multi-Platform App UI).
Yet there is still plenty of confusion for those who dig a little into the detail. One of the areas that has developers perplexed is WinUI 3.0, part of Project Reunion, described by Microsoft as “the next evolution in the Windows app development platform.”
The latest wave of previews includes Project Reunion 0.5 and, for the first time, WinUI 3.0 installs – though we presume that in time the Reunion term will go away and it will simply be part of the Windows SDK (Software Development Kit.)
But there was some unwelcome news confirmed in a comment to Microsoft’s post introducing the latest preview: “The XAML designer for WinUI 3 is in the backlog, and unfortunately it won’t be part of the v1 that will be shipped in Fall 2021. So there is no commitment (no ETA) for adding designer support yet.”
What is WinUI 3.0? And what is its relationship to WinUI 2.x and the UWP (Universal Windows Platform), which itself rose out of the ashes of the modern user interface in the doomed Windows 8 adventure?
WinUI 3 is intended to be the primary application framework for Windows, ahead of both UWP and traditional Win32 approaches
The key pieces to hold in your head, it seems, are the visual control library on the one hand, and the application platform on the other. UWP includes the concept of an app container, continued from Windows 8, which sandboxes an application for reasons of security and stability. UWP also includes a library of GUI controls, authored with a variety of XAML, which follow what Microsoft considers modern design guidelines.
WinUI 2.x is the visual control library for UWP. WinUI 3.0 is a new application framework including a visual control library similar to WinUI 2.x but which no longer has to run on the UWP app container. Instead, WinUI 3.0 can target either UWP or simply Windows 10 desktop – which is why Microsoft sees it as unifying the divide it created between traditional Windows applications and UWP.
This is why developers who install the latest preview bits into Visual Studio are presented with the choice between “WinUI in UWP” and “WinUI in Desktop.” This is also why the company described WinUI 3.0 as “all the major UX [User Experience] layers of Windows 10 decoupled and shipping as a standalone solution.”
Microsoft said that WinUI 3.0 will be “added to .NET MAUI in a future preview.”
Two become…. well. It’s a desktop framework
Is this really reunification, or is it more a matter of introducing yet another desktop framework which is incompatible with everything that precedes it? Sadly, it is not far removed from this. WinUI 3.0 XAML is not compatible with WinUI 2.x XAML, though Microsoft stated that “the bulk of most project changes involve find-and-replace namespace changes.”
It is very different from the XAML used in Windows Presentation Foundation (WPF), and also very different from the XAML used by MAUI. The lack of a visual designer at launch means that developers building new desktop applications will be tempted to fall back on old favourites Windows Forms or WPF, but this is also sub-optimal, since Microsoft will not invest much in keeping them up to date.
‘Developers have lost hope Microsoft will do the right thing’… Redmond urged to make WinUI cross-platform
Microsoft’s problem is that it has changed strategic direction so many times that developers outside a niche of Windows enthusiasts will have little confidence in the future of the current flavour. A developer which started a discussion of the compatibility issues on GitHub stated that while the company’s vision is encouraging, “Microsoft probably bit off more than they can chew again and I don’t know when or if that vision will be met. It’s more likely that the vision will never be truly realized and instead we are again left with a partially-completed development stack.”
There is more food for thought in cross-platform developer Nick Randolph’s post on WinUI 3.0 misconceptions, where he said: “I wish I had a single place I could point developers wanting to understand the dysfunctional state of play between the various Microsoft teams: Maui, WinUI, Project Reunion, dotnet etc.”
It is possible to put a positive spin on this, in that WinUI 3.0 finally gives developers a native Windows 10 development stack that is not constrained like UWP. There is a lot going on, though, and even within Microsoft there is strong interest in alternative technologies like React Native.
Beyond the fraught world of Windows desktop development, there is plenty more in .NET 6.0, including platform support expanded to Apple Silicon and Mac Catalyst (run on both iPad and macOS) and improved build performance, as explained in program manager Richard Lander’s post on the latest preview. ®