Projets C++/CLI dans Visual Studio

.NET 7 inclut des API mathématiques génériques qui utilisent static abstract des membres d’interface sur des types primitifs, tels que 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 produiront lorsque vous ciblez net7.0, même si vous n'utilisez pas directement les fonctions mathématiques génériques.

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

Comportement précédent

Auparavant, la compilation de projets .NET à l’aide de C++/CLI n’a pas entraîné d’erreurs liées aux membres sur les types primitifs System .

Nouveau comportement

La compilation d’un net7.0 projet à l’aide de 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

En dehors de la 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 implicitement implémentés static abstract peuvent être appelés, mais même avec Visual Studio 2022 version 17.2, C++/CLI ne prend pas en charge l’appel de membres d’interface explicitement implémentés static abstract .

Version introduite

.NET 7

Type de changement cassant

Cette modification peut affecter la compatibilité source .

Raison de la modification

.NET 7 inclut les nouvelles définitions d’API pour l’ensemble de fonctionnalités mathématiques génériques . Ces API ont été introduites dans .NET 6 comme fonctionnalité en préversion et vous ont demandé d’installer le System.Runtime.Experimental package pour accéder. À compter de .NET 7, ces API mathématiques génériques sont intégrées par défaut.

Pour continuer à utiliser C++/CLI avec .NET 7, effectuez une mise à niveau vers Visual Studio 2022 version 17.2 ou une version 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