我正在使用C# 6.0测试Visual Studio2015,但语言功能不起作用。在MVC web应用程序中,可以编译以下代码:
if (!string.IsNullOrWhiteSpace(Model.Profile?.TypeName))
{
// More logic here...
}
但是,当我通过Debug和IIS Express运行应用程序时,我得到以下错误:
CS1525:无效的表达式术语‘’
如何启用这些功能?
发布于 2015-07-22 03:43:54
这在MVC5(经测试的5.2.3)中有效,您只需添加roslyn代码dom Nuget包
.NET编译器的CodeDOM提供程序...
使用新的
编译器平台("Roslyn")编译器作为服务CodeDOM的.NET替换API提供者。这为使用CodeDOM的系统中的新语言功能提供了支持(例如,ASP.NET运行时编译),并提高了这些系统的编译性能。
PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/
发布于 2015-07-30 23:27:45
嗯,我有MVC5,最近安装了VS 2015。
我已经安装了CodeDOM提供程序包,但它没有帮助...但在那之后我意识到,这个包只支持框架4.5,而我在测试中将目标框架设置为4.6 -它可以与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#,只需将类型更改为:
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
发布于 2016-11-30 05:44:11
我在Visual Studio 2015中也遇到了同样的问题。这里的另一个答案提到了我使用的解决方案,但他们错误地指定了修复,并且从未给出澄清。
在Visual Studio菜单上,选择项目,如果遇到此问题,您应该会看到子项Enable C#6 /VB14。选择此菜单子项目。它将从Nuget下载正确的包并安装它们。之后,重新启动Visual Studio并重新加载您的解决方案。
我无法验证这是否也会将项目属性>构建>高级>语言版本选项修复为C# 6,因此您可能希望在从菜单启用C# 6后也选中此选项。
https://stackoverflow.com/questions/27968963
复制相似问题