c# asp.net visual-studio-2017 c#-7.0

Habilitar c#7 en una aplicación asp.net



visual-studio-2017 c#-7.0 (5)

En la ventana NuGet del sitio web:

  1. Desinstalar Microsoft.CodeDom.Providers.DotNetCompilerPlatform
  2. Reinstalarlo
  3. En web.config , en: system.codedom > compilers > compiler , cambie compilerOptions = "/ langversion: 6 a 7

Empecé a trabajar en mi solución anterior en Visual Studio 2017. Simplemente abrir la solución en el IDE anterior funcionó a la perfección. Los proyectos de la aplicación C # ahora tienen el compilador de C # 7.0 predeterminado. Las páginas de propiedades de esos proyectos (compilación / avanzada) permiten elegir fácilmente la versión de idioma de destino del compilador, por defecto a la última.

Sin embargo, no puedo encontrar una manera de habilitar c # 7.0 en los proyectos web asp.net . Si escribo una declaración como:

if (int.TryParse("1", out int myInt)) { ... }

El IDE me advierte diciendo que necesito usar la versión 7+ del lenguaje.

Mi investigación sobre este tema muestra que debo apuntar a la versión específica de C # en el área de compiladores system.codedom del archivo web.config, para apuntar a la versión más nueva de Roslyn.

Lo que tengo ahora es:

<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>

que se dirige a c # 6. ¿Cuáles son las configuraciones correctas para c # 7, siempre que ya haya descargado la última Roslyn con nuget?

Actualizar Aquí hay una captura de pantalla de las opciones de compilación disponibles para un proyecto web (es italiano VS2017 pero debería ser fácil de entender). No hay posibilidad de seleccionar la versión de C # específica allí.


Estaba haciendo referencia a un proyecto personalizado A que hacía referencia a otro proyecto personalizado B. Acabo de leer las referencias de A a B y parecía funcionar (por ahora).


Para el soporte de C # 7.x, configure la versión del proyecto del lenguaje de configuración de construcción en la última versión menor de C # (la última)

Versión del lenguaje de configuración de compilación

Si está utilizando CodeDOM Providers para .NET Compiler Platform ("Roslyn") (por ejemplo, el paquete nuget Microsoft.CodeDom.Providers.DotNetCompilerPlatform) establezca compilerOptions = "/ langversion: latest" en web.config para asp.net.

<system.codedom> <compilers> <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:latest /nowarn:1659;1699;1701"/> </compilers> </system.codedom>

Para más información:


Si intenta instalar Microsoft.CodeDom.Providers.DotNetCompilerPlatform versión 2.0.0 y su proyecto se dirige a una versión de .net anterior a 4.6, utilizará automáticamente una versión anterior de roslyn que solo admite hasta la versión 6. Esto se debe a que Las versiones más nuevas de roslyn, incluida la primera versión que admite csharp-7, requieren al menos .net-4.6 para ejecutarse. Si su proyecto apunta a una versión anterior de .net, recibirá el mensaje de error que verá:

CS1617 Opción no válida ''último'' para / langversion; debe ser ISO-1, ISO-2, Predeterminado o un número entero en el rango de 1 a 6.

  1. Asegúrese de que su proyecto esté dirigido al menos a .net-4.6. Retarget si es necesario.
  2. Si su proyecto todavía usa packages.config , entonces debe desinstalar y reinstalar Microsoft.CodeDom.Providers.DotNetCompilerPlatform para actualizar su archivo de proyecto para que apunte a la variante .net-4.6 del paquete nuget. Si está utilizando <PackageReference/> , ya está todo configurado (pero debe configurar manualmente la sección system.codedom web.config ).

Puedo compilarlo con la configuración de idioma predeterminada pero no con la opción C # 7.

Pero debajo de la configuración da error de tiempo de compilación:

para que pueda mantener la configuración de la versión de idioma como predeterminada.

Si está experimentando con Roslyn y no usa la compilación predeterminada del compilador de Visual 2017, es posible que deba realizar algunos cambios más

Seleccione el nombre de su proyecto y haga clic con el botón derecho >> Ventana Propiedades >> Generar y luego agregue las dos opciones siguientes en el cuadro de texto "Símbolos de compilación condicional" __DEMO__,__DEMO_EXPERIMENTAL__

Actualizar

Para usar C # 7.0, debe usar la versión 2.0+ de Microsoft.Net.Compilers

después de instalar la última versión de Microsoft.Net.Compilers (2.0+) puede seleccionar la versión de idioma como C # 7.

así que la mejor solución es instalar la última versión de Microsoft.Net.Compilers (2.0+).