Compartir vía


Control de versiones del lenguaje C#

El compilador de C# más actualizado determina una versión de lenguaje predeterminada basada en los marcos o las plataformas de destino del proyecto. Visual Studio no proporciona una interfaz de usuario para cambiar el valor, pero se puede cambiar si se modifica el archivo csproj. La opción predeterminada garantiza que se use la versión del lenguaje más reciente compatible con el marco de trabajo de destino. Se beneficia del acceso a las características de lenguaje más recientes compatibles con el destino del proyecto. Esta opción predeterminada también garantiza que no se use un lenguaje que requiera tipos o el comportamiento en tiempo de ejecución no esté disponible en la plataforma de destino. La elección de una versión del lenguaje más reciente que la predeterminada puede provocar errores en tiempo de compilación y en tiempo de ejecución difíciles de diagnosticar.

C# 12 solo se admite en .NET 8 y versiones más recientes. C# 11 solo se admite en .NET 7 y versiones más recientes. C# 10 solo se admite en .NET 6 y versiones más recientes.

Consulte la página Compatibilidad de la plataforma Visual Studio para más información sobre qué versiones de .NET son compatibles con las versiones de Visual Studio. Consulte la página Compatibilidad de la plataforma Visual Studio para Mac para más información sobre qué versiones de .NET son compatibles con las versiones de Visual Studio para Mac. Consulte la página de Mono para C# para ver la compatibilidad de Mono con versiones de C#.

Valores predeterminados

El compilador determina un valor predeterminado según estas reglas:

Destino Versión Versión predeterminada del lenguaje C#
.NET 8.x C# 12
.NET 7.x C# 11
.NET 6.x C# 10
.NET 5.x C# 9.0
.NET Core 3.x C# 8.0
.NET Core 2.x C# 7.3
.NET Standard 2.1 C# 8.0
.NET Standard 2.0 C# 7.3
.NET Standard 1.x C# 7.3
.NET Framework todo C# 7.3

Si el proyecto tiene como destino un marco de preview que tenga una versión de lenguaje preliminar correspondiente, la versión de lenguaje que se usa es la que está en versión preliminar. Puede usar las características más recientes con esa versión preliminar en cualquier entorno, sin que afecte a los proyectos que tienen como destino una versión de .NET Core publicada.

Importante

La nueva plantilla de proyecto de Visual Studio 2017 agregó una entrada <LangVersion>latest</LangVersion> a los nuevos archivos de proyecto. Si actualiza la plataforma de destino para estos proyectos, la configuración de <LangVersion> puede invalidar el valor predeterminado para la nueva plataforma de destino. Asegúrese de quitar el <LangVersion>latest</LangVersion> del archivo del proyecto para asegurarse de que el proyecto usa la versión del compilador recomendada para la plataforma de destino. Puede actualizar la plataforma de destino para acceder a las características de lenguaje más recientes.

Referencia de la versión del lenguaje C#

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.
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).

Nota:

Especificar LangVersion con el valor default es diferente de omitir la opción LangVersion. Al especificar default se usa la versión más reciente del lenguaje que admite el compilador, sin tener en cuenta la plataforma de destino. Por ejemplo, compilar un proyecto destinado a .NET 6 desde la versión actual de Visual Studio 2022 usa C# 10 si no se especifica LangVersion, pero usa C# 12 si LangVersion está establecido en default.