Actualicé un tipo de proyecto de sitio web existente Visual Studio 2015, cambié el Marco a 4.6.
Entonces esperaba tener todas esas nuevas funciones disponibles en mi código detrás de los archivos.
Desafortunadamente estoy recibiendo errores como:
Error CS8026: la función 'propiedad con cuerpo de expresión' no está disponible en C# 5. Utilice la versión de idioma 6 o superior.
o por ejemplo:
Error CS8026: la función "cadenas interpoladas" no está disponible en C# 5. Utilice la versión de idioma 6 o superior.
Hice una búsqueda rápida en Google y encontré a un tipo publicando algunos comentarios en una publicación de blog de ScottGu (busque "8026" en la página).
Como no entiendo su solución, además de que quiero que la solución sea más visible, he creado esta publicación SO.
Mi pregunta:
¿Cómo puedo tener un proyecto de Visual Studio 2015 de tipo Sitio web (es decir, no Aplicación web ) para reconocer las características de C# 6?
Probé esto con ASP.NET MVC 5 (probado 5.2.3), y su kilometraje puede variar con otros marcos web, pero solo necesita agregar el paquete NuGet para Roslyn CodeDOM .
Microsoft.CodeDom.Providers.DotNetCompilerPlatform debería agregar los archivos DLL...
PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatformProveedores de CodeDOM de reemplazo que usan el nuevo compilador .NET Compiler Platform ("Roslyn") como API de servicio. Esto brinda soporte para nuevas funciones de lenguaje en sistemas que utilizan CodeDOM (por ejemplo, compilación en tiempo de ejecución de ASP.NET), además de mejorar el rendimiento de compilación de estos sistemas.
... y también agregue lo siguiente a su web.config:
<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>Si aún falta el XML, intente agregarse usted mismo.
Consulte también esta publicación de blog de Sayed Ibrahim Hashimi sobre cómo hacer esto a través de VS IDE.
En Visual Studio 2015 Update 1 hemos incluido una nueva función para simplificar esto. Cuando tiene una solución abierta que tiene al menos un proyecto web que apunta a .NET 4.5+ y no tiene el paquete DotNetCompilerPlatform NuGet en el menú Proyecto, verá una nueva opción, Habilitar C# 6/VB 14.
Actualizar.
VS 2017 y 2019 tienen esta característica movida a Build -> ASP.NET Compilation . 
Instalé DotNetCompilerPlatform como sugirió @jbtule, pero seguía recibiendo los mismos errores.
PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatformCerré la solución, eliminé las carpetas bin y obj, luego abrí la solución y la reconstruí. Ahora las funciones de C# 6 funcionan.