Compartir a través de


Configurar la versión del lenguaje C#

Advertencia

No se recomienda establecer el elemento LangVersion como latest. La configuración latest significa que el compilador instalado usa su versión más reciente. Esto puede cambiar de equipo a equipo, lo que hace que las compilaciones no sean confiables. Además, habilita las características de lenguaje que pueden requerir tiempo de ejecución o características de biblioteca que no se incluyen en el SDK actual.

Si debe especificar su versión de C# explícitamente, puede hacerlo de varias maneras:

Sugerencia

Puede ver la versión del lenguaje en Visual Studio en la página de propiedades del proyecto. En la pestaña Compilar, el panel Opciones avanzadas muestra la versión seleccionada.

Para saber qué versión de lenguaje está usando actualmente, incluya #error version (con distinción de mayúsculas y minúsculas) en el código. Esto hace que el compilador genere un error de compilador, CS8304, con un mensaje que contiene la versión del compilador que se usa y la versión del lenguaje seleccionada actualmente. Vea #error (Referencia de C#) para obtener más información.

Por qué no puede seleccionar una versión de C# diferente en Visual Studio

En Visual Studio, la opción para cambiar la versión del idioma a través de la interfaz de usuario puede deshabilitarse porque la versión predeterminada está alineada con la plataforma de destino del proyecto (TFM). Esta configuración predeterminada garantiza la compatibilidad entre las características del lenguaje y la compatibilidad con tiempo de ejecución.

Por ejemplo, cambiar el TFM de destino (por ejemplo, de .NET 6 a .NET 9) actualizará la versión del lenguaje en consecuencia, de C# 10 a C# 13. Este enfoque evita problemas con la compatibilidad en tiempo de ejecución y minimiza los errores de compilación inesperados debido a características de lenguaje no admitidas.

Si necesita una versión de idioma específica que difiere de la seleccionada automáticamente, consulte los métodos siguientes para invalidar la configuración predeterminada directamente en el archivo del proyecto.

Edición del archivo del proyecto

Puede establecer la versión del lenguaje en el archivo del proyecto. Por ejemplo, si quiere acceder explícitamente a las características en versión preliminar, agregue un elemento similar al siguiente:

<PropertyGroup>
   <LangVersion>preview</LangVersion>
</PropertyGroup>

El valor preview usa la versión preliminar más reciente disponible del lenguaje C# que admite el compilador.

Configurar varios proyectos

Para configurar varios proyectos, puede crear un archivo Directory.Build.props, normalmente en el directorio de la solución, que contiene el elemento <LangVersion>. Agregue la siguiente configuración al archivo Directory.Build.props:

<Project>
 <PropertyGroup>
   <LangVersion>preview</LangVersion>
 </PropertyGroup>
</Project>

Las compilaciones de todos los subdirectorios del directorio que contenga ese archivo ahora usan la versión preliminar de C#. Para obtener más información, consulte Personalización de la compilación.

Referencia de la versión del lenguaje C#

Importante

No se admite el uso de una versión del lenguaje C# más reciente que la versión asociada al TFM de destino.

En la siguiente tabla se muestran las versiones actuales del lenguaje C#. Es posible que los compiladores más antiguos no comprendan todos los valores. Si instala el SDK de .NET más reciente, tendrá acceso a todo lo que aparece.

Value Significado
preview El compilador acepta toda la sintaxis de lenguaje válida de la última versión preliminar.
latest El compilador acepta la sintaxis de la última versión del compilador (incluida las versión secundaria).
latestMajor
o bien default
El compilador acepta la sintaxis de la versión principal más reciente del compilador.
13.0 El compilador solo acepta la sintaxis que se incluye en C# 13 o versiones anteriores.
12.0 El compilador solo acepta la sintaxis que se incluye en C# 12 o versiones anteriores.
11.0 El compilador solo acepta la sintaxis que se incluye en C# 11 o versiones anteriores.
10.0 El compilador solo acepta la sintaxis que se incluye en C# 10 o versiones anteriores.
9.0 El compilador solo acepta la sintaxis que se incluye en C# 9 o versiones anteriores.
8.0 El compilador acepta solo la sintaxis que se incluye en C# 8.0 o versiones anteriores.
7.3 El compilador acepta solo la sintaxis que se incluye en C# 7.3 o versiones anteriores.
7.2 El compilador acepta solo la sintaxis que se incluye en C# 7.2 o versiones anteriores.
7.1 El compilador acepta solo la sintaxis que se incluye en C# 7.1 o versiones anteriores.
7 El compilador acepta solo la sintaxis que se incluye en C# 7.0 o versiones anteriores.
6 El compilador acepta solo la sintaxis que se incluye en C# 6.0 o versiones anteriores.
5 El compilador acepta solo la sintaxis que se incluye en C# 5.0 o versiones anteriores.
4 El compilador acepta solo la sintaxis que se incluye en C# 4.0 o versiones anteriores.
3 El compilador acepta solo la sintaxis que se incluye en C# 3.0 o versiones anteriores.
ISO-2
o bien 2
El compilador acepta solo la sintaxis que se incluye en ISO/IEC 23270:2006 C# (2.0).
ISO-1
o bien 1
El compilador acepta solo la sintaxis que se incluye en ISO/IEC 23270:2003 C# (1.0/1.2).