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.
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.
Respuestas:
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=\"Web\" /optionInfer+">
<providerOption name="CompilerVersion" value="v4.0"/>
</compiler>
</compilers>
</system.codedom>
Cambie langversion:6
hacia abajo de 6 a 5 -langversion:5
Me lo arregló. Gracias a el.
Si desea utilizar C # 6.0:
.config
archivo para realizar las siguientes modificaciones.Busque system.codedom
y 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=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
Descubrí que la causa directa del error en mi caso fue:
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.
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ó!
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
en mi caso (proyecto crear en otro sistema):
Puedo ejecutar este proyecto.
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
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=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
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)
Yo sólo la cambió el langversion
a default
y 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=\"Web\" /optionInfer+”>
<providerOption name=”CompilerVersion” value=”v4.0″/>
</compiler>
</compilers>
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í.
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.
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.
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.
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.
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')" />