What’s New in Xamarin and Visual Studio 2022

David

This week .NET Conf 2021 is celebrating the release of .NET 6, Visual Studio 2022 is now available, and we are happy to announce that Visual Studio 2022 also includes Xamarin support for Android 12, Apple’s latest Xcode 13 releases of iOS, iPadOS, macOS, and tvOS, and the latest Xamarin.Forms service releases that work with both. Let’s round up the latest Xamarin releases available today, revisit the Xamarin support policy, and look ahead at the road to .NET 6 and .NET MAUI coming in the second quarter of 2022.

.NET 6 is GA today and .NET Muti-platform App UI (MAUI) support is on the way for mobile and desktop! Today, continue building your production apps with Xamarin, check out the .NET MAUI previews as we work towards our release in Q2 2022, and when you’re ready try a migration of your projects with our .NET Upgrade Assistant.

Xamarin in VS22

Xamarin in Visual Studio 2022

Visual Studio 2022 introduces many improvements and new experiences, and Xamarin.Forms applications get these as well. The XAML Live Preview is one of the most exciting features that mirrors your running application within Visual Studio and enables adding layout guides and zooming to get your pixel perfect alignment. The Live Visual Tree allows you to see your UI hierarchy and locate the XAML source, and XAML Hot Reload continues to be improved as well.

Mobile and Cross-platform Sessions at .NET Conf 2021

Several sessions at .NET Conf have content for building mobile, desktop, and cross-platform applications with .NET today. Anything that mentions “.NET MAUI” is for you. Be sure to check out these sessions among others:

Session Speaker(s) Date Time (Pacific)
.NET Conf Keynote Many Tuesday 11/9 8am
Introduction to .NET MAUI Maddy Leger Montaquila Tuesday 11/9 10:30am
Speed up your .NET Development with .NET Hot Reload Dmitry Lyalin Tuesday 11/9 11:30am
Building cross-platform native apps with .NET MAUI and Blazor Eilon Lipton Tuesday 11/9 3:30am
Drawn controls in .NET MAUI Javier Suarez Ruiz Thursday 11/11 2:00am
Welcome to Maui Community Toolkit Pedro Jesus & Gerald Versluis Thursday 11/11 3:30am

Complete agenda

Xamarin ships support for the latest mobile versions

Over the past several months, Xamarin has shipped several service release for Xamarin.Forms, and .NET bindings for both beta and stable releases from Google and Apple. These SDKs are available in the new stable release of Visual Studio 2022 and servicing releases of Visual Studio 2019 (Xcode 13.1 SDKs support is shipping in the next service release for Visual Studio 2019).

  • Visual Studio 2022 (17.0) – download
  • Visual Studio 2022 for Mac (17.0) – download
  • Visual Studio 2019 (16.11.6) – download
  • Visual Studio 2019 for Mac (8.10.12) – download

Xamarin.Forms 5

Xamarin.Forms 5.0 service release 6 shipped October 18th, bringing 145 fixes since 5.0 initially shipped January 5th. This includes support for Android 12 and iOS 15, and we are on pace to continue shipping service releases approximately every 6 weeks. Need a release sooner? Remember, you can download builds from GitHub and Azure Pipelines from any pull request and commit. Full release notes are available. Update your applications today using your favorite NuGet package manager, and you’ll be in the best position for later upgrading to .NET MAUI.

Android 12

Google has shipped their latest stable version of Android 12 which includes an all new Material You design language modernization of Material Design, updated widget designs, overall system performance improvements, and new features and APIs for camera, graphics and images, media, security and privacy, storage, and more. For a complete list of updates and documentation, visit the Android developer portal.

To support Android 12 we’ve updated to OpenJDK 11 from version 8, and updated the Android designer, SDK manager, and device manager for compatibility.

iOS 15, iPadOS 15, tvOS 15

Apple has shipped Xcode 13 which includes iOS 15, iPadOS 15, and tvOS 15. Last week Apple also shipped Xcode 13.1 which added support for macOS Monterey 12.

Xamarin Support for 2 Years

With the change in schedule for shipping .NET MAUI and support for Android, iOS, and macOS in .NET 6, we want to update you on the support and servicing plan for Xamarin during this transition. Xamarin is governed by the Microsoft Modern Lifecycle which states that the current Xamarin release is supported for two years after the initial release, or until a newer, subsequent Current release. .NET MAUI and related platforms will be covered by the .NET and .NET Core Support Policy since, after all, it is a unified part of .NET now.

