Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 6 Min.

Endlich Land in Sicht dank MAUI 9

.NET MAUI 9 bringt kaum Neues, dafür aber die Stabilität, die Xamarin.Forms-Entwickler zur Migration ihrer bestehenden Apps dringend benötigen.
© dotnetpro
Nach mehrjähriger Entwicklungsarbeit präsentierte Microsoft im Mai 2022 das Cross-Plattform-Framework
.NET MAUI 6 als evolutionären Xamarin.Forms-Nachfolger. Trotz vielversprechender Neuerungen wie dem Single-­Pro­ject-Ansatz und einer neuen, lose gekoppelten Steuerelementarchitektur empfanden viele Entwickler .NET MAUI aufgrund erheblicher Stabilitätsprobleme nicht als Fortschritt, sondern eher als Rückschritt.Als Reaktion auf diese Wahrnehmung setzte Microsoft bei den beiden Nachfolgeversionen 7 und 8 den Fokus der Entwicklung vorrangig auf die Stabilisierung des Produkts und führte nur marginale Neuerungen ein. Diese Strategie zahlte sich aus: Ab Version 8 lässt sich von einer stabilen Entwickler­erfahrung sprechen. Leider gibt es trotz der vielen Stabilitätsverbesserungen immer noch kritische Fehler. Außerdem fehlen einige Funktionen unter .NET MAUI, die unter Xama-
rin.Forms vorhanden waren.Um dies zu adressieren, setzt Microsoft mit .NET MAUI 9 die Strategien der Versionen 7 und 8 fort, indem der Fokus weiterhin auf Fehlerbehebung, verbesserte Testautomatisierung und das Ergänzen fehlender Funktionen aus Xamarin.Forms gelegt wird. Für .NET MAUI 9 bedeutet dies trotz über 1000 Commits in mehr als 3500 Dateien vornehmlich Bugfixes und neue automatisierte Tests, wodurch kaum neue Funktionen eingeführt werden.Die Entscheidung des .NET-MAUI-Teams, für .NET MAUI 9 den Schwerpunkt erneut auf Fehlerbehebung statt auf die Einführung neuer Funktionen zu legen, ist eine nachvollziehbare Stra­tegie, insbesondere mit Blick auf das Support-Ende von Xamarin.Forms vom 1. Mai 2024. Seit diesem Datum sind viele Xamarin.Forms-Entwickler gezwungen, ihre Apps kurzfristig auf .NET MAUI zu migrieren. Der weitere Fokus auf Qualität statt Funktionsvielfalt bei .NET MAUI 9 stellt eine solide Basis für neue Apps und Xamarin.Forms-Migrationen sicher. In der Praxis bedeutet dies, dass sich Entwickler auf eine robustere Plattform verlassen können, was letztendlich die Qualität und Zuverlässigkeit der Endprodukte verbessert.Die Konzentration auf Stabilität und Fehlerbehebung bedeutet jedoch nicht, dass es keine neuen Funktionen in .NET MAUI 9 gibt. Einige wenige Neuerungen haben es in die neue Version geschafft. Hierzu gehören neue Projektvorlagen und zwei neue Steuerelemente.

Neue Projektvorlagen

Die auffälligsten Neuerungen von .NET MAUI 9 sind die beiden neuen Projektvorlagen .NET MAUI Blazor Hybrid and Web App und .NET MAUI Multi-Project App, die bei der Anlage eines neuen Projekts zur Auswahl stehen (siehe Bild 1).
Der Dialog zum Erstellen eines neuen Projekts bietet ab .NET MAUI 9 zwei neue Projektvorlagen (Bild 1) © Autor
Die neue Projektvorlage .NET MAUI Blazor Hybrid and Web App richtet sich primär an Blazor-Entwickler, die ihren Quellcode im Web und in einer MAUI-App wiederverwenden möchten. Bild 2 zeigt die Struktur eines mit der neuen Projektvorlage erstellten Projekts. Wie Sie dem Screenshot entnehmen können, wird von der Projektanlage neben einem .NET-MAUI- und einem Blazor-Projekt eine Razor-Klassenbibliothek mit der Endung .Shared angelegt. In diesem Projekt befinden sich die geteilten Bildschirmmasken, die sowohl im Web als auch in der App angezeigt werden können. Sowohl das .NET-MAUI-Projekt als auch das Blazor-Projekt verweisen auf die Razor-Klassenbibliothek und können somit die dort angelegten Seiten Counter.razor, Home.razor und Weather.razor darstellen. Bild 3 zeigt die laufende Anwendung von links nach rechts im Webbrowser, unter Android und als .NET-MAUI-Windows-Desktop-Anwendung.
Die Projektstruktur eines Projekts vom Typ .NET MAUI Blazor Hybrid and Web App (Bild 2) © Autor
Eine Blazor-Anwendung im Web sowie unter Android und Windows als MAUI-Anwendung (Bild 3) © Autor
Die zweite neue Projektvorlage, .NET MAUI Multi-Project App, wirkt auf den ersten Blick wie ein Schritt zurück in die Vergangenheit. Ein mit dieser Vorlage angelegtes Projekt verfügt über ein Projekt für den geteilten Quellcode und ein weiteres je Zielplattform (siehe Bild 4). Dies erinnert an Xamarin.Forms, denn auch dort gab es ein Projekt je Zielplattform sowie ein geteiltes Projekt für den plattformübergreifenden Quellcode. Diese Vorlage richtet sich vor allem an Xamarin.Forms-Entwickler, die mit der traditio­nellen Projektstruktur vertrauter sind als mit dem neueren Single-Project-Ansatz. Zudem erleichtert diese Struktur die ­manuelle Migration bestehender Xama-
rin.Forms-Anwendungen.
Die Projektstruktur einer .NET-MAUI-Multi-Project-Projektmappe (Bild 4) © Autor

