.NET Multi-Platform App UI (MAUI)

Eintrag zuletzt aktualisiert am: 13.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 .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. Das Projektsystem basiert nun auf dem .NET SDK mit Multi-Targeting aus einem Projekt heraus anstelle der in Xamarin.Forms üblichen Lösung mit mehreren Kopfprojekten.

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). 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 und 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 für alle unterstützten Betriebssysteme erzeugen. Voraussetzung ist die Installation sogenannter .NET SDK Workloads für die Zielsysteme auf dem Entwicklungsrechner. Auf Windows-Rechnern kann man für alle Zielsysteme entwickeln; beim Übersetzen für 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 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 gerade 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 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, die 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 das Steuerelement <Entry> anstelle von <TextBox> in WPF und WinUI3. Ebenso verwendet man <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 ist kauft man in vielen Praxisprojekte noch eine Komponentenbibliothek von Drittanbietern.

Es gibt keinen WYSIWYG-Designer für MAUI, aber Hot Reloading. Als Programmiersprache kann man nur C# verwendet, während Windows Forms, WPF und WinUI3 auch mit Visual Basic .NET, F# und C++ bzw. C++/CLI möglich sind.

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 geht (wie bei Windows Forms, WPF und WinUI3 auch) sowohl per Visual Studio als auch per Kommandozeile.

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 dieser als stabil.