This means, from the last current release of Xamarin you’ll get two years of supported service releases. As was just highlighted above, Android and iOS shipped new releases so you can expect support through November 2023. This the timeframe you have to move existing projects to .NET 6, and we are working to make this a smooth process for you.

Preparing your transition to .NET 6

In the second quarter of 2022 we will ship a supported version of .NET Multi-platform App UI (MAUI), the next version of .NET support for cross-platform, mobile and desktop applications. A top priority for this transition is to make sure that Xamarin applications can upgrade to take advantage of the latest advancements in .NET, C#, and Visual Studio without rewrite. This means a Xamarin project need only be moved from .NET Framework to .NET 6 and you can continue shipping.

Let’s look first at what this means step-by-step for any Xamarin application.

Step 1: .NET Upgrade Assistant

The .NET Upgrade Assistant is a dotnet command-line tool that will perform the basic conversion of your project (csproj file) from the Xamarin .NET Framework style to the current SDK Style project that is commonly used by all other .NET project types. As you will recall, this transition unifies Xamarin with .NET so we share all the same tech and skills no matter what kind of apps we are building.

Step 2: Updating Dependencies

After converting the project file format, the tool will evaluate your project dependencies and report any incompatibilities for you to reevaluate. If you are using controls from a component vendor such as DevExpress, Infragistics, Steema, Syncfusion, Telerik, or others, they may already be available. Check with each for roadmap plans and availability.

The Xamarin Community Toolkit is shipping two options for upgrading to .NET 6. The first is a 1-to-1 compatible version of the toolkit that is compatible with .NET 6. The second option is a pure .NET 6 version that takes advantage of all the architectural improvements in .NET, though may not yet have 1-to-1 parity with the Xamarin Community Toolkit; check to see if what you need is available.

Xamarin.Essentials is now part of .NET 6 and .NET MAUI, so you will get that without any additional NuGet dependency.

If your project is Xamarin.Android or Xamarin.iOS, then you may well be done right here. Compile and test your application.

Step 3 (optional): Xamarin.Forms to .NET MAUI

.NET MAUI uses the same control naming, layout naming, navigation patterns, and XAML features that your applications use in Xamarin.Forms. This means it will all work as-is. So what has changed?

.NET MAUI uses the namespace “Microsoft.Maui” instead of “Xamarin.Forms”. The .NET Upgrade Assistant will have made this change for your in both your XAML and C# files. If you didn’t update NuGets that reference Xamarin.Forms types in the previous step with versions that now use Microsoft.Maui, then you’ll need to address those now.

What other differences will you encounter?

  1. App vs Window – Xamarin.Forms apps are single window, whereas .NET MAUI applications can be multi-window. This means the root view of the application has fundamentally been upgraded. We have preserved the style of App.cs (and App.xaml.cs) so your applications can continue to work as-is.

  2. Custom Renderers – .NET MAUI no longer needs them in the new “handler” architecture, however we provide a compatibility method for you to register them so you can continue to use them. For future needs, we recommend learning the handler pattern to customize platform control look and feel. For example, let’s say you have a custom renderer (CustomEntry in the library) for Android (CustomEntryRenderer in the Android project). To tell .NET MAUI where to find and how to use this renderer instead of the new handler, open the MauiProgram.cs in the root of your project where we have defined the app builder:

appBuilder
    .UseMauiApp<App>()
    .ConfigureMauiHandlers(handlers =>
    {
#if __ANDROID__
        handlers.AddCompatibilityRenderer(typeof(CustomEntry), typeof(Droid.Renderers.CustomEntryRenderer));
#endif
    });

That’s it. Do this for each renderer using the conditional compilation identifiers like __ANDROID__.

  1. Effects – just like with custom renderers, you can register effects in the app builder.
appBuilder
    .UseMauiApp<App>()
    .ConfigureEffects(effects =>
    {
        effects.Add<FocusRoutingEffect, FocusPlatformEffect>();
    });

Open your project in Visual Studio 2022 and start building. You may encounter a few type changes or incompatibilities. Resolve those and very soon you’ll have completed the transition to .NET 6.

You can expect this to be anywhere from a few hours to a few days of work, depending on the complexity of your application and the availability of .NET 6 compatible dependencies.

To attempt a migration today, please try out the .NET Upgrade Assistant and provide feedback so we can continue to improve the assistant between now and our GA release.

