Événements de build dérivés personnalisés de MSBuild déconseillés
Les événements de build dérivés personnalisés d’une sous-classe de BuildEventArgs par toute extensibilité de build (principalement des tâches personnalisées) ont été dépréciés.
Comportement précédent
Auparavant, vous pouviez dériver à partir de n’importe quelle sous-classe de BuildEventArgs et utiliser ces types librement dans les tâches personnalisées et d’autres points d’extensibilité de build.
Nouveau comportement
À compter de .NET 8, une erreur de build est émise si votre code utilise un type dérivé de BuildEventArgs et que vous générez à l’aide de la version .NET 8 de MSBuild, autrement dit, à partir de la ligne de commande :
Utilisation de BinaryFormatter non sécurisé lors de la sérialisation du type d’événement personnalisé « MyCustomBuildEventArgs ». Elle sera bientôt déconseillée. Veuillez utiliser plutôt Extended*EventArgs. Informations supplémentaires : https://aka.ms/msbuild/eventargs
Si vous créez à partir de Visual Studio, il n’existe aucune modification du comportement, sauf si vous définissez la variable d’environnement MSBUILDCUSTOMBUILDEVENTWARNING
sur 1 (disponible dans Visual Studio version 17.8 et ultérieure).
Version introduite
.NET 8 RC 1
Type de changement
Ce changement est un changement de comportement.
Raison du changement
La sérialisation BinaryFormatter est obsolète dans .NET 8 et versions ultérieures. Toute utilisation de BinaryFormatter lève une exception au moment de l’exécution. Étant donné que les événements de build dérivés MSBuild utilisent BinaryFormatter, votre build se bloque si vous utilisez ces événements dans celle-ci. La nouvelle erreur de build fournit une défaillance plus appropriée.
Action recommandée
Utilisez l’un des nouveaux événements intégrés suivants pour l’extensibilité au lieu de votre événement de build dérivé personnalisé :
- ExtendedCustomBuildEventArgs
- ExtendedBuildErrorEventArgs
- ExtendedBuildMessageEventArgs
- ExtendedBuildWarningEventArgs
Vous pouvez également désactiver temporairement la vérification en définissant explicitement la variable d’environnement MSBUILDCUSTOMBUILDEVENTWARNING
sur une valeur autre que 1
.