Was ist neu in .NET MAUI für .NET 8?

Der Fokus von .NET MAUI in .NET 8 liegt auf der Qualität. In .NET 8 wurden 1618 Pullanforderungen zusammengeführt und 689 Probleme geschlossen. Dazu gehören Änderungen des .NET MAUI-Teams sowie der .NET MAUI-Community. Diese Änderungen sollten zu einer erheblichen Qualitätssteigerung in .NET 8 führen.

Wichtig

Aufgrund der Arbeit mit zugrundeliegenden externen Abhängigkeiten, wie Xcode oder Android SDK Tools, unterscheidet sich die .NET Multiplatform App UI (.NET MAUI) Support Policy von der .NET und .NET Core Support Policy. Weitere Informationen finden Sie unter .NET MAUI Support Policy.

In .NET 8 wird .NET MAUI als .NET-Workload und als mehrere NuGet-Pakete ausgeliefert. Der Vorteil dieses Ansatzes besteht darin, dass Sie Ihre Projekte einfach an bestimmte Versionen anheften können, während Sie gleichzeitig eine Vorschau auf unveröffentlichte oder experimentelle Builds erhalten. Wenn Sie ein neues .NET MAUI-Projekt erstellen, werden die erforderlichen NuGet-Pakete automatisch zum Projekt hinzugefügt.

Dieser Artikel listet die neuen Funktionen von .NET MAUI für .NET 8 auf und enthält Links zu detaillierteren Informationen zu den einzelnen Funktionen.

Informationen zu den Neuerungen in .NET 8 finden Sie unter Neuheiten in .NET 8.

Neue Funktionen

Während der Schwerpunkt dieser Version von .NET MAUI auf der Qualität liegt, gibt es auch einige neue Funktionen, die neue Szenarien in Ihren Apps ermöglichen.

Steuerelemente

Desktop

Gestenerkennung

Plattformintegration

XAML

Problembehandlung

Verschiedenes

  • Die Fensterverwaltung kann von der App-Klasse entkoppelt werden. Weitere Informationen finden Sie unter Entkopplung der Fensterverwaltung von der App-Klasse.
  • Verschiedene Systemschriftarten können in Android-Apps problemlos verwendet werden. Weitere Informationen finden Sie unter Schriften verbrauchen.
  • Unter iOS erhält MauiUIApplicationDelegate eine PerformFetch-Methode, die über das iOSLifecycle.PerformFetch-Delegat außer Kraft gesetzt oder verwendet werden kann. Weitere Informationen finden Sie unter iOS-Plattform-Lebenszyklusereignisse.

Abschaffung und Entfernung von Typen

Die folgenden Typen oder Mitglieder sind veraltet:

Die folgenden Typen oder Members wurden entfernt:

Verhaltensänderungen

Das folgende Verhalten hat sich gegenüber der vorherigen Version geändert:

  • Die Verwendung des Map-Steuerelements aus XAML erfordert jetzt die folgende xmlns-Namespace-Deklaration: xmlns:maps="http://schemas.microsoft.com/dotnet/2021/maui/maps".
  • Das Zwischenspeichern von Bildern ist unter Android deaktiviert, wenn ein Bild aus einem Stream mit der Methode ImageSource.FromStream geladen wird. Dies ist darauf zurückzuführen, dass nicht genügend Daten vorhanden sind, um einen vernünftigen Cache-Schlüssel zu erstellen.
  • Unter iOS werden Seiten automatisch gescrollt, wenn die Bildschirmtastatur ein Texteingabefeld verdecken würde, sodass sich das Feld über der Bildschirmtastatur befindet. Die KeyboardAutoManagerScroll.Disconnect-Methode im Microsoft.Maui.Platform-Namespace kann aufgerufen werden, um dieses Standardverhalten zu deaktivieren. Die KeyboardAutoManagerScroll.Connect-Methode kann aufgerufen werden, um das Verhalten erneut zu aktivieren, nachdem sie deaktiviert wurde.
  • Die Art und Weise, wie die Farbe einer Registerkarte in einer Shell-App festgelegt wird, hat sich auf einigen Plattformen geändert. Weitere Informationen finden Sie unter Darstellung von Registerkarten.
  • Es ist nicht erforderlich, einen Wert für die $(ApplicationIdGuid) Build-Eigenschaft in der Projektdatei Ihrer App anzugeben. Dies liegt daran, dass .NET MAUI Windows-Apps keine GUID mehr als Apps-ID benötigen und stattdessen den Wert der $(ApplicationId) Build-Eigenschaft als Apps-ID verwenden. Daher wird jetzt auf allen Plattformen dieselbe App-ID im Reverse-Domain-Format verwendet, wie etwa com.mycompany.myapp.
  • .NET MAUI Mac Catalyst-Apps sind nicht mehr auf 50 Menüelemente in der Menüleiste beschränkt.
  • Die PlatformImage.FromStream-Methode im Microsoft.Maui.Graphics-Namenspace kann jetzt verwendet werden, um Bilder unter Windows zu laden, anstatt die W2DImageLoadingService-Klasse zu verwenden.
  • Unter Android respektieren die Animationen die Animationseinstellungen des Systems. Weitere Informationen finden Sie unter Grundlegende Animation.