.NET MAUI liebt JavaScript

Neben den neuen Projektvorlagen und zahlreichen Fehlerkorrekturen haben es auch zwei neue Steuerelemente in
.NET MAUI 9 geschafft, das HybridWebView-Control und das TitleBar-Steuerelement.Das HybridWebView-Steuerelement, das zuvor zwei Jahre lang als experimentelles Steuerelement im GitHub-Reposi­tory von Microsoft-Mitarbeiter Eilon Lipton (siehe [1]) entwickelt wurde, ermöglicht die Ausführung von HTML, Java­Script und CSS in .NET-MAUI-Apps. Zusätzlich bietet es eine Schnittstelle für die Kommunikation zwischen JavaScript und C#. Damit ist es nun möglich, einen Teil der Anwendung oder sogar die gesamte Anwendung mit Webtechnologien zu entwickeln. Diese Technik war zwar bereits seit .NET MAUI 6 mit Blazor möglich, doch mit dem HybridWebView-Control können nun auch Anwendungen, die in anderen Webframeworks wie Angular, React, Svelte oder Vue geschrieben wurden, integriert werden. Dazu wird einfach ein neuer Ordner wwwroot im Verzeichnis Resources\raw angelegt (siehe Bild 5) und die bestehende Webanwendung dorthin kopiert. Die eingebettete JavaScript-Anwendung kann anschließend über ein HybridWebViewElement in eine XAML-Seite integriert werden (siehe Listing 1), ohne dass eine Internetverbindung für die Ausführung der webbasierten App benötigt wird. Weitere Informationen zur Integration des HybridWebView-Controls finden Sie unter [2].
.NET MAUI 9 ermöglicht es, beliebige JavaScript-Webanwendungen mit Ihrer App auszuliefern (Bild 5) © Autor
Listing 1: Einsatz des neuen HybridWebView-Steuerelements
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/
                    dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/
                      winfx/2009/xaml"
             x:Class="HybridWebViewDemo.MainPage">
  <HybridWebView 
    x:Name="myHybridWebview"
    RawMessageReceived=
      "myHybridWebview_RawMessageReceived"/>
</ContentPage> 

Neue Titelleiste vorerst nur unter Windows

Das zweite neue Steuerelement ist das TitleBar-Control, mit dem Sie das Aussehen der Titelleiste Ihrer App unter Windows anpassen können. Wie Sie in Bild 6 sehen, können Sie das Menü-Icon verändern, ein App-Icon vergeben und den Titel sowie den Unter­titel konfigurieren. Außerdem haben Sie die Möglichkeit, über die beiden Inhaltsbereiche Content und TrailingContent interaktive Elemente wie zum Beispiel Eingabefelder, Suchleisten, Buttons oder anklickbare Bilder hinzuzufügen, wie man es von zum Beispiel Microsoft Teams oder den modernen Microsoft-Office-Programmen kennt.
Die neue Titelleiste unter Windows (Bild 6) © Autor
Die Anpassung der Titelleiste können Sie entweder im XAML-Code oder per C#-Implementierung vornehmen. Listing 2 enthält die C#-Variante, deren Ergebnis Bild 6 zeigt. Zum jetzigen Zeitpunkt ist das neue Steuerelement nur unter Windows verfügbar. Zukünftige Updates sollen die Unterstützung auf Mac Catalyst ausweiten, wodurch eine plattformübergreifende Konsistenz gewährleistet wird.
Listing 2: Aussehen und Verhalten der Titelleiste unter Windows mit dem TitleBar-Steuerelement anpassen
protected override void OnAppearing()
{
  base.OnAppearing();
  // Aussehen der Titelleiste anpassen
  Window.TitleBar = new TitleBar
  {
    // Menü-Icon verändern
    LeadingContent = new ImageButton
    {
      Source = "menu.png"
    },
    // App-Icon
    Icon = "bolt.png",
    // Titel der App
    Title = "App Title",
    // Untertitel der App
    Subtitle = "App Subtitle",
    // Hauptinhalt der Titelleiste
    Content = new SearchBar
    {
      Placeholder = "Suche",
      MaximumWidthRequest = 300, 
      Margin = 4,
      FontSize = 16,
      HeightRequest = 32,
      BackgroundColor = Colors.White
    },
    // Sekundärer Inhalt der Titelleiste
    TrailingContent =
    new HorizontalStackLayout
    {
      Spacing = 8,
      Children =
      {
        new Label
        {
          Text = "Wilhelm Brause",
          VerticalOptions = LayoutOptions.Center,
        },
        new Image
        {
          Source = "favorites.png",
          MaximumHeightRequest = 24,
          MaximumWidthRequest = 24,
          GestureRecognizers =
          {
            new TapGestureRecognizer
            {
              Command = new Command(() => 
                DisplayAlert("Alert", 
                "You tapped the favorites icon", "OK"))
            }
          }
        }
      }
    }
  };
} 

