Mises à jour et notes pour les développeurs .NET MAUI

Voici ce que vous avez peut-être manqué dans .NET 10 pour les développeurs .NET MAUI ciblant iOS.
Les nouvelles fonctionnalités de .NET 10 pour .NET MAUI ne t’arrête pas ! 😎 Dans cet article, nous aborderons les mises à jour spécifiques à iOS introduites dans .NET 10, des améliorations qui ont un impact direct sur les performances, la fiabilité et l’expérience globale de développement des applications mobiles.
Nous détaillerons ce qui a changé, ce qui a été optimisé et ce que vous, en tant que développeur .NET MAUI ciblant iOS, devez garder à l’esprit pour tirer le meilleur parti de cette version.
🔧 Plateformes prises en charge
L’une des premières questions que je recommande de poser lors de l’adoption d’une nouvelle version, en particulier dans ce cas pour .NET iOS (bien que cela s’applique à tout), est de savoir quelles versions sont officiellement prises en charge.
Pourquoi? Car cela vous indique à quelles versions de périphérique et/ou d’émulateur votre environnement doit correspondre pour profiter pleinement des nouvelles fonctionnalités !
Pour iOS, tvOS, Mac Catalyst et macOSles versions suivantes sont prises en charge :
- iOS 18.2
- tvOS 18.2
- Mac Catalyseur 18.2
- MacOS 15.2
Aperçu 7 : Xcode 26 bêta 4
Pour l’instant, l’aperçu 7 n’inclut toujours pas les versions complètes pour .NET 10, mais il introduit une compatibilité initiale avec Xcode 26 bêta 4concentré sur Projets .NET 9.
En mettant cela en pratique, pour utiliser les nouvelles API/liaisons d’iOS 26 (Xcode 26), vous devez ajouter deux éléments importants dans votre <PropertyGroup> étiqueter:
➖ Ajoutez la balise TargetFramework :
Il précise la version de l’environnement de développement, par exemple :
<TargetFramework>net9.0-ios26</TargetFramework>
➖ Ensuite, vous devez ajouter un NoWarn :
<NoWarn>$(NoWarn);XCODE_26_0_PREVIEW</NoWarn>
⚠️ Ceci NoWarn est nécessaire car Xcode 26 est toujours en version bêta et empêche le projet d’afficher des avertissements de compatibilité.
Un exemple complet ressemblerait à ceci :
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0-ios26</TargetFramework>
<NoWarn>$(NoWarn);XCODE_26_0_PREVIEW</NoWarn>
<!-- rest of your configuration -->
</PropertyGroup>
</Project>
Problèmes de rendu du shell .NET MAUI
⚠️ Auparavant, il y avait un problème avec Coquille .NET MAUI rendu sur iOS 26. Vous pouvez désormais être sûr que ce problème a été résolu dans .NET MAUI 9 Service Release 11 et .NET MAUI 10 RC1.
Pour en savoir plus sur .NET 10 sur iOS, tvOS, Mac Catalyst et macOS, la documentation officielle recommande de consulter le problèmes connus dans .NET 10.
Vous pouvez également explorer les notes de publication des versions préliminaires de .NET 10.0.1xx :
Tondeuse
Le trimmer est un outil .NET qui effectue une sorte d’« opération de nettoyage » sur le code de votre application. Il analyse votre projet, détecte le code inutilisé et le supprime. En d’autres termes, cela aide votre application à devenir plus légère, plus efficace et beaucoup plus rapide à charger.
Dans .NET 10, deux améliorations importantes liées à son comportement ont été introduites.
1. Tondeuse activée dans plus de configurations
Avec .NET 10, ce « nettoyeur intelligent » – le Trim – peut désormais être activé par défaut dans davantage de scénarios, tels que :
- Simulateur iOS/arm64 (toutes les configurations)
- tvOS Simulator/arm64 (toutes les configurations)
- Mac Catalyst/arm64 (toutes les configurations)
Quand tu vois toutes les configurationscela signifie qu’il s’applique à différentes configurations de build telles que Déboguer, Libérer et d’autres.
2. Avertissements de tondeuse activés par défaut
Auparavant, les avertissements du trimmer étaient désactivés par défaut. En effet, la bibliothèque de classes de base produisait ses propres avertissements de découpage, ce qui empêchait le développeur de corriger tous les avertissements détectés.
La bonne nouvelle est que dans .NET 9, tous les avertissements de découpage liés à iOS ont été résolus et, grâce à cela, les avertissements de découpage sont désormais activés par défaut.
Cependant, si pour une raison quelconque vous souhaitez les désactiver, vous pouvez le faire très facilement. Ajoutez simplement le SuppressTrimAnalysisWarnings propriété à votre fichier .csproj comme suit :
<PropertyGroup>
<SuppressTrimAnalysisWarnings>true</SuppressTrimAnalysisWarnings>
</PropertyGroup>
Regrouper des ressources originales dans les bibliothèques
Les projets de bibliothèque peuvent contenir différents types de ressources, tels que :
- Story-boards
- XIB
- Listes de propriétés (plist)
- Images
- Modèles CoreML
- Et d’autres
Ces ressources nécessitent des tâches de traitement telles que la compilation de storyboards ou de XIB, l’optimisation des fichiers plist, etc. Ce traitement s’accompagne de quelques considérations importantes, telles que :
- Fonctionne sur Mac, car la compilation de storyboards/XIB n’est possible que sur macOS.
- Utilisation de la chaîne d’outils Apple (xcodebuild, ibtool, actool, etc.).
Toutes ces exigences peuvent compliquer la création de bibliothèques car :
- Vous n’avez pas toujours accès à un Mac.
- Vous ne pouvez pas prendre de décisions dans l’application finale sur la base des ressources d’origine, car elles ont déjà été « traitées ».
- Vous obtenez uniquement la version traitée.
- Et, par conséquent, cela limite la flexibilité du projet consommant la bibliothèque.
Mais maintenant nous avons une amélioration 😎
Dans .NET 9un support facultatif (opt-in) a été introduit, permettant d’inclure les ressources originales dans la bibliothèque sans les traiter.
Dans .NET 10les choses s’améliorent encore ! 😍 Cette prise en charge est désormais le comportement par défaut (opt-out).
Cela rend nos applications plus flexibles, supprime la forte dépendance à la disponibilité d’un Mac et aboutit à des versions CI/CD beaucoup plus cohérentes.
Comment activer ou désactiver cette option ?
Si, pour une raison quelconque, vous souhaitez rétablir ce comportement par défaut (c’est-à-dire que vous ne souhaitez pas inclure les ressources d’origine et préférez que la bibliothèque contienne celles traitées), vous pouvez le faire en ajoutant la balise suivante dans votre fichier de projet :
<PropertyGroup>
<BundleOriginalResources>false</BundleOriginalResources>
</PropertyGroup>
Créer des projets de liaison sous Windows
Avant, les projets de liaison dépendaient des outils de l’écosystème Apple (ce qui signifiait qu’il fallait un Mac pour les compiler).
😎 Avec .NET 10, cela a changé !
Des projets contraignants peuvent désormais être construits entièrement sous Windowssans nécessiter un Mac ni aucune connexion à distance. Cela se traduit par builds beaucoup plus rapides sous Windows. Waouh ! 🎉
C’est un TRÈS grande amélioration pour tous ceux qui travaillent sur des appareils Windows !
🔐 NSUrlSessionHandler ne définit plus automatiquement le protocole TLS minimum
Au cas où vous ne le sauriez pas, TLS (sécurité de la couche de transport) est un protocole de sécurité qui protège la communication entre deux points de terminaison, par exemple votre application et le serveur.
Auparavant, nous avions un comportement comme celui-ci :
NSUrlSessionHandlers’est appuyé sur la valeur deServicePointManager.SecurityProtocolpour déterminer le protocole TLS minimum à utiliser.- Mais cette approche est désormais obsolète, car
ServicePointManagern’est plus utilisé.
Ainsi, à partir de .NET 10, si vous souhaitez définir le protocole TLS minimum, vous devez le faire manuellement avant de créer le NSUrlSessionHandlercomme indiqué ci-dessous :
var sessionConfiguration = NSUrlSessionConfiguration.DefaultSessionConfiguration;
sessionConfiguration.TlsMinimumSupportedProtocolVersion = TlsProtocolVersion.Tls13;
var handler = new NSUrlSessionHandler(sessionConfiguration);
🚫 La propriété NSUrlSessionHandler.BypassBackgroundSessionCheck est désormais ignorée
Cette propriété existait comme solution de contournement à un ancien problème dans le runtime Mono. Puisqu’elle n’est plus nécessaire, la propriété est désormais ignorée.
Conclusion
Et c’est tout ! 🎉 Dans cet article, vous avez exploré les principales améliorations que .NET 10 apporte au développement iOS, tvOS, macOS et Mac Catalyst. De la prise en charge étendue des trimmers à la gestion améliorée des ressources en passant par des constructions de liaisons basées sur Windows plus rapides et des paramètres réseau par défaut mis à jour, ces changements fonctionnent ensemble pour créer une expérience de développement plus efficace, cohérente et moderne.
Vous comprenez désormais mieux l’impact de ces mises à jour sur votre flux de travail, en vous aidant à créer des applications plus légères, à réduire les frictions spécifiques à la plate-forme et à tirer pleinement parti de ce qu’offre .NET 10 pour les plates-formes Apple.
Si vous avez des questions ou souhaitez que j’aborde des sujets plus connexes, n’hésitez pas à laisser un commentaire, je serai ravi de vous aider ! 💚
Rendez-vous dans le prochain article ! 🙋♀️✨
Références
L’explication était basée sur la documentation officielle :
Source link
