Cuando se usa Visual Studio Enterprise 16.3.7
en dos máquinas separadas, una funciona bien y la otra 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.
Esto puede ser fácilmente resuelto en la máquina de trabajo mediante el establecimiento de ninguno LangVersion
de .csproj
como se sugiere aquí https://stackoverflow.com/a/48085575/3850405 o dejar que Visual Studio fijar automáticamente como 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 .csproj
y la otra máquina la necesita.
dotnet --list-sdks
muestra?.NET Framework 4.6.1
yLangVersion
no está configurado.Respuestas:
Recibí el mismo error, pero simplemente me había olvidado de incluir el
atributo en TODOS los archivos .csproj en la solución. La siguiente es mi configuración actual de c # 8:
Encontré que los siguientes documentos son los más útiles al migrar del núcleo 2.2 a 3.x:
MSDN 2.2 -> 3.0
MSDN 3.0 -> 3.1
fuente
<LangVersion>latest</LangVersion>
lugar de<LangVersion>8.0</LangVersion>
MSDN 2.2 -> 3.0
está destinado a enlazar a lo siguiente: docs.microsoft.com/en-us/aspnet/core/migration/22-to-30 He intentado editar la respuesta para enmendarla, pero "sugerí editar la cola está lleno ", así que publicaré aquí en su lugar.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
fuente
Esto puede deberse a que el compilador utiliza por defecto diferentes versiones de lenguaje C # para diferentes marcos de destino.
Para anular el lenguaje C # predeterminado, agregue al archivo del proyecto (como se sugiere en la pregunta):
o:
Consulte las versiones en lenguaje C # para conocer las versiones predeterminadas en lenguaje C # para los diferentes marcos de destino y cómo seleccionar manualmente la versión en lenguaje C #.
Consulte también la respuesta de desbordamiento de pila ¿C # 8 admite .NET Framework? para más información sobre este tema
Aquí está parte del artículo de versiones de lenguaje C # :
Versiones de lenguaje C #
El último compilador de C # determina una versión de idioma predeterminada basada en el marco o marcos de destino de su proyecto. Esto se debe a que el lenguaje C # puede tener características que dependen de tipos o componentes de tiempo de ejecución que no están disponibles en todas las implementaciones de .NET. Esto también garantiza que, independientemente del objetivo para el que se construya su proyecto, obtenga la versión de idioma compatible más alta de forma predeterminada.
Las reglas de este artículo se aplican al compilador entregado con Visual Studio 2019 o .NET Core 3.0 SDK. Los compiladores de C # que forman parte de la instalación de Visual Studio 2017 o versiones anteriores de .NET Core SDK se dirigen a C # 7.0 de manera predeterminada.
Valores predeterminados
El compilador determina un valor predeterminado basado en estas reglas:
Anular un valor predeterminado
Si debe especificar su versión de C # explícitamente, puede hacerlo de varias maneras:
Edite el archivo del proyecto
Puede configurar la versión del idioma en su archivo de proyecto. Por ejemplo, si desea acceder explícitamente a las funciones de vista previa, agregue un elemento como este:
El valor
preview
utiliza la última versión preliminar disponible del lenguaje C # que admite su compilador.Configurar múltiples proyectos
Para configurar varios proyectos, puede crear un archivo Directory.Build.props que contenga el
<LangVersion>
elemento. Normalmente lo haces en tu directorio de soluciones. Agregue lo siguiente a un archivo Directory.Build.props en su directorio de soluciones:Ahora, las compilaciones en cada subdirectorio del directorio que contiene ese archivo utilizarán la versión preliminar de C #. Para obtener más información, consulte el artículo sobre Personalizar su compilación .
fuente
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 para Visual Studio 2019 (a la versión 16.4.2).
Esto también reinició mi computadora y el error desapareció.
fuente