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=\"Web\" /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=\"Web\" /optionInfer+"/> </compilers> </system.codedom>
现在重新启动Visual Studio
,应该这样做。
Visual Studio 2015还将在selectASP.NET网站/ Web应用程序的项目菜单中显示Enable C#6 / VB 14
。
这实际上将Microsoft.CodeDom.Providers.DotNetCompilerPlatform
和Microsoft.Net.Compilers
包安装到您的项目中,并将相应的标签添加到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=\"Web\" /optionInfer+" />