Training
Lernpfad
Erstellen Sie mobile und Desktop-Anwendungen mit .NET MAUI - Training
In diesem Lernpfad nutzen Sie C# und Visual Studio mit .NET MAUI, um eine App zu erstellen, die auf iOS, Android und Windows läuft.
Dieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
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.
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.
Grid.Add
-Überladung, die 5 Argumente akzeptiert, wurde wieder zu .NET MAUI hinzugefügt. Diese Methode ist jedoch veraltet und dient nur noch zur Unterstützung der Migration von Xamarin.Forms.PlatformArgs
-Eigenschaft. Diese Eigenschaft ermöglicht den Zugriff auf die plattformspezifischen Argumente für ein Drag- oder Drop-Ereignis. Weitere Informationen finden Sie unter Erkennen einer Drag-and-Drop-Geste.x:ClassModifier
-Attribut kann bei XAML-Klassen angegeben werden, um die Zugriffsebene für eine generierte Klasse in einer Assembly zu steuern. Für weitere Informationen, siehe Klassenmodifikatoren.AppThemeBinding
mit der DynamicResource
-Markuperweiterung verwendet werden. Weitere Informationen finden Sie unter Themenressourcen definieren und verbrauchen.ContentProperty
der SolidColorBrush-Klasse und muss daher nicht explizit von XAML aus gesetzt werden.App
-Klasse entkoppelt werden. Weitere Informationen finden Sie unter Entkopplung der Fensterverwaltung von der App-Klasse.MauiUIApplicationDelegate
eine PerformFetch
-Methode, die über das iOSLifecycle.PerformFetch
-Delegat außer Kraft gesetzt oder verwendet werden kann. Weitere Informationen finden Sie unter iOS- und Mac Catalyst-Plattformlebenszyklusereignissen.Die folgenden Typen oder Mitglieder sind veraltet:
AutomationProperties.Name
, AutomationProperties.HelpText
und AutomationProperties.LabeledBy
sind veraltet.Die folgenden Typen oder Members wurden entfernt:
Application.Properties
und die Methode Application.SavePropertiesAsync
wurden entfernt. Um Ihre App-Eigenschaftsdaten zu .NET MAUI zu migrieren, siehe Migrieren von Daten aus dem Xamarin.Forms App-Eigenschaftswörterbuch zu .NET MAUI-Einstellungen.PhoneDialer.Current
-Eigenschaft wurde entfernt. Verwenden Sie stattdessen PhoneDialer.Default
.OpenGLView
wurde entfernt.Das folgende Verhalten hat sich gegenüber der vorherigen Version geändert:
xmlns
-Namespace-Deklaration: xmlns:maps="http://schemas.microsoft.com/dotnet/2021/maui/maps"
.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.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.$(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.PlatformImage.FromStream
-Methode im Microsoft.Maui.Graphics
-Namenspace kann jetzt verwendet werden, um Bilder unter Windows zu laden, anstatt die W2DImageLoadingService
-Klasse zu verwenden.In .NET MAUI 8 gibt es zahlreiche Leistungsänderungen. Diese Veränderungen lassen sich in 5 Bereiche einteilen:
IEquatable
in .NET MAUI{AppThemeBinding}
CA1307
und CA1309
für LeistungCA1311
für LeistungViewAttachedToWindow
-Ereignis auf Android entfernenSystem.Reflection
für {Binding}
entfernenStringComparer.Ordinal
für Dictionary
und HashSet
verwendenMauiDrawable
auf AndroidLabel
auf AndroidEntry.MaxLength
auf AndroidCollectionView
unter WindowsUnmanagedCallersOnlyAttribute
auf Apple-PlattformenXamarin.AndroidX.Legacy.Support.V4
System.Linq.Expressions
Implementierung auf iOS-ähnlichen PlattformenDynamicCodeSupport=false
für iOS und CatalystWeitere Informationen finden Sie unter .NET 8 Leistungsverbesserungen in .NET MAUI.
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.
Feedback zu .NET MAUI
.NET MAUI ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
Training
Lernpfad
Erstellen Sie mobile und Desktop-Anwendungen mit .NET MAUI - Training
In diesem Lernpfad nutzen Sie C# und Visual Studio mit .NET MAUI, um eine App zu erstellen, die auf iOS, Android und Windows läuft.