.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 Native
AOT-
Compiler anstelle des
Mono AOT-
Compilers für
iOS- und macOS-Anwendungen experimentell verfügbar. In
.NET 9.0 gilt diese Native
AOT-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) | Component
One .NET MAUI Edition |
https://www.grapecity.com/componentone/net-maui