Partage via


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

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

Vous pouvez également désactiver temporairement la vérification en définissant explicitement la variable d’environnement MSBUILDCUSTOMBUILDEVENTWARNING sur une valeur autre que 1.

API affectées