Seleccionar la versión del lenguaje C#Select the C# language version

El compilador de C# determina una versión de lenguaje predeterminada basada en los marcos o las plataformas de destino del proyecto.The C# compiler determines a default language version based on your project's target framework or frameworks. Cuando el proyecto tiene como destino un marco en versión preliminar 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.When your project targets a preview framework that has a corresponding preview language version, the language version used is the preview language version. Cuando el proyecto no tiene como destino un marco en versión preliminar, la versión de lenguaje que se usa es la secundaria más reciente.When your project doesn't target a preview framework, the language version used is the latest minor version.

Por ejemplo, durante el período de versión preliminar de .NET Core 3.0, cualquier proyecto que tenga como destino netcoreapp3.0 o netstandard2.1 (en versión preliminar) usará el lenguaje C# 8.0 (también en versión preliminar).For example, during the preview period for .NET Core 3.0, any project that targets netcoreapp3.0 or netstandard2.1 (both in preview) will use the C# 8.0 language (also in preview). Los proyectos que tienen como destino cualquier versión de lanzamiento usarán C# 7.3 (la última versión publicada).Projects targeting any released version will use C# 7.3 (the latest released version). Este comportamiento significa que cualquier proyecto que tenga como destino .NET Framework usará la versión más reciente (C# 7.3).This behavior means that any project targeting .NET Framework will use latest (C# 7.3).

Esta capacidad hace que la decisión de instalar nuevas versiones del SDK y las herramientas en el entorno de desarrollo no esté vinculada a la decisión de incorporar nuevas características del lenguaje en un proyecto.This capability decouples the decision to install new versions of the SDK and tools in your development environment from the decision to incorporate new language features in a project. Puede instalar el SDK y las herramientas más recientes en el equipo de compilación.You can install the latest SDK and tools on your build machine. Cada proyecto se puede configurar para que, durante su compilación, se use una versión de lenguaje específica.Each project can be configured to use a specific version of the language for its build. El comportamiento predeterminado significa que están habilitadas las características de lenguaje que se basan en nuevos tipos o un nuevo comportamiento de CLR habilitados solo cuando los proyectos tienen como destino esas plataformas de destino.The default behavior means that any language features that rely on new types or new CLR behavior are enabled only when projects target those frameworks.

Puede invalidar el comportamiento predeterminado especificando una versión de lenguaje.You can override the default behavior by specifying a language version. Hay varias maneras de establecer la versión de idioma:There are several ways to set the language version:

Acción rápida de Visual StudioVisual Studio quick action

Visual Studio le ayuda a determinar la versión de idioma que necesita.Visual Studio helps you determine the language version you need. Si usa una característica del lenguaje que no está disponible para la versión configurada actualmente, Visual Studio le propone una solución para actualizar la versión de lenguaje del proyecto.If you use a language feature that is not available for the currently configured version, Visual Studio shows a potential fix to update the language version for the project.

Establecer la versión de idioma en Visual StudioSet the language version in Visual Studio

Puede establecer la versión de idioma en Visual Studio.You can set the version in Visual Studio. En el Explorador de soluciones, haga clic con el botón derecho en el nodo del proyecto y seleccione Propiedades.Right-click on the project node in Solution Explorer and select Properties. Seleccione la pestaña Compilar y, después, el botón Opciones avanzadas.Select the Build tab and select the Advanced button. En la lista desplegable, seleccione la versión.In the dropdown, select the version. La siguiente imagen muestra el valor "más reciente":The following image shows the "latest" setting:

Captura de pantalla de la configuración de compilación avanzada en la que se puede especificar la versión del lenguaje

Nota

Si usa el IDE de Visual Studio para actualizar los archivos csproj, este creará nodos independientes por cada configuración de compilación existente.If you use the Visual Studio IDE to update your csproj files, the IDE creates separate nodes for each build configuration. Normalmente, se establece el mismo valor en todas las configuraciones de compilación, pero deberá establecerse de forma explícita en cada configuración de compilación, o bien seleccionar "All Configurations" (Todas las configuraciones) cuando este valor se modifique.You'll typically set the value the same in all build configurations, but you need to set it explicitly for each build configuration, or select "All Configurations" when you modify this setting. Verá lo siguiente en el archivo csproj:You'll see the following in your csproj file:

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
 <LangVersion>latest</LangVersion>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
 <LangVersion>latest</LangVersion>
