Updated an existing Web Site project type Visual Studio 2015, I changed the Framework to 4.6.
I then expected to have all those new features available in my code behind files.
Unfortunately I'm getting errors like:
Error CS8026: Feature 'expression-bodied property' is not available in C# 5. Please use language version 6 or greater.
or e.g.:
Error CS8026: Feature 'interpolated strings' is not available in C# 5. Please use language version 6 or greater.
I did a quick Google check and found a guy posting some comments in a blog posting of ScottGu (search for "8026" on the page).
Since I do not understand his solution, plus I want to have the solution more visible, I've created this SO posting.
My question:
How can I have a Visual Studio 2015 project of type Web Site (i.e. not Web Application) to recognize C# 6 features?
I've tested this with ASP.NET MVC 5 (tested 5.2.3), and your mileage may vary with other web frameworks, but you just need to add the Roslyn CodeDOM| NuGet package
Replacement CodeDOM providers that use the new .NET Compiler Platform ("Roslyn") compiler as a service APIs. This provides support for new language features in systems using CodeDOM (e.g. ASP.NET runtime compilation) as well as improving the compilation performance of these systems.
PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/
The NuGet package should add the DLL files and add the following to your 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>
If it's still missing. Try adding yourself.