Partager via


Nouveautés de .NET MAUI pour .NET 9

L’objectif de .NET Multi-Platform App UI (.NET MAUI) dans .NET 9 est d’améliorer la qualité des produits. Cela inclut l’extension de la couverture des tests, le test de scénario de bout en bout et la correction des bogues. Pour plus d’informations sur les améliorations de la qualité des produits dans .NET MAUI 9 Preview, consultez les notes de publication suivantes :

Important

En raison de l’utilisation de dépendances externes, comme Xcode ou Android SDK Tools, la stratégie de prise en charge de .NET MAUI diffère de la stratégie de prise en charge de .NET et .NET Core. Pour plus d’informations, consultez Stratégie de prise en charge de .NET.

Dans .NET 9, .NET MAUI est fourni sous la forme d’une charge de travail .NET et de plusieurs packages NuGet. L’avantage de cette approche est qu’elle vous permet d’épingler facilement vos projets à des versions spécifiques, tout en vous permettant d’avoir facilement un aperçu des builds non publiées ou expérimentales. Quand vous créez un projet .NET MAUI, les packages NuGet nécessaires sont automatiquement ajoutés au projet.

Blazor Hybrid

La préversion 5 de .NET MAUI 9 ajoute un modèle de projet Application web et hybride .NET MAUI Blazor à Visual Studio qui crée une solution avec une application hybride .NET MAUI Blazor avec une application Web Blazor, qui partagent du code commun dans un projet de bibliothèque de classes Razor.

Le modèle peut également être utilisé à partir de dotnew new :

dotnet new maui-blazor-web -n AllTheTargets

Améliorations apportées aux contrôles

.NET MAUI dans .NET 9 inclut également des améliorations de contrôle.

Prise en charge des entrées de clavier logiciel

La préversion 4 de .NET MAUI 9 ajoute une nouvelle prise en charge des entrées de clavier logiciel pour Password, Date et Time. Celles-ci peuvent être activées sur des contrôles Editor et Entry :

<Entry Keyboard="Date" />

Android

La préversion de .NET pour Android 9, qui ajoute une prise en charge de l’API 35, inclut des travaux visant à réduire les temps de génération et à améliorer le découpage des applications pour réduire leur taille et améliorer leurs performances. Pour plus d’informations sur .NET pour Android 9 (préversion), consultez les notes de publication suivantes :

Packs de ressources

.NET pour Android 9 (préversion) 3 introduit la possibilité de placer des ressources dans un package distinct appelé pack de ressources. Vous pouvez ainsi charger des jeux et des applications qui dépassent normalement la taille de package de base autorisée par Google Play. En plaçant ces ressources dans un package distinct, vous pouvez charger un package dont la taille peut atteindre 2 Go (contre 200 Mo pour un package de base).

Important

Les packs de ressources ne peuvent contenir que des ressources. Pour .NET pour Android, il s’agit des éléments associés à l’action de génération AndroidAsset.

Les applications .NET MAUI définissent des ressources via l’action de génération MauiAsset. Vous pouvez spécifier un pack de ressources à l’aide de l’attribut AssetPack :

<MauiAsset
    Include="Resources\Raw\**"
    LogicalName="%(RecursiveDir)%(Filename)%(Extension)"
    AssetPack="myassetpack" />

Remarque

Les métadonnées supplémentaires sont ignorées par d’autres plateformes.

Si vous souhaitez placer des éléments spécifiques dans un pack de ressources, vous pouvez utiliser l’attribut Update pour définir les métadonnées AssetPack :

<MauiAsset Update="Resources\Raw\MyLargeAsset.txt" AssetPack="myassetpack" />