Leistung

In .NET MAUI 8 gibt es zahlreiche Leistungsänderungen. Diese Veränderungen lassen sich in 5 Bereiche einteilen:

Weitere Informationen finden Sie unter .NET 8 Leistungsverbesserungen in .NET MAUI.

Upgrade von .NET 7 auf .NET 8

Um Ihre Projekte von .NET 7 auf .NET 8 zu aktualisieren, installieren Sie .NET 8 und den .NET MAUI Workload mit Visual Studio 17.8+ oder mit dem Standalone-Installer und dem Befehl dotnet workload install maui.

Öffnen Sie dann Ihre .csproj-Datei und ändern Sie die Target Framework Monikers (TFMs) von 7 auf 8. Wenn Sie eine TFM wie net7.0-ios13.6 verwenden, stellen Sie sicher, dass sie der Plattformversion entspricht, oder entfernen Sie sie ganz. Das folgende Beispiel zeigt die TFMs für ein .NET 7-Projekt:

<TargetFrameworks>net7.0-android;net7.0-ios;net7.0-maccatalyst;net7.0-tizen</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041.0</TargetFrameworks>

Das folgende Beispiel zeigt die TFMs für ein .NET 8-Projekt:

<TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst;net8.0-tizen</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net8.0-windows10.0.19041.0</TargetFrameworks>

Explizite Paketverweise sollten auch zu Ihrer .csproj-Datei für die folgenden .NET MAUI NuGet-Pakete hinzugefügt werden:

<ItemGroup>
    <PackageReference Include="Microsoft.Maui.Controls" Version="$(MauiVersion)" />
    <PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="$(MauiVersion)" />
</ItemGroup>

Die Variable $(MauiVersion) wird von der Version von .NET MAUI referenziert, die Sie installiert haben. Sie können dies außer Kraft setzen, indem Sie die $(MauiVersion)-Build-Eigenschaft zu Ihrer .csproj-Datei hinzufügen:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst</TargetFrameworks>
        <UseMaui>True</UseMaui>
        <MauiVersion>8.0.3</MauiVersion>
    </PropertyGroup>
</Project>

Dies kann nützlich sein, wenn man Ad-hoc-Builds aus dem nightly feed oder aus Pull-Requests heruntergeladene Builds verwendet.

Darüber hinaus kann die $(ApplicationIdGuid) Build-Eigenschaft aus der .csproj-Datei in .NET 8 entfernt werden. Weitere Informationen finden Sie unter Verhaltensänderungen.

Bevor Sie Ihre aktualisierte Anwendung zum ersten Mal erstellen, löschen Sie die Ordner bin und obj.

Hinweis

Die Projektvorlage für eine .NET MAUI-App in .NET 8 aktiviert den löschbaren Kontext für das Projekt mit der $(Nullable)-Build-Eigenschaft. Für weitere Informationen, siehe Nullwertfähig.

Siehe auch