</PropertyGroup>

Editar el archivo csprojEdit the csproj file

Puede establecer la versión del lenguaje en el archivo .csproj.You can set the language version in your .csproj file. Agregue un elemento similar al siguiente:Add an element like the following:

<PropertyGroup>
   <LangVersion>latest</LangVersion>
</PropertyGroup>

El valor latest usa la versión secundaria más reciente del lenguaje C#.The value latest uses the latest minor version of the C# language. Los valores válidos son:Valid values are:

ValorValue SignificadoMeaning
previewpreview El compilador acepta toda la sintaxis de lenguaje válida de la última versión preliminar.The compiler accepts all valid language syntax from the latest preview version.
latestlatest El compilador acepta la sintaxis de la última versión del compilador (incluida las versión secundaria).The compiler accepts syntax from the latest released version of the compiler (including minor version).
latestMajorlatestMajor El compilador acepta la sintaxis de la versión principal más reciente del compilador.The compiler accepts syntax from the latest released major version of the compiler.
8.08.0 El compilador acepta solo la sintaxis que se incluye en C# 8.0 o versiones anteriores.The compiler accepts only syntax that is included in C# 8.0 or lower.
7.37.3 El compilador acepta solo la sintaxis que se incluye en C# 7.3 o versiones anteriores.The compiler accepts only syntax that is included in C# 7.3 or lower.
7.27.2 El compilador acepta solo la sintaxis que se incluye en C# 7.2 o versiones anteriores.The compiler accepts only syntax that is included in C# 7.2 or lower.
7.17.1 El compilador acepta solo la sintaxis que se incluye en C# 7.1 o versiones anteriores.The compiler accepts only syntax that is included in C# 7.1 or lower.
77 El compilador acepta solo la sintaxis que se incluye en C# 7.0 o versiones anteriores.The compiler accepts only syntax that is included in C# 7.0 or lower.
66 El compilador acepta solo la sintaxis que se incluye en C# 6.0 o versiones anteriores.The compiler accepts only syntax that is included in C# 6.0 or lower.
55 El compilador acepta solo la sintaxis que se incluye en C# 5.0 o versiones anteriores.The compiler accepts only syntax that is included in C# 5.0 or lower.
44 El compilador acepta solo la sintaxis que se incluye en C# 4.0 o versiones anteriores.The compiler accepts only syntax that is included in C# 4.0 or lower.
33 El compilador acepta solo la sintaxis que se incluye en C# 3.0 o versiones anteriores.The compiler accepts only syntax that is included in C# 3.0 or lower.
ISO-2ISO-2 El compilador acepta solo la sintaxis que se incluye en ISO/IEC 23270:2006 C# (2.0)The compiler accepts only syntax that is included in ISO/IEC 23270:2006 C# (2.0)
ISO-1ISO-1 El compilador acepta solo la sintaxis que se incluye en ISO/IEC 23270:2003 C# (1.0/1.2)The compiler accepts only syntax that is included in ISO/IEC 23270:2003 C# (1.0/1.2)

Configurar varios proyectosConfigure multiple projects

Puede crear un archivo Directory.Build.props que contenga el elemento <LangVersion> para configurar varios directorios.You can create a Directory.Build.props file that contains the <LangVersion> element to configure multiple directories. Por lo general, esto se hace en el directorio de la solución.You typically do that in your solution directory. Agregue lo siguiente a un archivo Directory.Build.props en el directorio de la solución:Add the following to a Directory.Build.props file in your solution directory:

<Project>
 <PropertyGroup>
   <LangVersion>7.3</LangVersion>
 </PropertyGroup>
</Project>

Ahora, las compilaciones de cada subdirectorio del directorio que contenga ese archivo usarán la sintaxis de la versión 7.3 de C#.Now, builds in every subdirectory of the directory containing that file will use C# version 7.3 syntax. Para obtener más información, consulte el artículo Personalizar una compilación.For more information, see the article on Customize your build.

Establecer la opción del compilador langversionSet the langversion compiler option

Puede usar la opción de la línea de comandos -langversion.You can use the -langversion command-line option. Para obtener más información, consulte el artículo sobre la opción del compilador -langversion.For more information, see the article on the -langversion compiler option. Para ver una lista de los valores válidos, escriba csc -langversion:?.You can see a list of the valid values by typing csc -langversion:?.