C#6.0function不适用于Visual Studio 2015

我正在用C#6.0testingVisual Studio 2015,但语言function不起作用。 在MVC Web应用程序中,下面的代码不会编译:

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

但是,当我通过debugging和IIS Express运行应用程序时,出现以下错误:

CS1525:无效的expression式“。”

我如何启用这些function?

这工作在MVC 5(testing5.2.3),你只需要添加罗斯林码dom Nuget包

用于.NET编译器的CodeDOM提供程序…

使用新的.NET编译器平台(“Roslyn”)编译器作为服务API的替代CodeDOM提供者。 这为使用CodeDOM的系统(例如ASP.NET运行时编译)提供了对新语言function的支持,并提高了这些系统的编译性能。

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

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

那么,我有MVC5,最近安装VS 2015。

我已经安装了CodeDOM提供程序包,但它并没有帮助…但之后,我意识到,该包只支持框架4.5,而我的目标框架设置为4.6在testing期间 – 它适用于4.5虽然…

所以也要注意目标框架。 如果你有4.5 – 只需安装包Microsoft.CodeDom.Providers.DotNetCompilerPlatform。 但是,如果你有4.5.1-4.6作为目标,你将不得不改变在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> 

对于C# ,只需将types更改为:

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

检查你的项目属性,去build立,先进的,看看如果你没有默认的C#6.0。

目前对MVC5和C#6.0有完美的支持,并且效果惊人!

我在Visual Studio 2015中遇到了同样的问题。这里提到的另一个答案是我使用的解决scheme,但是他们错误地指定了修补程序,从来没有给出澄清。

在Visual Studio菜单上,selectProject ,如果遇到此问题,应该看到子项Enable C#6 / VB 14 。 select此菜单子项目。 它会从Nuget下载正确的软件包并安装它们。 之后,重新启动Visual Studio并重新加载您的解决scheme。

我无法validation这是否也将修复项目属性>生成>高级>语言版本select到C#6 ,所以你可能也想从菜单中启用C#6后检查这一点。

包括遵循安装最新的Microsoft.CodeDom.Providers.DotNetCompilerPlatform的build议我也必须设置我的 Web.config system.codedom到这个最终得到所有在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> 

现在重新启动Visual Studio ,应该这样做。

Visual Studio 2015还将在selectASP.NET网站/ Web应用程序的项目菜单中显示Enable C#6 / VB 14

这实际上将Microsoft.CodeDom.Providers.DotNetCompilerPlatformMicrosoft.Net.Compilers包安装到您的项目中,并将相应的标签添加到web.config文件中。

visual studio 2015  - 启用cs6 snipp

 <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+" />