Comparteix a través de


Configurar la versión del lenguaje C#

La información de este artículo se aplica a .NET 5 y versiones posteriores. Para proyectos de UWP, consulta esta información en el artículo sobre Elegir una versión de UWP.

En Visual Studio, la opción para cambiar la versión de idioma a través de la interfaz de usuario está deshabilitada 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. Para cambiar la versión del lenguaje en Visual Studio, cambie la plataforma de destino del proyecto.

Por ejemplo, al cambiar el TFM de destino (por ejemplo, de .NET 6 a .NET 9) se actualiza 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 de este artículo para invalidar la configuración predeterminada directamente en el archivo del proyecto.

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. El valor de latest puede cambiar de máquina a máquina, lo que hace que las compilaciones no sean confiables. Además, habilita las características de lenguaje que podrían requerir características de tiempo de ejecución o 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. Esta pragma hace que el compilador informe de un error del compilador, CS8304, con un mensaje que contiene la versión del compilador y la versión del lenguaje seleccionada actual. Para obtener más información sobre este pragma, vea #error (Referencia de C#).

Edición del archivo del proyecto

Puede establecer la versión del lenguaje en el archivo del proyecto. Por ejemplo, si desea explícitamente el acceso a características en versión preliminar, agregue un elemento como el ejemplo 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 de C#, 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 Personaliza tu compilación.

Nota:

Las versiones de C# y VB son diferentes. No use el archivo directory.Build.Props de para una carpeta donde los subdirectorios contienen proyectos para ambos lenguajes. Las versiones no coinciden.

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.

Valor 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.
14.0 El compilador acepta solo la sintaxis que se incluye en C# 14 o inferior.
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).