Migration von Xamarin auf .NET MAUI

Ein Leitfaden f r eine reibungslose MigrationBei der Entwicklung von Mobile Apps im Cross Platform-Ansatz gibt es verschiedene M glichkeiten, Technologien und Frameworks, aus denen man w hlen kann. Wer auf C# und die .NET-Plattform setzen m chte, hat sich vor einigen Jahren wom glich f r das Xamarin Framework entschieden. 2011 zun chst als unabh ngiges Unternehmen gegr ndet, wurde es 2016 von Microsoft gekauft und konsequent weiterentwickelt. Mit der .NET Multi-platform App UI (.NET MAUI) ist im Mai 2023 der geistige Nachfolger des Xamarin Frameworks erschienen. In diesem Artikel schauen wir uns an, welche Gr nde f r eine Migration sprechen, welche Schritte daf r notwendig sind und welches Potential darin steckt. InhaltsverzeichnisGruuml;nde f r die MigrationVorbereitungen: Migration von Xamarin Native AppsMigrationNachbereitungFazitGr nde f r die MigrationGr nde, die f r eine Migration einer Xamarin App zu .NET MAUI sprechen, gibt es viele. Allem voran steht hier aber, dass die Unterst tzung f r Xamarin durch Microsoft am 1. Mai 2024 ausgelaufen ist. Es wird also keine Updates mehr f r das Framework geben. Wer heute moderne Cross Platform-App-Entwicklung auf der .NET-Plattform betreiben m chte und aktuell das Xamarin Framework verwendet, muss seine App fr her oder sp ter zu .NET MAUI migrieren. Was zun chst erstmal nur nach Arbeit klingt, bietet aber auch Potential, die eigene App von Grund auf zu modernisieren. Verbesserte LaufzeitgeschwindigkeitMicrosoft verspricht, dass .NET MAUI-Apps im Vergleich zu Xamarin-Apps schneller laufen. Sowohl die Startzeit als auch die eigentliche Geschwindigkeit der App sollen (auch durch den Umzug auf .NET 8, mehr dazu im n chsten Abschnitt) deutlich verbessert sein. Potential von modernem .NET und C# nutzenDas Xamarin-Framework l uft auf der Mono CLR (Common Language Runtime), einer .NET-Laufzeitumgebung, die urspr nglich als Open Source-Alternative zu Microsofts propriet rem .NET Framework entwickelt wurde. Inzwischen ist auch die Microsoft-eigene .NET CLR (aktuell .NET 8) Open Source. Sie dient als Basis f r .NET MAUI und erm glicht auch zuk nftig die Nutzung der aktuellen C#-Version (derzeit C# 12). Mit C# 12 stehen zahlreiche neue Sprachfeatures zur Verf gung, darunter Primary Constructors, Implicit Usings, Collection Expressions sowie weiter verbessertes Pattern Matching. Das stabilere Hot Reload unter .NET 8 erlaubt ein z giges Arbeiten, da Anpassungen am UI ohne Neustart der App direkt sichtbar werden. Plattform-spezifische UI-Anpassungen lassen sich in .NET MAUI mit Hilfe der neuen Handler-Architektur bequem durchf hren. Die .NET MAUI-Extension f r Visual Studio Code erm glicht es Entwickler:innen zuk nftig, mit Visual Studio Code einen modernen Texteditor f r die Entwicklung von .NET MAUI-Apps zu verwenden, der auf die eigenen Bed rfnisse angepasst werden kann. Die Extension dient unter macOS zuk nftig auch als Ersatz f r Visual Studio for Mac, dessen Support im August 2024 ebenfalls ausl uft. Plattform-spezifischer Code mit Multi TargetingAuch wenn bei einer Migration zu .NET MAUI zun chst weiterhin die gewohnte Multi Project-Struktur verwendet werden kann (was vielleicht sogar empfehlenswert ist, mehr dazu sp ter). Durch das verbesserte Multi Targeting m ssen plattform-spezifische Dateien zuk nftig nicht mehr in separaten Projekten vorgehalten werden. Sie k nnen einfach in entsprechenden Plattform-Ordnern abgelegt werden: Zus tzlich kann plattform-spezifischer Code entweder durch Datei-basiertes Multi Targeting in verschiedenen Dateien (YourClass.Android.cs, YourClass.iOS.cs) abgelegt oder durch Conditional Compilation innerhalb einer Datei aufgerufen werden: public class YourClass { public void YourMethod() { #if ANDROID // Code for Android #elif IOS // Code for iOS #endif } } Verbessertes Asset HandlingZur Einbindung von Bildern und Grafiken war es bisher notwendig, f r jede unterst tzte Plattform eigene Assets zu hinterlegen, bei Rastergrafiken ggf. noch jeweils in unterschiedlichen Gr en. Das ist mit .NET MAUI nun nicht mehr notwendig. Ein Bild oder eine Grafik muss nur noch in einer Basisgr e im Projekt hinterlegt werden, z.B. als SVG-Datei. Den Rest bernimmt dann das Tooling: Beim Kompilieren werden die Grafiken f r die verschiedenen Plattformen automatisch erzeugt. Vorbereitungen: Migration von Xamarin Native AppsF r Xamarin Native Apps, bei denen im Gegensatz zur Umsetzung mit dem moderneren Xamarin.Forms das UI vollst ndig plattform-spezifisch implementiert wurde, gibt es in .NET MAUI keinen Ersatz. Da die Umstellung der UI auf Xamarin.Forms jedoch aufwendig sein kann, bietet es sich an, zun chst die brigen Teile der App auf .NET MAUI umzustellen und anschlie end das UI direkt in .NET MAUI umsetzen. Auf Xamarin.Forms 5 aktualisierenZun chst sollte man sicherstellen, dass die App auf die aktuelle Version Xamarin.Forms 5 aktualisiert ist. Au erdem ist es empfehlenswert, auch alle anderen verwendeten Bibliotheken auf die jeweils neueste Version zu aktualisieren. Umstellung auf SDK Style-ProjekteFalls noch nicht geschehen gilt es, die Projekte innerhalb der Visual Studio Solution auf das SDK-Style Projektformat umzustellen. Das modernere Format ist Voraussetzung f r .NET MAUI-Projekte und ist im Vergleich zum Legacy-Format deutlich bersichtlicher. Zur einfachen Konvertierung eines Projekts befindet sich im Projekt-Kontextmen in Visual Studio eine entsprechende Funktion: Ob ein Projekt bereits auf das SDK Style-Format umgestellt wurde, ist an der Struktur der *.csproj-Datei einfach zu erkennen: Legacy Format:<?xml version= 1.0 encoding= utf-8 ?> <Project ToolsVersion= 15.0 xmlns= http://schemas.microsoft.com/developer/msbuild/2003 > <! (...) --> </Project> SDK-Style-Format:<Project Sdk= Microsoft.NET.Sdk > <! (...) --> </Project> MigrationZun chst eine gute Nachricht: Vorausgesetzt eine App wurde mit einer sauberen Architektur und Schichtentrennung umgesetzt, z.B. unter Verwendung des Model-View-ViewModel Patterns (MVVM), muss sie keinesfalls komplett neu geschrieben werden. Die Migration wird sich zu gro en Teilen in der UI-Schicht abspielen. Gro e Teile der App bleiben praktisch unver ndert. Trotzdem sollte der Aufwand nicht untersch tzt werden. Nicht notwendige Anpassungen vertagenEs mag verlockend sein, bei der Umstellung auf .NET MAUI direkt das volle Potential des Frameworks aussch pfen zu wollen. Es empfiehlt sich jedoch, den Fokus zun chst darauf zu legen, fr hestm glich wieder eine lauff hige Anwendung zu haben und nicht notwendige Anpassungen vorerst zu vertagen. Dazu z hlen die Umstellung auf die Single-Project-Struktur, die Umstellung der Custom Renderer und Effekte auf die neue Handler-Architektur sowie die Verwendung neuer .NET 8 Features wie z.B. global usings, die bei Einf hrung zu sehr un bersichtlichen Changesets im Code Review f hren k nnen. Option 1: Migration mit dem .NET Upgrade AssistantUm die Migration zu .NET MAUI zu unterst tzen, hat Microsoft den .NET Upgrade Assistant um die Unterst tzung f r .NET MAUI-Projekte erweitert. Abh ngig davon wie komplex ein Projekt ist, kann man damit bereits Erfolg haben. Das Tool wird sowohl als Extension f r Visual Studio als auch als Command Line Tool angeboten. Es bietet neben der In Place -Option auch die M glichkeit, ein Projekt side-by-side zu migrieren. Dabei bleiben die urspr nglichen Projektdateien w hrend der Migration zun chst erhalten. Das erlaubt einem, den migrierten Stand jederzeit mit dem alten Stand zu vergleichen. Auch wenn das Tool einen Teil der Migration bernimmt, sind im Anschluss h chstwahrscheinlich noch manuelle Nacharbeiten n tig. Option 2: Manuelle MigrationFalls die Migration der App mit den .NET Upgrade Assistant nicht erfolgreich verl uft, gibt es die M glichkeit der manuellen Migration. Schritt 1: Umstellung des Target-Frameworks auf .NET 8Als erstes muss das Target-Framework der vorhandenen Projekte auf .NET 8 umgestellt werden. Das geht am einfachsten, indem Sie in Visual Studio f r jedes Projekt zun chst eine neue .NET MAUI Class Library erstellen und die urspr nglichen Projektdateien in das neue Projekt kopieren: HINWEIS: Durch die Umstellung eines Projekts auf .NET 8 kann es notwendig sein, NuGet-Pakete ebenfalls auf eine Version zu aktualisieren, die mit .NET 8 kompatibel ist. Ist keine .NET 8-kompatible Version einer Bibliothek verf gbar, muss sie gegebenenfalls durch eine andere Bibliothek ersetzt werden. Schritt 2: Namespaces aktualisierenIm n chsten Schritt m ssen in allen Klassen die Xamarin.Forms.* Namespace-Definitionen durch die neuen Microsoft.Maui Namespaces ersetzt werden. Ein Einfaches Suchen und Ersetzen wird hier jedoch nicht funktionieren, da in .NET MAUI auch Teile des Frameworks konsolidiert und in neue Namespaces umgezogen wurden. Eine genaue bersicht ber die neuen Namespaces gibt es hier. Zus tzlich muss der Default-Namespace in Layout-Dateien (XAML) (vorher xmlns= http://xamarin.com/schemas/2014/forms ) angepasst werden: <ContentPage xmlns= http://schemas.microsoft.com/dotnet/2021/maui (...) > <!-- (Page content) --> </ContentPage> Schritt 3: Breaking Changes von APIs behandelnNeben dem Umzug von Komponenten in andere Namespaces haben sich in .NET MAUI auch einige APIs ge ndert. Dazu z hlen unter anderem: Anpassungen am Layout-System Anpassungen an den Klassen f r die Interaktion mit dem Ger t Anpassungen an den Color Types Dementsprechend k nnen weitere Angleichungen am Code notwendig sein. Eine gute bersicht ber potenziell notwendige Ma nahmen gibt es hier. Eine gute Nachricht gibt es noch zu Xamarin Essentials: Die Bibliothek, die Xamarin.Forms um viele Basis- und Plattformfunktionalit ten erweitert, musste blicherweise separat nachinstalliert werden. Das hat sich bei .NET MAUI nun ge ndert. Ihre Funktionen wurden direkt in das Framework integriert. Schritt 4: App testenZum Schluss sollte die App ausgiebig getestet werden. Auch wenn .NET MAUI im Vergleich zu Xamarin.Forms in vielerlei Hinsicht eine Verbesserung darstellt, ist das Framework nicht perfekt. Einen berblick ber bereits bekannte Herausforderungen finden Sie auf github. NachbereitungHat man die essenziellen Schritte der Migration abgeschlossen und wieder eine lauff hige App vorliegen, kann man sich nach und nach weiteren Anpassungen widmen und so das volle Potential von .NET MAUI aussch pfen. FazitEs gibt viele Gr nde, die f r die Migration einer Xamarin App zu .NET MAUI sprechen. Eine gute Vorbereitung und ein sauberes Vorgehen tragen ma geblich zum Erfolg der Migration bei. Der .NET Upgrade Assistant kann dabei unterst tzen. Es ist empfehlenswert, sich bei der Migration zun chst auf die notwendigen nderungen zu beschr nken und alle weiteren Anpassungen nach und nach vorzunehmen. Sie ben tigen Unterst tzung bei der Migration Ihrer Xamarin App zu .NET MAUI? Unser Expertenteam unterst tzt Sie gerne. N here Infos und die M glichkeit einer direkten Kontaktaufnahme finden Sie hier. Weitere Quellenhttps://learn.microsoft.com/en-us/dotnet/maui/migration/?view=net-maui-8.0 https://learn.microsoft.com/en-us/dotnet/maui/migration/native-essentials?view=net-maui-8.0 https://www.syncfusion.com/blogs/post/xamarin-versus-net-maui https://docs.telerik.com/devtools/maui/migrate-to-net-maui Mehr zum Thema Cross Platform-EntwicklungCross Platform-EntwicklungCross Platform-Entwicklung mit Flutter, React Native, .NET MAUI & Co.Mehr erfahrenCross Platform Framework Flutter in der PraxisZum MitschnittCross Platform Frameworks im Handel 2022Welche Rolle spielt die plattform bergreifende App-Entwicklung im Einzelhandel im Jahr 2022?WeiterlesenDer Beitrag Migration von Xamarin auf .NET MAUI erschien zuerst auf adesso mobile solutions GmbH.