For additional examples of migrating projects from Xamarin.Forms to .NET MAUI, check out Javier Suarez Ruiz’s repository Xamarin.Forms to ,NET MAUI.

Starting Projects Today

.NET MAUI Preview 10 is available today in the Visual Studio 2022 preview channel, and Xamarin.Forms 5.0 is available. Both support the latest platform versions. If your project development timeline is longer than 4 months or everything you need is ready in .NET MAUI, then we recommend starting there. Otherwise, Xamarin.Forms is your best bet and you can see what lays ahead for you to transition to .NET 6 when you’re ready.

Get started today with these resources:

7 comments

Leave a comment

  • Andrew Birch

    Heya David 🙂

    Update: I had a question about Android 12 support for Visual Studio 2019 but that was answered with today’s release of 16.11.6. So I’ve removed that and will leave just the second question.

    For a good couple of months now the versions of Xamarin.iOS and Xamarin.Android have been misaligned on both Visual Studio for Windows and Visual Studio for Mac. I thought the release of Visual Studio for Windows 2022 would line everything back up again but it hasn’t. Right now, with everything up to date I’ve got:
    – Xamarin.iOS 15.0.0.8/Xamarin.Android 12.0.0.3 on VS2019 for Windows
    – Xamarin.iOS 15.0.0.18/Xamarin.Android 12.1.0.5 on VS2022 for Windows
    – Xamarin.iOS 15.2.0.1/Xamarin.Android 12.0.0.3 on VS2019 for Mac

    Most of these versions don’t align and for Xamarin.iOS the misalignment causes a really weird and somewhat disconcerting experience that if you install everything fresh out of the box or update everything to latest, when you go to pair up the Windows machine to the Mac you get an error and the offer to downgrade the version of Xamarin.iOS on the Mac to match. This has been the case for months with various different versions now and it makes us really nervous to update because we don’t know if the version mismatches and downgrading of Xamarin.iOS etc. are a properly supported state and what oddities this may have when you add versions of Xcode etc. into the mix.

    I thought this might be a temporary thing that was due to the Visual Studio 2022 development cycle, but now that it’s still occurring I thought I’d ask about it because this months of misalignment didn’t used to happen in previous years. I know these products now ship as part of bigger Visual Studio products with their own release schedules etc. which makes things trickier but are there plans to get the alignment of these tools back in line in the future to stop these experiences from happening where a default install results in partially broken experience?

    • Klemen Žarn

      Hi Andrew,

      This is the case for me too, just updated everything because of new Mac device and now I have Xamarin.iOS 15.0.0.8 in Windows and Xamarin.iOS 15.2.0.1 on Mac. What exactly did you do? Did you downgrade on Mac? Or did you just skip downgrade prompt?

    • David OrtinauMicrosoft employee

      In .NET 6 we have decoupled the Mac build host from Visual Studio to improve this. The idea is that you can code from Windows and when connecting the Mac build host get the aligned version without VS installed on the Mac at all. And if VS Mac is installed, the versions shouldn’t conflict.

      This doesn’t resolve being able to bounce back and forth between platforms to work on the same project. For this, updating both platforms in concert is the best advice, which means check for version parity before hitting that update button.

      VS22 development is still very much underway, especially for .NET 6 support in VS Mac. So, we’ll have more months before we approach parity of experience for Xamarin and .NET MAUI.

      .NET 6 really makes this much better since we ship on the .NET schedule, and you can manage updates through CLI independently from VS22. Today this is how I update my Windows and Mac environments. I get the latest VS22 builds I want, and I align my .NET MAUI versions from CLI.

  • Karabin, Josh

    Hi David,

    Will Xamarin.Forms also be supported for 2 years from the 5.0-sr6 date, or is there a different timeline or policy involved? Thanks!

    • David OrtinauMicrosoft employee

      2 years from the major version release is the language in the policy I believe. Really it’s the underlying SDKs that you probably care more about, such as Android and iOS. Roughly you have until Q4 2023 to get moved over, and if you wait until the last moment then that’s gonna put you several releases behind on Android and iOS unless you upgrade to .NET 6/7/8.

      My advice is to get onto .NET 6 asap, and we are doing everything we can to make it easy. I’m happy to talk more about that and hear about any concerns you have about planning your product roadmap. Shoot me an email and we can talk. david.ortinau@microsoft.com