Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

673
Vistas
La función 'usar declaraciones' no está disponible en C# 7.3. Utilice la versión de idioma 8.0 o superior - Error en una máquina pero funciona en otra

Cuando se usa Visual Studio Enterprise 16.3.7 en dos máquinas separadas, una se compila bien y la otra máquina arroja el error:

La función 'usar declaraciones' no está disponible en C# 7.3. Utilice la versión de idioma 8.0 o superior.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Esto se puede resolver fácilmente en la máquina que no funciona configurando LangVersion en .csproj como se sugiere aquí https://stackoverflow.com/a/48085575/3850405 o deja que Visual Studio lo arregle automáticamente como en la pantalla de impresión anterior.

 <LangVersion>8.0</LangVersion>

Lo que no puedo entender es por qué una máquina funciona bien sin esta línea en .csproj y la otra máquina la necesita.

over 4 years ago · Santiago Trujillo
9 Respuestas
Responde la pregunta

0

Descargué la última versión de .Net Core 3.0 y 3.1 y tuve el mismo problema. Para mí, la solución parecía descargar la última actualización de Visual Studio 2019 (a la versión 16.4.2).

Esto también reinició mi computadora y el error desapareció.

over 4 years ago · Santiago Trujillo Denunciar

0

Recibí el mismo error, pero simplemente había olvidado incluir el

 <LangVersion>8.0</LangVersion>

atributo en TODOS los archivos .csproj en la solución. La siguiente es mi configuración actual de C# 8:

 <PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> <LangVersion>8.0</LangVersion> <Nullable>enable</Nullable> <NullableContextOptions>enable</NullableContextOptions> </PropertyGroup>

Encontré que los siguientes documentos son los más útiles al migrar del núcleo 2.2 al 3.x:

MSDN 2.2 -> 3.0

MSDN 3.0 -> 3.1

over 4 years ago · Santiago Trujillo Denunciar

0

Tuve que actualizar Visual Studio a la versión de 16.3.X a 16.4.2. Esto resolvió el problema y no tuve que agregar ninguna LangVersion.

Créditos: https://github.com/aspnet/AspNetCore.Docs/issues/16047

over 4 years ago · Santiago Trujillo Denunciar

0

Hice lo siguiente y resolvió mi problema:

  1. cree un archivo llamado "Directory.Build.props" en el directorio de la solución y escriba este código:

     <Project> <PropertyGroup> <LangVersion>latest</LangVersion> </PropertyGroup> </Project>
  2. Eliminó la carpeta .vs (está oculta en el directorio de la solución)

  3. Reinicie Visual Studio

over 4 years ago · Santiago Trujillo Denunciar

0

2021

Causa: es posible que tenga como objetivo .NET Standard 2.0 , que usa C# 7.3 .

Corrección: en las propiedades del proyecto, haga clic en el panel de la aplicación y elija .NET Standard 2.1 como el marco de trabajo de destino .

Después del cambio anterior, Visual Studio 2019 solucionará el problema por sí mismo y no será necesario configurar LangVersion .

Ver: versiones del lenguaje C#

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Denunciar

0

Esto puede deberse a que el compilador usa de forma predeterminada diferentes versiones del lenguaje C# para diferentes marcos de trabajo de destino.

Para anular el lenguaje C# predeterminado, agregue al archivo del proyecto (como se sugiere en la pregunta):

 <PropertyGroup> <LangVersion>8.0</LangVersion> </PropertyGroup>

o:

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

Nota:
C# 8.0 solo es compatible con .NET Core 3.x y versiones más recientes. Muchas de las funciones más nuevas requieren funciones de biblioteca y tiempo de ejecución introducidas en .NET Core 3.x.
Fuente: versiones del lenguaje C# - Microsoft Docs


Consulte Control de versiones del lenguaje C#: Microsoft Docs para conocer las versiones predeterminadas del lenguaje C# para los diferentes marcos de trabajo de destino y cómo seleccionar manualmente la versión del lenguaje C#.

Consulte también la respuesta de desbordamiento de pila . ¿C# 8 es compatible con .NET Framework? para más información sobre este tema.


Aquí hay parte del artículo sobre versiones del lenguaje C# - Microsoft Docs :

Versionado del lenguaje C#

El último compilador de C# determina una versión de idioma predeterminada en función del marco o los marcos de destino de su proyecto. Visual Studio no proporciona una interfaz de usuario para cambiar el valor, pero puede cambiarlo editando el archivo csproj. La elección del valor predeterminado garantiza que utilice la versión de idioma más reciente compatible con su marco de destino. Se beneficia del acceso a las funciones de idioma más recientes compatibles con el objetivo de su proyecto. Esta opción predeterminada también garantiza que no use un lenguaje que requiera tipos o un comportamiento de tiempo de ejecución que no esté disponible en su marco de trabajo de destino. Elegir una versión de idioma más reciente que la predeterminada puede causar errores difíciles de diagnosticar en tiempo de compilación y tiempo de ejecución.