Les packs de ressources peuvent avoir différentes options de livraison qui contrôlent quand vos ressources sont installées sur l’appareil :

  • Les packs au moment de l’installation sont installés en même temps que l’application. La taille maximale de ce type de pack est de 1 Go Mo, mais vous ne pouvez en avoir qu’un seul. Ce type de livraison est spécifié avec les métadonnées InstallTime.
  • Les packs de suivi rapide sont installés peu de temps après la fin de l’installation de l’application. L’application pouvant démarrer pendant l’installation de ce type de pack, vous devez vérifier que son installation est terminée avant d’essayer d’utiliser les ressources. La taille maximale de ce type de pack de ressources est de 512 Mo. Ce type de livraison est spécifié avec les métadonnées FastFollow.
  • Les packs à la demande ne sont jamais téléchargés sur l’appareil, sauf si l’application le demande spécifiquement. La taille totale de tous vos packs de ressources ne peut pas dépasser 2 Go, et vous pouvez avoir jusqu’à 50 packs de ressources distincts. Ce type de livraison est spécifié avec les métadonnées OnDemand.

Dans les applications .NET MAUI, vous pouvez spécifier le type de livraison avec l’attribut DeliveryType sur MauiAsset :

<MauiAsset Update="Resources\Raw\myvideo.mp4" AssetPack="myassetpack" DeliveryType="FastFollow" />

Pour plus d’informations sur les packs de ressources Android, consultez Packs de ressources Android.

Prise en charge d’Android 15 bêta

La préversion 4 de .NET pour Android ajoute des liaisons .NET pour la première version bêta d’Android 15 (API 35) appelée « Vanilla Ice Cream ». Pour créer pour ces API, mettez à jour l’infrastructure cible de votre projet :

<TargetFramework>net9.0-android35</TargetFramework>

La préversion 5 de .NET pour Android étend ces liaisons à Android 15 bêta 2, avec des améliorations pour les performances de démarrage et la taille de l’application.

Méthodes marshalées LLVM

Les méthodes marshalées LLVM (Low-Level Virtual Machine) sont désormais activées par défaut dans .NET pour la préversion 5 d’Android dans les applications non Blazor. Cela a entraîné une amélioration d’environ 10 % des performances dans une application de test.

Les méthodes marshalées LLVM peuvent être désactivées dans votre fichier projet (.csproj) :

<PropertyGroup Condition="'$(TargetFramework)' == 'net9.0-android'">
    <AndroidEnableLLVM>false</AndroidEnableLLVM>
    <AndroidEnableLLVMOptimizations>false</AndroidEnableLLVMOptimizations>
</PropertyGroup>

Améliorations du découpage

La préversion 5 de .NET pour Android inclut des correctifs pour l’utilisation du découpage complet pour réduire la taille de l’application. Le découpage complet est généralement activé uniquement pour les builds de mise en production de votre application et peut être configuré dans votre fichier projet (.csproj) :

<PropertyGroup Condition="'$(Configuration)' == 'Release' And '$(TargetFramework)' == 'net9.0-android'">
    <TrimMode>Full</TrimMode>
</PropertyGroup>

iOS

.NET 9 Preview sur iOS, tvOS, Mac Catalyst et macOS utilise Xcode 15.2 pour les versions de plateforme suivantes :

  • iOS : 17.2
  • tvOS : 17.2
  • Mac Catalyst : 17.2
  • macOS : 14,2

Pour plus d’informations sur .NET 9 Preview sur iOS, tvOS, Mac Catalyst et macOS, consultez les notes de publication suivantes :

Liaisons

.NET pour iOS 9 (Préversion) 3 introduit la possibilité d’avoir plusieurs versions cibles de .NET pour les liaisons iOS. Par exemple, il peut être nécessaire de générer un projet de bibliothèque pour deux versions d’iOS distinctes :

<TargetFrameworks>net9.0-ios17.0;net9.0-ios17.2</TargetFrameworks>

Cela produit deux bibliothèques : l’une utilisant des liaisons iOS 17.0 et l’autre des liaisons iOS 17.2.

Important

Un projet d’application doit toujours cibler le dernier Kit de développement logiciel (SDK) iOS.

AOT natif pour iOS &Mac Catalyst

Dans la préversion 4 de .NET pour iOS 9, la compilation anticipée (AOT) native pour iOS et Mac Catalyst tire parti d’un découpage complet pour réduire la taille du package et les performances de démarrage de votre application. Il s’agit d’une fonctionnalité de publication que vous pouvez utiliser lorsque vous êtes prêt à envoyer votre application.

Important

Votre application et ses dépendances doivent être entièrement découpables afin d’utiliser cette fonctionnalité.

Voir aussi