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


91

Seguía recibiendo ese error al ejecutar una nueva aplicación ASP.NET MVC (directamente de VS 2015 Community) en una máquina con Windows 2008 Server.


3
Cambie la versión de idioma a 5. Vea: Cómo cambiar la versión de idioma
NASSER

En mi caso, he actualizado System.Web.Mvc.dll de la versión 5.2.3 a 5.2.7, solucionó este problema porque la versión es incorrecta.
Dino Liu

En 2019 ocurrió un error similar . Consulte también este problema relacionado con GitHub .
Uwe Keim

Respuestas:


104

Mucha gente se está encontrando con él, así que quería publicar aquí.

Encontré una solución increíblemente fácil gracias a este tipo: Expertdebugger .

Simplemente cambie la versión de su idioma de C # 6 a C # 5, así:

<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">
        <providerOption name="CompilerVersion" value="v4.0"/>
      </compiler>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+">
          <providerOption name="CompilerVersion" value="v4.0"/>
      </compiler>
    </compilers>
</system.codedom>

Cambie langversion:6hacia abajo de 6 a 5 -langversion:5

Me lo arregló. Gracias a el.


1
Muchas gracias por ayudarme.
AH.

28
Eso es solo decirle al compilador que compile con C # versión 5 en lugar de 6, que no es lo que desea si está haciendo un proyecto .NET 4.6 ... Lo que realmente necesita cambiar es el tipo de compilador, como se muestra en la otra respuesta a esta pregunta!
Nuno Agapito

1
O elimine el bloque <system.codedom> en sí, también solucionará el problema.
Anupam Singh

5
¿Cambiar esto donde? Quiero decir, ¿dónde tengo que poner este código?
Irrompible

Ponlo en tu archivo web.config o app.config
csharpforevermore

82

Si desea utilizar C # 6.0:

  1. Asegúrese de que la versión .NET de su proyecto sea superior a 4.5.2.
  2. Y luego verifique su .configarchivo para realizar las siguientes modificaciones.

Busque system.codedomy modifíquelo para que se vea como se muestra a continuación:

<system.codedom>
 <compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
  <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
 </compilers>
</system.codedom>

Eso es exactamente lo que estaba buscando. Comencé a recibir este error después de actualizar un proyecto ASP.NET MVC de .NET Framework 4.5.2 a 4.6. No estoy seguro, pero creo que sería mejor si Visual Studio actualizara esas líneas por sí solo.
Zignd

3
Esta debe ser la respuesta correcta, ya que en realidad soluciona el problema y permite al compilador usar la última versión en lugar de volver a la versión anterior
SM3RKY

1
De acuerdo con SM3RKY: ¡esta respuesta es más relevante ya que resuelve el problema, en lugar de evitarlo!
Jon Story

Si actualiza su solución a .net 4.6 para un proyecto existente usando VS 2015 Community o por debajo, se produce este error. Después de actualizar VS 2015 Update 3, esta corrección viene por defecto para los nuevos proyectos. ¡Sin embargo, la respuesta es la solución exacta!
Mahmut C

Esto solucionó el problema para mí en un proyecto .Net 4.6.2 usando ASP.NET (formularios web) y VB.NET
Eric Hewett

14

Descubrí que la causa directa del error en mi caso fue:

compilar -> avanzado -> versión de idioma

esto tiene sentido ya que el error indica que hay una opción no válida para el idioma.

pero esto funcionaba bien antes, por lo que debe haber sido seleccionado. ¿Qué cambió? resulta que un miembro de mi equipo se actualizó a vs 2017, mientras yo todavía usaba 2015. después de que hizo cambios en el proyecto, se cambió la versión de idioma y recibí ese cambio sobre el control de fuente. pero la versión seleccionada no estaba disponible para mi versión de vs, por lo que estaba en blanco, de ahí el error. después de seleccionar un valor en el menú desplegable de idioma (elegí el predeterminado), apareció un nuevo error. el nuevo error estaba causando un error de compilación en cualquier línea de código que usaba la versión más reciente de c #. Cambié el código para realizar las mismas funciones, pero con la sintaxis y el problema de mi versión c # resuelto.

por lo tanto, si bien la causa directa del error fue una selección no válida de la versión de idioma, la causa raíz se debió a diferentes versiones de vs / c # en conflicto.


1
Esta respuesta me ayudó después de verificar todas las demás. gracias
MindRoasterMir

1
Esta respuesta también se aplicó a mi caso en el que estaba tratando de ejecutar un proyecto configurado en C # 8, pero no es compatible con mi estudio visual 2017. Solo VS 2019
Vinícius Gabriel

13

En mi caso el error fue:

Error CS1617 Opción "más reciente" no válida para / langversion; debe ser ISO-1, ISO-2, predeterminado o un número entero en el rango de 1 a 6.

Abrí mi archivo .csproj con el bloc de notas y vi esta línea:

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

Cambié el último por un número entero en el rango de 1 a 6

<LangVersion>6</LangVersion>

¡El error desapareció!


¡Muchas gracias! Ahora la depuración en VS2015 y Unity2018 funciona
8Observer8

No es necesario que se abra exactamente en el bloc de notas, pero desde el estudio visual se puede cargar el proyecto y luego editarlo, lo que también solucionará este problema.
Shantu

12

En mi caso, estaba usando el MSBuild.exe incorrecto, el que se encuentra en:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319

Para resolver el error, actualicé mi variable de entorno PATH para comenzar a usar Visual Studio 2017 MSBuild.exe:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSbuild.exe

