Tous les assemblys découpés par défaut

Le découpage découpe désormais tous les assemblys dans les applications console, par défaut. Ce changement affecte uniquement les applications publiées avec PublishTrimmed=true, et arrête uniquement les applications qui avaient déjà des avertissements de découpage. Il affecte aussi uniquement les applications .NET simples qui n’utilisent pas le SDK Windows Desktop, Android, iOS, WASM ou ASP.NET.

Comportement précédent

Auparavant, seuls les assemblys qui étaient définis avec <IsTrimmable>true</IsTrimmable> dans le fichier projet de bibliothèque étaient découpés.

Nouveau comportement

À compter de .NET 7, le découpage découpe tous les assemblys de l’application par défaut. Les applications qui ont peut-être déjà fonctionné avec PublishTrimmed peuvent ne pas fonctionner dans .NET 7. Toutefois, seules les applications avec des avertissements de découpage sont affectées. Si votre application n’a pas d’avertissements de découpage, le changement de comportement ne doit pas entraîner d’effets négatifs et diminue probablement la taille de l’application.

Si votre application avait des avertissements de découpage, vous pouvez voir des changements de comportement ou des exceptions. Par exemple, une application qui utilise Newtonsoft.Json ou System.Text.Json sans génération de source pour sérialiser et désérialiser un type dans le projet utilisateur pouvait fonctionner avant le changement, car les types dans le projet utilisateur étaient entièrement conservés. Mais il pouvait y avoir un ou plusieurs avertissements de découpage (codes d’avertissement ILxxxx). À présent, les types du projet utilisateur sont découpés, et la sérialisation risque d’échouer ou de produire des résultats inattendus.

Version introduite

.NET 7

Type de changement cassant

Ce changement peut affecter la compatibilité source.

Raison du changement

Ce changement permet de réduire la taille de l’application sans que les utilisateurs n’aient à le définir explicitement, et s’aligne sur les attentes des utilisateurs consistant à découper l’ensemble de l’application, sauf indication contraire.

La meilleure solution consiste à résoudre tous les avertissements de découpage dans votre application. Pour plus d’informations sur la résolution des avertissements dans vos propres bibliothèques, consultez Introduction aux avertissements de découpage. Pour d’autres bibliothèques, contactez l’auteur pour lui demander de résoudre les avertissements, ou choisissez une autre bibliothèque qui prend déjà en charge le découpage. Par exemple, vous pouvez basculer vers System.Text.Json avec la génération source, qui prend en charge le découpage, au lieu de Newtonsoft.Json.

Pour rétablir le comportement précédent, définissez la propriété TrimMode sur partial, qui correspond au comportement avant .NET 7.

<TrimMode>partial</TrimMode>

La valeur par défaut de .NET 7+ est full :

<TrimMode>full</TrimMode>

API affectées

Aucun.

Voir aussi