Weitere Neuerungen in .NET MAUI 9

.NET MAUI 9 liefert neben den bereits erwähnten neuen Steuerelementen und Projektvorlagen noch einige kleinere Neuerungen. Dazu gehören zwei neue optionale Handler für iOS und Mac Catalyst, die die Performance der CollectionView und der CarouselView verbessern. Listing 3 zeigt, wie Sie die beiden Handler in der Datei MauiProgram.cs registrieren können.
Listing 3: Registrierung der iOS- und Mac-Catalyst-Handler CollectionViewHandler2 und CarouselViewHandler2
#if IOS || MACCATALYST
builder.ConfigureMauiHandlers(handlers =>
{
  handlers.AddHandler<Microsoft.Maui.Controls
    .CollectionView, Microsoft.Maui.Controls
    .Handlers.Items2.CollectionViewHandler2>();
  handlers.AddHandler<Microsoft.Maui.Controls
    .CarouselView, Microsoft.Maui.Controls.Handlers
    .Items2.CarouselViewHandler2>();
});
#endif 
Eine weitere Neuerung betrifft Eingabefelder, für die .NET MAUI 9 eine verbesserte Eingabeunterstützung für Datums- und Uhrzeitwerte sowie Passwörter durch die virtuelle Bildschirmtastatur bereitstellt.Zudem erweitert die neueste Version die Unterstützung auf Android 15 (API Level 35) und führt Android-Asset-Packs ein. Diese sind besonders für Spiele- und App-Entwickler relevant, deren Produkte die Standardpaketgröße von Google Play überschreiten. Mit Asset Packs können nun Pakete bis zu 2 GByte statt der üblichen 200 MByte hochgeladen werden, was die Flexibilität in der App-Entwicklung und -Distribution signifikant steigert.

Fazit

NET MAUI 9 unterscheidet sich auf den ersten Blick kaum von seinem Vorgänger .NET MAUI 8. Schließlich gibt es nur wenige offensichtliche Neuerungen. Die wirklichen Vorteile liegen jedoch, wie eingangs erwähnt, unter der Haube. Mit der Version 9 folgt Microsoft einmal mehr dem Ruf der Entwicklergemeinde und legt den Fokus auf die Stabilität des Produkts, anstatt eine Vielzahl neuer Funktionen zu implementieren. Davon profitieren nicht nur Entwickler, die neue Apps mit .NET MAUI entwickeln, sondern vor allem auch diejenigen, die ihre bestehende App von Xamarin.Forms auf .NET MAUI migrieren. Eine Liste sämtlicher Neuerungen von .NET MAUI 9 finden Sie unter [3].

Fussnoten

  1. .NET MAUI HybridWebView experiment auf GitHub, http://www.dotnetpro.de/SL2411MAUI1
  2. Microsoft Learn, HybridWebView in .NET 9, http://www.dotnetpro.de/SL2411MAUI2
  3. Microsoft Learn, What’s new in .NET MAUI for .NET 9, http://www.dotnetpro.de/SL2411MAUI3

Neueste Beiträge

Contacts guaranteed: Die Partnerunternehmen auf der DWX 2025 - Konferenz
Über 30 führende Unternehmen, unzählige Impulse: Auf der DWX 2025 in Mannheim zeigten unsere Partner, was Tech heute kann – und morgen möglich macht.
2 Minuten
10. Jul 2025
KI lässt Entwickler ihre Leidenschaft zum Programmieren neu entdecken - Motivation
Softwareentwicklung ist gleich Spaßfreie Zone? Das muss nicht sein: Der Beitrag beleuchtet, wie Teams ihren Kopf wieder freibekommen und ihre Freude am Entwickeln neu entdecken.
5 Minuten
10. Jul 2025
Miscellaneous

Das könnte Dich auch interessieren

Erstellung von ZUGFeRD 2.3 mit .NET C# - Rechnungserstellung
ZUGFeRD 2.3 konforme Rechnungen mit TX Text Control .NET Server für ASP.NET erstellen.
3 Minuten
9. Jan 2025
Wann wird die Unterstützung für das .NET Framework eingestellt? - .NET
Ein Blick auf die Lebenszyklus-Richtlinien von Microsoft zeigt, dass das .NET Framework weiterhin unterstützt wird, während sich die Community auf die neuesten Versionen konzentriert.
2 Minuten
28. Jan 2025
Einblicke der anderen Art: Neue .NET-Features entdecken - .NET
Entdecken Sie, wie man die neuesten .NET-Entwicklungen über GitHub verfolgt.
2 Minuten
11. Jun 2025
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige