Error Opción '6' no válida para / langversion; debe ser ISO-1, ISO-2, 3, 4, 5 o predeterminado

90

Estoy tratando de apuntar a .NET 4.6 y también aprovechar la última versión de C # cambiando la versión de lenguaje C # a 6.

Sin embargo, durante la compilación recibí este error:

Error Opción '6' no válida para / langversion; debe ser ISO-1, ISO-2, 3, 4, 5 o predeterminado

Si actualizo la /langversion:6configuración en Web.Config a 5, funciona,

  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701">

Pero, ¿cómo resuelvo esto sin recurrir a una versión en un idioma inferior?

Estoy usando Visual Studio 2015 Community Edition, y también instalé .NET Framework 4.6 manualmente en caso de que Visual Studio 2015 no lo instalara de forma predeterminada.

El proyecto es un proyecto de plantilla ASP.NET MVC estándar creado por Visual Studio 2015.

Rosdi Kasim
fuente
1
En mi caso, solo tuve que eliminar /langversion:6...
bohdan_trotsenko
@modosansreves Eso volverá a la versión de idioma predeterminada ... que es C # 5, creo ... por favor verifique si puede usar alguna de las funciones de idioma C # 6.
Rosdi Kasim
En efecto. Esto priva de usar las funciones de C # 6. Gracias.
bohdan_trotsenko

Respuestas:

89

Preste atención al "tipo" del compilador en el Web.Config archivo, cuando cambie la versión de Framework:

para 4.5 y C # 5 -

type="Microsoft.CSharp.CSharpCodeProvider...

para 4.6 y C # 6 -

type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

Más información en esta publicación del foro

DrewB
fuente
20
¡Esto funciona! ... Aunque lo considero un error en Visual Studio 2015 por no actualizar esto automáticamente cuando redirijo mi aplicación a .NET 4.6 y C # 6.
Rosdi Kasim
Creo que tienes razón en eso. Me picaron y me topé con tu pregunta. Afortunadamente, el siguiente enlace que encontré fue la respuesta.
DrewB
1
¿Existe CSharpCodeProvider universal para todos los destinos .NET?
denfromufa
1
Mi web.config se había establecido el tipo de versión y el idioma correcto por defecto <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />Sólo la limpieza de la solución y volver a compilar fijo por mí en VS 2019.
joym8
31

Actualice los siguientes paquetes de NuGet (el que esté instalado) para resolver el problema:

  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform
  • Microsoft.Net.Compilers
Desarrollador
fuente
esto es más un comentario que una respuesta
Al Lelopath
2
¡Esta es la verdadera solución! Desinstale este paquete nuget y el problema se resolvió para mí
Geomorillo
Cambié a c # 6.0, pero el paquete todavía estaba en una versión anterior. La actualización de 1.0 a 1.0.4 funcionó para mí.
Mixxiphoid
7
@AlLelopath solo porque es una respuesta pequeña no lo convierte en un comentario. Este pequeño "comentario" resolvió el problema para mí y para otros, así que es mejor que quede como respuesta.
Shimmy Weitzhandler
14

1. Vaya a Proyecto y seleccione las propiedades de su Proyecto.

2 Seleccione Crear y haga clic en el botón Avanzado.

3. Seleccione la versión de idioma predeterminada.

4.Guardar.

https://youtu.be/IP8feQeWqkk

Prashant vishwakarma
fuente
Tenía este error en VS2013. Desafortunadamente, esta solución no funcionó para mí.
Jviaches
2
Este funcionó para mí. Todas las demás soluciones sugeridas giraban en torno a cambiar el archivo web.config o, alternativamente, descargar paquetes / actualizaciones de NuGet. El compilador seguía arrojando errores sobre una versión no válida, lo que me confundió ya que no tenía esa configuración en el archivo de configuración. Resulta que la actualización del paquete NuGet no actualizó automáticamente las propiedades de compilación avanzadas.
Kiran Ramaswamy
3

Me encontré con ese comportamiento si el proyecto no se actualizó completamente a VS2015. En caso de que abra la solución de 2015 en VS2013, obtendrá este error

Sergii Lischuk
fuente
Yo también, creo que este error básicamente significa que necesitas instalar VS2015. Alguien más en el proyecto está usando características de lenguaje más nuevas que 2013 no puede hacer frente
JonnyRaa
2

Abra la consola del Administrador de paquetes NuGet y ejecute el siguiente comando

Paquete de actualización Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r

Mahfuj Ur Rahman
fuente
0

¡Vea una respuesta al extraño error de compilación de ASP.NET! .

La degradación de su lenguaje C # a 5 solo enmascara el problema, tan pronto como alguien use una función de C # 6, su sitio web / proyecto se romperá y aún pasará tiempo solucionándolo nuevamente. Prueba la solución en el enlace.

PBo
fuente
0

Tuve un problema similar cuando cargaba la aplicación por primera vez en Visual Studio 2019. La actualización de "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" nuget a una versión posterior funcionó para mí.

Govind
fuente