Las reglas de este artículo se aplican al compilador entregado con Visual Studio 2019 o el SDK de .NET. Los compiladores de C# que forman parte de la instalación de Visual Studio 2017 o versiones anteriores del SDK de .NET Core tienen como destino C# 7.0 de forma predeterminada.

C# 8.0 solo es compatible con .NET Core 3.x y versiones más recientes. Muchas de las funciones más nuevas requieren funciones de biblioteca y tiempo de ejecución introducidas en .NET Core 3.x.

valores predeterminados

El compilador determina un valor predeterminado basado en estas reglas:

 ╔══════════════════╦═════════╦═════════════════════════════╗ ║ Target framework ║ version ║ C# language version default ║ ╠══════════════════╬═════════╬═════════════════════════════╣ ║ .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 ║ all ║ C# 7.3 ║ ╚══════════════════╩═════════╩═════════════════════════════╝

Anular un valor predeterminado

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

  • Edite manualmente su archivo de proyecto .
  • Configure la versión de idioma para múltiples proyectos en un subdirectorio .
  • Configure la opción del compilador LangVersion .

Edite el archivo del proyecto

Puede configurar la versión de idioma en su archivo de proyecto. Por ejemplo, si desea acceder explícitamente a las funciones de vista previa, agregue un elemento como este:

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

La preview del valor usa la última versión de lenguaje C# de vista previa disponible que admite el compilador.

Configurar varios proyectos

Para configurar varios proyectos, puede crear un archivo Directory.Build.props que contenga el elemento <LangVersion> . Por lo general, lo hace en el directorio de su solución. Agregue lo siguiente a un archivo Directory.Build.props en el directorio de su solución:

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

Ahora, las compilaciones en cada subdirectorio del directorio que contiene ese archivo usarán la versión preliminar de C#. Para obtener más información, consulte el artículo sobre cómo personalizar su compilación .

Referencia de la versión del lenguaje C#

La siguiente tabla muestra todas las versiones actuales del lenguaje C#. Es posible que su compilador no comprenda necesariamente todos los valores si es más antiguo. Si instala el SDK de .NET más reciente, tendrá acceso a todo lo que aparece en la lista.

 ╔═══════════════════════╦══════════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ Value ║ Meaning ║ ╠═══════════════════════╬══════════════════════════════════════════════════════════════════════════════════════════════════════════╣ ║ preview ║ The compiler accepts all valid language syntax from the latest preview version. ║ ║ latest ║ The compiler accepts syntax from the latest released version of the compiler (including minor version). ║ ║ latestMajor (default) ║ The compiler accepts syntax from the latest released major version of the compiler. ║ ║ 10.0 ║ The compiler accepts only syntax that is included in C# 10 or lower. ║ ║ 9.0 ║ The compiler accepts only syntax that is included in C# 9 or lower. ║ ║ 8.0 ║ The compiler accepts only syntax that is included in C# 8.0 or lower. ║ ║ 7.3 ║ The compiler accepts only syntax that is included in C# 7.3 or lower. ║ ║ 7.2 ║ The compiler accepts only syntax that is included in C# 7.2 or lower. ║ ║ 7.1 ║ The compiler accepts only syntax that is included in C# 7.1 or lower. ║ ║ 7 ║ The compiler accepts only syntax that is included in C# 7.0 or lower. ║ ║ 6 ║ The compiler accepts only syntax that is included in C# 6.0 or lower. ║ ║ 5 ║ The compiler accepts only syntax that is included in C# 5.0 or lower. ║ ║ 4 ║ The compiler accepts only syntax that is included in C# 4.0 or lower. ║ ║ 3 ║ The compiler accepts only syntax that is included in C# 3.0 or lower. ║ ║ ISO-2 (or 2) ║ The compiler accepts only syntax that is included in ISO/IEC 23270:2006 C# (2.0). ║ ║ ISO-1 (or 1) ║ The compiler accepts only syntax that is included in ISO/IEC 23270:2003 C# (1.0/1.2). ║ ╚═══════════════════════╩══════════════════════════════════════════════════════════════════════════════════════════════════════════╝
over 4 years ago · Santiago Trujillo Denunciar

0

Debe olvidar esta etiqueta en uno de sus PropertyGroup en su archivo *.csproj

 <LangVersion>8.0</LangVersion>

over 4 years ago · Santiago Trujillo Denunciar

0

Si instala resharper, modificará automáticamente los archivos csproj por usted;)

over 4 years ago · Santiago Trujillo Denunciar

0

Verifique que tenga una configuración válida en ambas máquinas (Depuración/Liberación, x64/Cualquier CPU). Esto también podría dar lugar a este error.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda