Proyectos de C++/CLI en Visual Studio

.NET 7 incluye API de matemáticas genéricas que usan miembros de interfaz static abstract en tipos primitivos, como Int32. Las versiones anteriores del compilador de C++/CLI no eran compatibles con dichos miembros. Dado que esos miembros se usan en muchos tipos primitivos, se producirán errores de compilación cuando el destino sea net7.0, incluso si no usa las características matemáticas genéricas directamente.

Además de C++/CLI, también es posible que la introducción de miembros de interfaz static abstract en tipos primitivos System presente problemas en otras herramientas que no sean compatibles con versiones posteriores del uso de esta nueva construcción de lenguaje. Si es creador de herramientas, deberá actualizar las herramientas afectadas por este cambio para adaptarlas al uso de los miembros de interfaz static abstract. Si necesita ayuda, cree una incidencia en el repositorio dotnet/runtime para solicitar instrucciones.

Comportamiento anterior

Anteriormente, la compilación de proyectos de .NET con C++/CLI no provocaba errores relacionados con los miembros en tipos primitivos System.

Comportamiento nuevo

La compilación de un proyecto net7.0 con C++ o la CLI en una versión de Visual Studio, versión 17.2 o anterior, provocará muchos errores similares a este ejemplo:

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

Aparte de la actualización, no hay ninguna manera de solucionar este error del compilador. Se genera debido a miembros de interfaz static abstract en tipos primitivos System. Al actualizar a Visual Studio 2022, versión 17.2, ya no se producirán errores de compilación.

Se pueden invocar miembros de interfaz static abstract implementados implícitamente, pero incluso con Visual Studio 2022 versión 17.2, C++/CLI no admite la invocación de miembros de interfaz static abstract implementados explícitamente.

Versión introducida

.NET 7

Tipo de cambio importante

Este cambio puede afectar a la compatibilidad de orígenes.

Motivo del cambio

.NET 7 incluye las nuevas definiciones de API para el conjunto de características de matemáticas genéricas. Estas API se introdujeron en .NET 6 como una característica en versión preliminar y requerían la instalación del paquete System.Runtime.Experimental para obtener acceso. A partir de .NET 7, estas API de matemáticas genéricas se incluyen "de serie".

Para seguir usando C++/CLI con .NET 7, actualice a Visual Studio 2022, versión 17.2 o una posterior. Es posible que también tenga que establecer el conjunto de herramientas de plataforma en v143.

Si omitió .NET 7 al actualizar a .NET 8, actualice a Visual Studio 2022 versión 17.8 o posterior y al conjunto de herramientas de plataforma v143 o posterior.

API afectadas

N/D

Consulte también