Build together, debug together. Join the community on Discord.→

Uno Platform 5.1 : Live Wizard for Rider & VS Code users, New Controls, Perf improvements and more.

It has been nearly 3 months since we launched Uno Platform 5.0. Since then, .NET RTM’d and even shipped a servicing release. Naturally, we embedded all that goodness in our 5.1 release and added the #1 feature you requested – Solution Template Wizard for non-Visual Studio users. The same time-saving utility is now available via our Live version to JetBrains Rider and VS Code users so you can get your projects set up quickly. We also added three new controls and improved performance. 

Let’s dig into the release itself. But before going there – a huge thank you to all of you! As of this writing, we are passing 71,000,000 NuGet package downloads. Thank you for your ongoing support by using and contributing to Uno Platform. 

Uno Platform 5.1 Webinar - Tuesday February 6th, 2024 @ 3pm EST
Join our webinar on February 6th to learn about Uno Platform 5.1, featuring the new Solution Template Wizard, additional controls, and enhanced performance. Engage with our team, ask questions, and connect with the community.

Get Started Wizard – LIVE – easily create projects for Code and Rider

In 2023, we released a Visual Studio Wizard for getting started with Uno Platform. The response has been overwhelmingly positive, but it also left other IDEs in the dark. Enter our new LIVE Wizard. Yes, Rider and Code communities, we heard you loudly and clearly and delivered. 

For those who missed the announcement, our startup wizard is a visual, user-friendly tool that automatically configures your project to your preferences and allows you to use as many Uno Platform features as you’d like. 

With this addition, you will be able to get your projects going much faster with VS Code and Rider. 

This new live wizard allows you to create a “dotnet new” templates command line, speeding the process in the same way Visual Studio 2022 users can. 

Fun Fact: The initial Get Started Wizard is a Uno Platform desktop app, which made it trivial to make a LIVE version run on the web with Uno Platform itself. Go ‘dogfooding’ go!!

New Control - TimePicker

Since Microsoft open-sourced Windows UI, our job in porting controls has become much faster and easier. We are now pleased to offer TimePicker across all platforms!  

Although it might look like a simple control, the devil is in the details! Time formatting differences, time zones, looping selectors, proper handling of 12/24 hour time periods – there is more to a TimePicker than meets the eye, which is why we are so happy that we could use the WinUI TimePicker code directly. And if you prefer the native picker dialogs on iOS and Android, those are still available! 

Here is WinUI Time Picker working on Linux, Web, and Mobile. You can view and try it live in the Uno Platform Playground or the Uno Platform Gallery.

Performance Improvements – 15% memory savings

We’ve made a bunch of performance improvements, particularly around the memory used in our DependencyObject subsystem. By creating more specialized memory pooling and sparse collections, we reduced the memory allocated for individual controls by 15% and reduced overall allocations to reduce the Garbage Collection pressure. 

Introducing the MSBuild Uno.Sdk for a 50% smaller csproj footprint

The project template for Uno Platform is going through a makeover to simplify its contents, cutting the size of some project files by half or more. To do so, we’re introducing the MSBuild Uno.Sdk, which allows for the centralization of many features in a way that Visual Studio recognizes properly. 

Here is a side-by-side of an Uno Platform library project, the right side using the Uno.Sdk: 

This updated template is entirely optional. If you have an existing Uno Platform project, you can keep your current solution structure. If you want, you can also upgrade to the new Uno.Sdk structure by following our documentation.  

In order to make the best use of the Uno.Sdk, we’re introducing the use of global.json’s versioning of MSBuild Sdks. This allows for specifying the Uno Platform core packages once for the whole solution, along with the introduction of the $(UnoVersion) MSBuild property. This way, packages defined in the Directory.Packages.props file use of this new property to avoid having manage each of them individually when upgrading between Uno Platform versions. 

Among the other modifications, you’ll find many default values to have been removed from project files, and for library projects, we added the automatic inclusion of default items for Compile, Page, and a few others.