Consulte este enlace para obtener más detalles: Error CS1056: carácter inesperado '$' que ejecuta msbuild en un proceso de integración continua de tfs


Lo mismo aquí, en mi caso instalé las herramientas de MSBuild y usé msbuild de "C: \ Archivos de programa (x86) \ MSBuild \ 14.0 \ Bin \ MSBuild.exe"
falstaff

10

en mi caso (proyecto crear en otro sistema):

  1. proyecto limpio (haga clic derecho en proyecto en el explorador de soluciones y haga clic en elemento limpio).
  2. luego construya el proyecto (haga clic con el botón derecho en el proyecto en el explorador de soluciones y haga clic en el elemento de construcción).

Puedo ejecutar este proyecto.


5

En lugar de cambiar la versión de idioma de 6 a 5, cambie el atributo "tipo" en la etiqueta del compilador de

Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

a

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

4

Actualice el paquete Microsoft.Net.Compilers Nuget a la última versión (al menos 2.x)


3

La solución más fácil para mí fue actualizar los compiladores .Net a través del Administrador de paquetes

Paquete de instalación Microsoft.Net.Compilers

y luego cambiar las líneas Web.Config a esto

<system.codedom>
 <compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
  <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
 </compilers>
</system.codedom>

1

Resulta que esto era un problema, porque el proyecto ASP.NET MVC 4 hacía referencia a una versión específica del paquete Microsoft.Net.Compilers. Visual Studio estaba usando el compilador de este paquete específico y no el compilador que estaba instalado de otra manera en la computadora.

Una advertencia o algo hubiera sido bueno de VS2019 :-)

La solución entonces es actualizar el paquete Microsoft.Net.Compilers a una versión más nueva.

La versión 1.x es para C # 6 La versión 2.x es para C # 7 La versión 3.x es para C # 8 La forma en que logré resolver esto no fue obvia de inmediato. Visual Studio podría haber sugerido o insinuado que al seleccionar una nueva versión en la configuración del proyecto, esa configuración ahora entraba en conflicto con el paquete instalado en el proyecto.

(Terminé activando el registro de MSBuild de nivel de diagnóstico para averiguar qué CSC.EXE está realmente tratando de usar el IDE)

https://developercommunity.visualstudio.com/content/problem/519531/c-7x-versions-do-not-seem-to-work-in-vs2019.html



0

Yo sólo la cambió el langversiona defaulty funcionó para mí. VS 2015

<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:default /nowarn:1659;1699;1701″>
    <providerOption name=”CompilerVersion” value=”v4.0″/>
  </compiler>
  <compiler language=”vb;vbs;visualbasic;vbscript” extension=”.vb” type=”Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ warningLevel=”4″ compilerOptions=”/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+”>
      <providerOption name=”CompilerVersion” value=”v4.0″/>
  </compiler>
</compilers>


0

Limpie la solución y compile de nuevo En mi caso, cualquiera que sea la configuración anterior se bloqueó debido a una falta de coincidencia. Importé un nuevo proyecto y lo construí, intenté cambiar versiones y todo. limpiar las soluciones y construir funcionó para mí.


0

En mi caso, estaba descargando una biblioteca con código de muestra de implementación de keycloak de mattorg de GITHUB: https://github.com/mattmorg55/Owin.Security.Keycloak/tree/dev/samples

La solución fue bastante fácil, ya que usé .Net Framework 4.6.1, pero el proyecto me suplicó al principio que usara 4.6.2. Aunque lo descargué, primero se eligió de forma activa, al reiniciar, configurar todas las instancias de Visual Studion (o mejor cerrar todas las instancias). El proyecto fue manipulado a 4.6.1 (aunque no lo deseaba y lo elegí).

Entonces, después de volver a elegir la configuración para elegir .Net Framework 4.6.1, el error desapareció de inmediato.


0

En mi caso, el mensaje de error fue:

ASPNETCOMPILER: error CS1617: opción "7.3" no válida para / langversion; debe ser ISO-1, ISO-2, predeterminado o un número entero en el rango de 1 a 6.

Como se indica en este problema de GitHub , y en esta publicación de VS Developer Community , parece ser un error en un paquete Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet anterior.

Después de actualizar este paquete NuGet a 3.6.0, el error aún persistía en mi aplicación web.

Solución

Descubrí que tenía que eliminar una antigua carpeta "bin \ Roslyn" en mi aplicación web para que esto funcionara.

Parece que el paquete Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet más nuevo (3.6.0 en mi caso) ya no trae su propia carpeta "Rosyln", y si está presente, esa vieja carpeta "Roslyn" tuvo prioridad durante la compilación.


0

Esto me sucedió cuando bajé mi repositorio después de moverlo a una nueva ubicación. La solución fue descargar y luego volver a cargar cada proyecto que mostraba este error.

Probé algunas otras opciones pero nada funcionó para mí. Además, en esta situación, mis archivos de configuración estaban configurados para usar languageversion 6, por lo que establecerlos en los valores predeterminados no solucionó el problema.


0

Si las opciones anteriores no funcionan y ha utilizado paquetes nuget como Microsoft.Net.Compilers y CodeDom y aún no funciona, entonces hay un problema con el archivo de proyecto abierto. El archivo de proyecto utiliza una de las opciones del compilador que no admite el idioma seleccionado. Abra el archivo del proyecto con notepad ++ y elimine la siguiente línea.

Archivo de proyecto original

<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
  <!--Don't delete below one-->
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

Eliminar las siguientes líneas

  <Import Project="..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.