c# asp.net-mvc visual-studio-2015 roslyn c#-6.0

Características de C#6.0 que no funcionan con Visual Studio 2015



asp.net-mvc visual-studio-2015 (7)

Estoy probando Visual Studio 2015 con C # 6.0 pero las características del lenguaje no funcionan. En una aplicación web MVC, se compila el siguiente código:

if (!string.IsNullOrWhiteSpace(Model.Profile?.TypeName)) { // More logic here... }

Sin embargo, cuando ejecuto la aplicación a través de Debug e IIS Express, aparece el siguiente error:

CS1525: término de expresión no válido ''.''

¿Cómo habilito estas funciones?


Bueno, tengo MVC5 y recientemente instalé VS 2015.

He instalado el paquete de proveedores de CodeDOM, pero no ayudó ... Pero después de eso me di cuenta de que ese paquete solo admite el marco 4.5, mientras que tengo el marco de destino establecido en 4.6 durante las pruebas, aunque funciona con 4.5 ...

Así que preste atención también al marco objetivo. Si tiene 4.5, simplemente instale el paquete Microsoft.CodeDom.Providers.DotNetCompilerPlatform. Pero si tiene 4.5.1-4.6 como objetivo, tendrá que cambiar en la sección web.config

<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.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>

Para C # , simplemente cambie el tipo a:

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


Estaba teniendo este mismo problema en Visual Studio 2015. Otra respuesta aquí aludía a la solución que usé, pero especificaron incorrectamente la solución y nunca dieron aclaraciones.

En el menú de Visual Studio, seleccione Proyecto y debería ver el subelemento Habilitar C # 6 / VB 14 si tiene este problema. Seleccione este subelemento del menú. Descargará los paquetes correctos de Nuget y los instalará. Después de esto, reinicie Visual Studio y vuelva a cargar su solución.

No puedo verificar si esto también solucionará la selección de Propiedades del proyecto> Compilación> Avanzado> Versión del idioma en C # 6 , por lo que es posible que desee verificar esto también después de habilitar C # 6 desde el menú.


Esto funciona en MVC 5 (probado 5.2.3), solo necesita agregar el código roslyn dom Nuget package

Proveedores de CodeDOM para el compilador .NET ...

Proveedores de CodeDOM de reemplazo que usan el nuevo compilador .NET Compiler Platform ("Roslyn") como API de servicio. Esto proporciona soporte para nuevas características de lenguaje en sistemas que usan CodeDOM (por ejemplo, compilación de tiempo de ejecución ASP.NET), así como mejorar el rendimiento de compilación de estos sistemas.

PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/


Incluyendo seguir el consejo de instalar el último Microsoft.CodeDom.Providers.DotNetCompilerPlatform , también tuve que configurar mi raíz Web.config system.codedom para que finalmente se eliminen todos los errores en Visual Studio 2015 :

<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>

Ahora reinicie Visual Studio y eso debería hacerlo.


Verifique las propiedades de su proyecto, vaya a compilar, avanzado y vea si C # 6.0 si no lo tiene por defecto.

¡Actualmente hay un soporte perfecto para MVC5 y C # 6.0 y funciona increíblemente bien!


Visual Studio 2015 también mostrará Enable C#6 / VB 14 en el menú Proyecto con un sitio web / aplicación web ASP.NET seleccionado.

Esto instalará de facto Microsoft.Net.Compilers paquetes Microsoft.CodeDom.Providers.DotNetCompilerPlatform y Microsoft.Net.Compilers en su proyecto y agregará las etiquetas apropiadas en el archivo web.config.


<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:7 /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.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:15 /nowarn:41008 /define:_MYTYPE=/&quot;Web/&quot; /optionInfer+" />