MSBuild ne prend plus en charge l’appel de GetType()

MSBuild 17 ne prend plus en charge l’appel de la méthode d’instance GetType() dans les fonctions de propriété. Cette méthode a permis une exécution de code imprévisible pendant l’évaluation et peut provoquer des blocages de Visual Studio.

Version introduite

Kit de développement logiciel (SDK) .NET 6.0.100-rc1

Comportement précédent

Les appels GetType() dans les fonctions de propriété MSBuild s’exécutent et entraînent parfois un comportement imprévisible dans Visual Studio.

Nouveau comportement

À compter du Kit de développement logiciel (SDK) .NET 6, si vous appelez GetType() une fonction de propriété MSBuild, vous verrez l’erreur de compilation suivante lors de l’évaluation du projet :

La fonction « GetType » sur le type « System.String » n’est pas disponible pour l’exécution en tant que fonction de propriété MSBuild.

Modifier la catégorie

Ce changement affecte la compatibilité de la source.

Raison du changement

Cette fonctionnalité n’a pas été documentée ou couramment utilisée. Cela a provoqué des problèmes de performances et de fiabilité lors du chargement du projet, en particulier dans Visual Studio.

La seule utilisation courante connue de ce modèle était dans le système CBT, qui a été déconseillé.

Remplacez tous les appels à GetType() par une autre logique MSBuild.

API affectées

N/A