Novità di .NET MAUI per .NET 8

L'obiettivo di .NET MAUI in .NET 8 è la qualità. In .NET 8 le richieste pull 1618 sono state unite che hanno chiuso 689 problemi. Sono incluse le modifiche apportate dal team MAUI di .NET e dalla community MAUI di .NET. Queste modifiche dovrebbero comportare un aumento significativo della qualità in .NET 8.

Importante

A causa dell'uso di dipendenze esterne sottostanti, ad esempio Xcode o Android SDK Tools, i criteri di supporto dell'interfaccia utente dell'app multipiattaforma .NET (.NET MAUI) differiscono dai criteri di supporto di .NET e .NET Core. Per altre informazioni, vedere Criteri di supporto di .NET MAUI.

In .NET 8, .NET MAUI viene fornito come carico di lavoro .NET e più pacchetti NuGet. Il vantaggio di questo approccio è che consente di aggiungere facilmente i progetti a versioni specifiche, consentendo allo stesso tempo di visualizzare facilmente l'anteprima di build non definitive o sperimentali. Quando si crea un nuovo progetto MAUI .NET, i pacchetti NuGet necessari vengono aggiunti automaticamente al progetto.

Questo articolo elenca le nuove funzionalità di .NET MAUI per .NET 8 e fornisce collegamenti a informazioni più dettagliate su ognuna.

Per informazioni sulle novità di .NET 8, vedere Novità di .NET 8.

Nuove funzionalità

Anche se l'obiettivo di questa versione di .NET MAUI è la qualità, sono disponibili anche alcune nuove funzionalità che consentono nuovi scenari nelle app.

Controlli

Desktop

Strumenti di riconoscimento dei movimenti

Integrazione della piattaforma

XAML

Risoluzione dei problemi

Varie

  • La gestione delle finestre può essere disaccoppiata dalla App classe . Per altre informazioni, vedere Separare la gestione delle finestre dalla classe App.
  • Diversi tipi di carattere di sistema possono essere usati facilmente nelle app Android. Per altre informazioni, vedere Utilizzare i tipi di carattere.
  • In iOS ottiene MauiUIApplicationDelegate un PerformFetch metodo che può essere sottoposto a override o utilizzato tramite il iOSLifecycle.PerformFetch delegato. Per altre informazioni, vedere Eventi del ciclo di vita della piattaforma iOS.

Deprecazione e rimozione dei tipi

I tipi o i membri seguenti sono stati deprecati:

Sono stati rimossi i tipi o i membri seguenti:

Modifiche del comportamento

Il comportamento seguente è cambiato rispetto alla versione precedente:

  • L'uso del Map controllo da XAML richiede ora la dichiarazione dello spazio dei nomi seguente xmlns : xmlns:maps="http://schemas.microsoft.com/dotnet/2021/maui/maps".
  • La memorizzazione nella cache delle immagini è disabilitata in Android durante il caricamento di un'immagine da un flusso con il ImageSource.FromStream metodo . Ciò è dovuto alla mancanza di dati da cui creare una chiave di cache ragionevole.
  • In iOS le pagine scorrono automaticamente quando la tastiera di input soft copriva un campo di immissione di testo, in modo che il campo si trova sopra la tastiera di input soft. Il KeyboardAutoManagerScroll.Disconnect metodo, nello spazio dei Microsoft.Maui.Platform nomi , può essere chiamato per disabilitare questo comportamento predefinito. Il KeyboardAutoManagerScroll.Connect metodo può essere chiamato per riabilitare il comportamento dopo che è stato disabilitato.
  • Il modo in cui il colore di una scheda è impostato in un'app Shell è cambiato in alcune piattaforme. Per altre informazioni, vedere Aspetto delle schede.
  • Non è necessario specificare un valore per la $(ApplicationIdGuid) proprietà di compilazione nel file di progetto dell'app. Ciò avviene perché le app di Windows .NET MAUI non richiedono più un GUID come ID app e usano invece il valore della proprietà di $(ApplicationId) compilazione come ID app. Pertanto, lo stesso ID app in formato di dominio inverso viene ora usato in tutte le piattaforme, ad esempio com.mycompany.myapp.
  • Le app .NET MAUI Mac Catalyst non sono più limitate a 50 voci di menu sulla barra dei menu.
  • Il PlatformImage.FromStream metodo, nello spazio dei Microsoft.Maui.Graphics nomi, può ora essere usato per caricare immagini in Windows anziché dover usare la W2DImageLoadingService classe .
  • In Android le animazioni rispettano le impostazioni di animazione di sistema. Per altre informazioni, vedere Animazione di base.

Prestazioni

Esistono numerose modifiche alle prestazioni in .NET MAUI 8. Queste modifiche possono essere classificate in cinque aree:

Per altre informazioni, vedere Miglioramenti delle prestazioni di .NET 8 in .NET MAUI.

Eseguire l'aggiornamento da .NET 7 a .NET 8

Per aggiornare i progetti da .NET 7 a .NET 8, installare .NET 8 e il carico di lavoro MAUI .NET con Visual Studio 17.8+o con il programma di installazione autonomo e il dotnet workload install maui comando.

Aprire quindi il file con estensione csproj e modificare i moniker del framework di destinazione (TFM) da 7 a 8. Se si usa un TFM, net7.0-ios13.6 ad esempio assicurarsi di corrispondere alla versione della piattaforma o rimuoverla completamente. L'esempio seguente illustra i TFM per un progetto .NET 7:

<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>

L'esempio seguente illustra i TFM per un progetto .NET 8:

<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>

I riferimenti espliciti ai pacchetti devono essere aggiunti anche al file con estensione csproj per i pacchetti NuGet .NET MAUI seguenti:

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

Viene $(MauiVersion) fatto riferimento alla variabile dalla versione di .NET MAUI installata. È possibile eseguire l'override di questa operazione aggiungendo la $(MauiVersion) proprietà di compilazione al file con estensione csproj :

<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>

Ciò può essere utile quando si usano build ad hoc dal feed notturno o le compilazioni scaricate dalle richieste pull.

Inoltre, la $(ApplicationIdGuid) proprietà di compilazione può essere rimossa dal file con estensione csproj in .NET 8. Per altre informazioni, vedere Modifiche al comportamento.

Prima di compilare l'app aggiornata per la prima volta, eliminare le bin cartelle e obj .

Nota

Il modello di progetto per un'app MAUI .NET in .NET 8 abilita il contesto nullable per il progetto con la proprietà di $(Nullable) compilazione. Per altre informazioni, vedere Nullable.

Vedi anche