.NET Multi-Platform App UI (MAUI)

Eintrag zuletzt aktualisiert am: 19.02.2025

.NET Multi-Platform App UI (MAUI) ist ein Framework für Cross-Platform-Apps im modernen .NET.

Termine

  • Ankündigung auf der Microsoft BUILD-Konferenz Mai 2020.
  • 23. Mai 2022: erste Version erschienen
  • Seitdem jeden November neues Release zusammen mit dem modernen .NET

Namensräume

XAML-Namensraum: http://schemas.microsoft.com/dotnet/2021/maui
.NET-Namensraum: Microsoft.Maui

Details

Der sperrige Name .NET Multi-Platform App UI (kurz: MAUI) steht für das neuste GUI-Framework von Microsoft. Dabei ist MAUI nicht komplett neu, sondern ein Refactoring und eine Weiterentwicklung des Cross-Platform-GUI-Frameworks Xamarin.Forms. Die Basis ist nun das moderne .NET SDK, zur Laufzeit kommt jedoch nicht immer die neuste .NET Core Runtime, sondern im Fall von Android und den Apple-Betriebssystemen weiterhin die Mono Runtime zum Einsatz. Der neue .NET-Namensraum ist Microsoft.Maui (vorher: Xamarin.Forms).

MAUI-Anwendungen laufen auf Windows (via WinUI3), macOS (via .NET for Mac Catalyst), iOS (via .NET for iOS), Android (via .NET for Android) und Tizen (diese Implementierung kommt von Samsung, siehe https://docs.tizen.org/application/dotnet/). Den Linux-Desktop lässt Microsoft leider außen vor. Auf GitHub findet man nur eine experimentelle Portierung eines Microsoft-Mitarbeiters Javier Suárez. Das zugehörige GitHub-Issue, das eine Linux-Desktop-Portierung fordert https://github.com/dotnet/maui/discussions/339, hat hunderte Kommentare, aber den Status "Unanswered".

Während Xamarin.Forms stark auf die Mobilbetriebssysteme ausgerichtet war, gibt es in .NET MAUI auch Features speziell für die Desktop-Betriebssysteme wie Multi-Window-Unterstützung, Tastatur-Shortcuts für Menüs (seit Version 8.0), Steuerung der Titelleiste (seit Version 9.0).

Mit MAUI kann man aus einem einzigen Projekt heraus Kompilate mit Multi-Targeting für alle unterstützten Betriebssysteme erzeugen. Mit bedingter Kompilierung können Entwicklerinnen und Entwickler plattformspezifischen Programmcode einbringen. Mehrere Kopfprojekte wie beim Vorgänger Xamarin.Forms sind aber auch bei MAUI noch möglich.

Voraussetzung für die Übersetzung für eine Zielplattform ist die Installation eines entsprechenden .NET SDK Workloads auf dem Entwicklungsrechner. Auf Windows-Rechnern kann man für alle Zielsysteme entwickeln; beim Übersetzen für das Apple-Betriebssystem braucht man aber zusätzlich einen Mac-Computer mit XCode für einen Remote Build sowie ein Apple-Entwicklerkonto.

Die erste Version von .NET MAUI ist am 23. Mai 2022 als Nachtrag zu .NET 6.0 erschienen. Die Versionsnummer von MAUI ist an .NET angeglichen, d.h. in .NET 9.0 gibt es die vierte Version von MAUI mit der Versionsnummer 9.0.

Die ersten beiden Releases (6.0 und 7.0) von .NET MAUI waren für Entwicklerinnen und Entwickler eine Herausforderung, weil das Entwicklungserlebnis und die Performance oft mangelhaft waren und einige Steuerelemente auch Bugs zur Laufzeit hatten. In den letzten Versionen hat das MAUI-Entwicklungsteam aber viel daran getan, sodass MAUI jetzt besser einsetzbar ist. Entwicklerinnen und Entwickler, die mit Xamarin.Forms gearbeitet haben, mussten zwangsweise auf MAUI umsteigen, denn der Support endete am 1. Mai 2024. Abhängig von den verwendeten Features ist Einiges zu tun, aber der .NET Upgrade Assistant hilft, siehe https://learn.microsoft.com/de-de/dotnet/maui/migration/upgrade-assistant.

Beim Support unterscheidet sich .NET MAUI von Windows Forms und WPF. Bei Windows Forms und WPF ist der Support jeweils an den Support der .NET-Version gebunden:
.NET MAUI bekommt jedoch leider immer nur 18 Monate Support, auch in den geraden Versionsnummer. Nutzerinnen und Nutzer von MAUI müssen daher mindestens alle 18 Monate die Anwendung neu kompilieren und verteilen.

.NET MAUI verwendet wie WPF und WinUI3 ebenfalls die eXtensible Application Markup Language (XAML) zur Oberflächenbeschreibung. Die XAML-Syntax bietet eine UI-Abstraktion und wird von MAUI dann zur Laufzeit in native Steuerelemente der Zielplattform gerendert, z.B. unter Windows werden dann WinUI3-Steuerelemente verwendet. Das Look & Feel von MAUI ist modern und lässt sich wie in XAML üblich gut anpassen. Animationen und Transformationen gibt es in MAUI-XAML auch, aber nicht alle Möglichkeiten, wie man sie aus WPF und WinUI3 kennt. Multimedia-Features sind vorhanden, erfordern aber teilweise die Nutzung plattformspezifischer APIs. Die Unterstützung für Eingabevalidierung ist in MAUI ebenso unbefriedigend wie in WinUI3, d.h. man muss vieles selbst machen, was WPF von Hause aus kann.

Die MAUI-XAML-Syntax und die Steuerelemente in MAUI sind deutlich anders. So gibt es in MAUI zum Beispiel das Steuerelement <Entry> anstelle des in WPF und WinUI3 verwendeten Tags <TextBox>. Ebenso verwendet man in MAUI <Label> statt <TextBlock>. .NET MAUI kann seit .NET 9.0 auch kompilierte Datenbindungen, aber nicht wie in WinUI3 mit x:Bind in der einzelnen Bindung, sondern mit x:DataType auf Ebene der Seite.

Es gibt aber – wie bei WinUI3 – ein Community Toolkit: https://github.com/CommunityToolkit/Maui. Dort gibt es wenige zusätzliche Steuerelemente wie Expander, Popup, AvatroView, Map, MediaElement und CameraView. Aber weder im Standard von MAUI noch im MAUI Community Toolkit liefert Microsoft ein DataGrid oder Diagramme; auch bei MAUI kauft man also in vielen Praxisprojekten noch eine Komponentenbibliothek von Drittanbietern.

Als Programmiersprache kann man in MAUI ausschließlich C# verwendet, während die Windows-gebundenen Konkurrenten Windows Forms, WPF und WinUI3 auch mit Visual Basic .NET, F# und C++ bzw. C++/CLI möglich sind. Es gibt keinen WYSIWYG-Designer für MAUI, aber den XAML Live Preview in Visual Studio und Hot Reloading. Das Debugging einer MAUI-Anwendung im Android-Emulator ist aber immer noch eine Angelegenheit, bei der der Geduldsfaden reißen kann, auch wenn man einen sehr teuren Entwicklerrechner mit vielen Kernen und viel RAM besitzt.

Beim Deployment erzeugt .NET MAUI entsprechende Installationspakete, die alle notwendigen Abhängigkeiten auf dem Zielsystem beinhalten, also z.B. auf Windows ein MSIX-Paket mit der Windows App Runtime für WinUI3. Das Deployment geht (wie bei Windows Forms, WPF und WinUI3 auch) sowohl per Visual Studio als auch per Kommandozeile (und damit auch per DevOps-Pipeline).

AOT-Kompilierung ist möglich für iOS- und macOS-Anwendungen. Bereits seit .NET MAUI 8.0 ist der NativeAOT-Compiler anstelle des Mono AOT-Compilers für iOS- und macOS-Anwendungen experimentell verfügbar. In .NET 9.0 gilt diese NativeAOT-Kompilierung als stabil.

Komponentenanbieter für .NET MAUI

Hersteller | Produktname | Webadresse
Microsoft | .NET MAUI Community Toolkit | https://learn.microsoft.com/de-de/dotnet/communitytoolkit/maui/get-started

Syncfusion | .NET MAUI controls | https://www.syncfusion.com/maui-controls

DevExpress | .NET MAUI Controls | https://www.devexpress.com/maui/

Telerik | UI for .NET MAUI | https://www.telerik.com/maui-ui

MESCIUS (vormals GrapeCity) | ComponentOne .NET MAUI Edition | https://www.grapecity.com/componentone/net-maui