zum Artikel gehen

Veranstaltung: Neuigkeiten bei der Cross-Platform-Entwicklung mit .NET MAUI 9.0

.NET MAUI, der Nachfolger von Xamarin.Forms, hat sich seit seiner Verffentlichung im Mai 2022 innerhalb krzester Zeit zu einem der aktivsten Projekte der .NET Foundation entwickelt. In diesem Vortrag werfen wir einen Blick auf den aktuellen Stand und die

zum Artikel gehen

Schulung: Xamarin: .NET-/C#-Cross-Plattform-Entwicklung für Android, iOS (iPhone, iPad), macOS und Windows (.NET Mobile/.NET for iOS/.NET for Android/.NET MAUI)

Optional: Einfhrung in die notwendigen Grundlagen zu .NET und C# Optional: Einfhrung in die notwendigen Grundlagen zu den Betriebssystemen iOS, macOS, Android und Windows Grundlagen der Xamarin-Plattform - Cross-Platform-Unterschiede zwischen native

zum Artikel gehen

Schulung: .NET Akademie: .NET MAUI: .NET-/C#-Cross-Plattform-Entwicklung für Android, iOS (iPhone, iPad) und Windows (3-Tages-Agenda des öffentlichen Seminars)

Grundlagen der Xamarin-Plattform - Unterschiede zwischen native Apps und Web-Technik-basierten Apps (z.B. PhoneGap) - Softwareanforderungen und Installation von Xamarin - Mono als Implementierung des Microsoft .NET Framework - Xamarin.Android (frher

zum Artikel gehen

Schulung: Cross-Plattform-Entwicklung mit Cross-Plattform-Tools im Vergleich

Warum Cross-Plattform-Entwicklung? Herausforderungen der Cross-Plattform-Entwicklung Werkzeuge fr die Cross-Plattform-Entwicklung (zu besprechende Werkzeuge nach Ihrer Wahl) - .NET MAUI (ehemals Xamarin) - Flutter - React Native - Apache Cordova -

zum Artikel gehen

Lexikoneintrag: Visual Studio for Mac

Visual Studio for Mac ist keine Portierung des bisherigen Visual Studio , das nur auf Windows luft, sondern basiert auf dem Anfang 2016 im Rahmen der Akquise von Xamarin [https://www.heise.de/developer/meldung/Microsoft-und-die-NET-Mono-Firma-Xamarin-Die

zum Artikel gehen