Projets C++/CLI dans Visual Studio

.NET 7 inclut des API mathématiques génériques qui utilisent des membres d’interface static abstract sur des types primitifs comme Int32. Les versions antérieures du compilateur C++/CLI étaient incompatibles avec ces membres. Étant donné que ces membres sont utilisés sur de nombreux types primitifs, des erreurs de compilation se produisent quand net7.0 est ciblé, même si vous n’utilisez pas directement les fonctionnalités mathématiques génériques.

Au-delà de C++/CLI, il est également possible que l’introduction de membres d’interface static abstract sur des types primitifs System pose des problèmes dans d’autres outils qui ne sont pas compatibles avec l’utilisation de cette nouvelle construction de langage. Si vous créez des outils, vous devez mettre à jour tous les outils affectés par ce changement pour prendre en charge l’utilisation des membres d’interface static abstract. Si vous avez besoin d’aide, signalez un problème dans le dépôt dotnet/runtime pour demander des conseils.

Comportement précédent

Avant, la compilation des projets .NET avec C++/CLI n’entraînait pas d’erreurs liées aux membres sur les types primitifs System.

Nouveau comportement

La compilation d’un projet net7.0 avec C++/CLI dans une version de Visual Studio antérieure à la version 17.2 entraîne de nombreuses erreurs similaires à cet exemple :

error C2253: 'System.Int32.Parse': pure specifier or abstract override specifier only allowed on virtual function

À part une mise à niveau, il n’existe aucun moyen de contourner cette erreur du compilateur. Elle est générée en raison des membres d’interface static abstract sur les types primitifs System. Lorsque vous effectuez une mise à niveau vers Visual Studio 2022 version 17.2, les erreurs de compilation ne se produisent plus.

Les membres d’interface static abstract implémentés implicitement peuvent être appelés, mais même avec Visual Studio 2022 version 17.2, C++/CLI ne prend pas en charge l’appel des membres d’interface static abstract implémentés explicitement.

Version introduite

.NET 7

Type de changement cassant

Ce changement peut affecter la compatibilité source.

Raison du changement

.NET 7 inclut les nouvelles définitions d’API pour l’ensemble des fonctionnalités mathématiques génériques. Ces API ont été introduites dans .NET 6 en tant que fonctionnalité d'évaluation et vous ont demandé d’installer le package System.Runtime.Experimental pour y accéder. À partir de .NET 7, ces API mathématiques génériques sont incluses et prêtes à l’emploi.

Pour continuer à utiliser C++/CLI avec .NET 7, effectuez une mise à niveau vers Visual Studio 2022 version 17.2 ou ultérieure. Vous devrez peut-être également définir l’ensemble d’outils de plateforme sur v143.

Si vous avez ignoré .NET 7 lorsque vous avez effectué la mise à niveau vers .NET 8, effectuez une mise à niveau vers Visual Studio 2022 version 17.8 ou ultérieure et l’ensemble d’outils de plateforme v143 ou version ultérieure.

API affectées

N/A

Voir aussi