We have also included an automatic workaround for a long standing WinUI issue, which causes a chain of NuGet libraries to fail the compilation of the WinAppSDK head. 

Uno Toolkit Updates

The latest update for the Uno Toolkit library introduces two new exciting components: the ResponsiveView control and the Responsive markup extension.  

ResponsiveView 

The ResponsiveView control provides the ability to display different content templates based on screen size, making it easy to adapt to various devices. ResponsiveView adapts to different screen sizes by dynamically choosing the right template. It looks at the current screen width and the defined templates. Since not all templates need a value, the control ensures a smooth user experience by picking the smallest defined template that satisfies the width requirements. If no match is found, it defaults to the largest defined template. 

				
					xmlns:utu="using:Uno.Toolkit.UI" 
... 
 
<utu:ResponsiveView> 
    <utu:ResponsiveView.NarrowTemplate> 
        <DataTemplate> 
            <!-- Narrow content --> 
        </DataTemplate> 
    </utu:ResponsiveView.NarrowTemplate> 
    <utu:ResponsiveView.WideTemplate> 
        <DataTemplate> 
           <!-- Wide content --> 
        </DataTemplate> 
    </utu:ResponsiveView.WideTemplate> 
</utu:ResponsiveView> 

				
			

Responsive Markup Extension

You may not always want to re-define entire areas of the UI based on the screen size. For finer grained control over the values of your layout components, we have also created the Responsive markup extension. This new markup extension enables the customization of UIElement properties based on screen size. This functionality provides a dynamic and responsive user interface experience. 

				
					xmlns:utu="using:Uno.Toolkit.UI" 
... 
<TextBlock Background="{utu:Responsive Narrow=Red, Wide=Blue}" Text="Asd" /> 
				
			

Uno Extensions

As Uno.Extensions picks up the latest changes in both Microsoft.Extensions and in .NET MAUI (for .NET MAUI Embedding), support for .NET 7 has been dropped. The integration code for .NET MAUI has been refactored to take advantage of improvements in the embedding support.  

The `dotnet new` template for Uno Platform applications and the Uno Platform Template Wizard (within Visual Studio) has been updated to remove the .NET 7.0 option. For new applications, it is recommended to target .NET 8.0.

For existing applications that are targeting .NET 7.0 and are using any of the Uno.Extensions packages, it’s recommended to update to .NET 8.0 before updating to the latest release of Uno.Extensions.   

.NET 8.0.101

The latest revisions of .NET (8.0.101 and 8.0.200-preview.23624.5) contain two issues that have been causing crashes on mobile targets as well as workload setup issues. We’re tracking the release of this issue and this other issue and will update Uno.Check as soon as 8.0.102 or 8.0.200 are published. 

In the meantime, you can follow this discussion on our GitHub repo, if you’re having issues with your mobile heads. 

Best of the Rest

  • Font Fallback support for Skia targets, to ensure that characters not supported by a selected font are still shown. 
  • Support for ComboBox.IsTextSearchEnabled, to allow for keyboard searching in ComboBox items 
  • Support for StandardUICommand 
  • TextBlock support for IsTextTrimmed and IsTextTrimmedChanged 

Community Shout Out!

New Discord Server!

We have launched our own discord server. This is a great place to come and hang out with our community, talk about releases and get community help. Head over to Discord and say hi!  

Next Steps

As we stated in the beginning, using more than one piece of Uno Platform’s offering brings exponential productivity to your development process. We hope you see our vision of how future .NET applications will be created – ultimate productivity and control for developers resulting in visually appealing, delightful end-user experiences. 

To get started with Uno Platform, please follow the beginner-oriented Counter App or Simple Calc workshop. Both are doable during a coffee break. Or, for more advanced topics, use our Tube Player workshop.  

Uno Platform

Uno Platform

Follow us on Twitter

Tags:

Uno Platform 5.2 LIVE Webinar – Today at 3 PM EST – Watch