我正在使用C#6.0测试Visual Studio 2015,但语言功能不起作用 . 在MVC Web应用程序中,以下代码编译:
if (!string.IsNullOrWhiteSpace(Model.Profile?.TypeName)) { // More logic here... }
但是,当我通过Debug和IIS Express运行应用程序时,我收到以下错误:
CS1525:无效的表达式术语' . '
如何启用这些功能?
这适用于MVC 5(经过测试的5.2.3),你只需要添加roslyn代码dom Nuget包
使用新的.NET编译器平台(“Roslyn”)编译器作为服务API的替换CodeDOM提供程序 . 这为使用CodeDOM的系统(例如ASP.NET运行时编译)中的新语言功能提供了支持,并提高了这些系统的编译性能 .
PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/
好吧,我有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 更改为:
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
我在Visual Studio 2015中遇到了同样的问题 . 这里的另一个答案提到了我使用的解决方案,但他们错误地指定了修复程序并且从未给出澄清 .
在Visual Studio菜单上,选择 Project ,如果遇到此问题,您应该看到子项 Enable C#6 / VB 14 . 选择此菜单子项 . 它将从Nuget下载正确的软件包并安装它们 . 在此之后,重新启动Visual Studio并重新加载您的解决方案 .
我无法验证这是否也会将 Project Properties > Build > Advanced > Language Version 选项修复为 C# 6 ,因此您可能需要在菜单中启用C#6后再进行检查 .
检查项目属性,转到构建,高级并查看C#6.0是否没有默认值 .
目前对MVC5和C#6.0有完美的支持,效果非常好!
包括按照安装最新的建议 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 我也必须设置我的 root Web.config system.codedom 来最终得到 Visual Studio 2015 中的所有错误消失:
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
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
Visual Studio 2015还将在“项目”菜单中显示 Enable C#6 / VB 14 ,并选择了一个ASP.NET网站/ Web应用程序 .
Enable C#6 / VB 14
这将事实上将 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 和 Microsoft.Net.Compilers 包安装到您的项目中,并将相应的标签添加到web.config文件中 .
Microsoft.Net.Compilers
<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+" />
7 回答
这适用于MVC 5(经过测试的5.2.3),你只需要添加roslyn代码dom Nuget包
.NET编译器的CodeDOM提供程序...
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/
好吧,我有MVC5,最近安装了VS 2015 .
我已经安装了CodeDOM提供程序包,但它没有帮助...但之后我意识到,该程序包仅支持框架4.5,而我在测试期间将目标框架设置为4.6 - 它适用于4.5虽然...
所以也要注意目标框架 . 如果你有4.5 - 只需安装包Microsoft.CodeDom.Providers.DotNetCompilerPlatform . 但是如果您将4.5.1-4.6作为目标,则必须在web.config部分中进行更改
对于 C# ,只需将 type 更改为:
我在Visual Studio 2015中遇到了同样的问题 . 这里的另一个答案提到了我使用的解决方案,但他们错误地指定了修复程序并且从未给出澄清 .
在Visual Studio菜单上,选择 Project ,如果遇到此问题,您应该看到子项 Enable C#6 / VB 14 . 选择此菜单子项 . 它将从Nuget下载正确的软件包并安装它们 . 在此之后,重新启动Visual Studio并重新加载您的解决方案 .
我无法验证这是否也会将 Project Properties > Build > Advanced > Language Version 选项修复为 C# 6 ,因此您可能需要在菜单中启用C#6后再进行检查 .
检查项目属性,转到构建,高级并查看C#6.0是否没有默认值 .
目前对MVC5和C#6.0有完美的支持,效果非常好!
包括按照安装最新的建议
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
我也必须设置我的 rootWeb.config
system.codedom
来最终得到Visual Studio 2015
中的所有错误消失:现在重启
Visual Studio
,应该这样做 .Visual Studio 2015还将在“项目”菜单中显示
Enable C#6 / VB 14
,并选择了一个ASP.NET网站/ Web应用程序 .这将事实上将
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
和Microsoft.Net.Compilers
包安装到您的项目中,并将相应的标签添加到web.config文件中 .