【发布时间】:2020-11-01 15:38:49
【问题描述】:
我正在使用 Visual Studio 17(版本 15.8.5),我的项目针对 .NET Framework 4.8,我尝试设置要使用的 C# 版本(通过“属性”窗口中的“构建”选项卡)C# 7.3(这是最高可从下拉列表中选择的版本)。但是,构建项目会报告失败,例如问题标题中的内容。我什至尝试过7.0 和C# latest minor version,所有这些都报告失败。
貌似环境支持最高版本6(C# 6.0)?
我尝试安装了Microsoft.Net.Compilers v3.6.0 和Microsoft.Net.Compilers.Toolset v3.6.0,但没有任何改变。
我想像下面的简单代码一样使用模式匹配功能:
object o ...
if(o is int c){
//do something with c (cast to int) ...
}
更新:
奇怪的是,如果我创建一个全新的 ASP.NET MVC 项目 ,它只是用 C# 7.3 集编译好。所以看起来我正在从事的特定项目有问题。为了更好地诊断,我想通过此链接在此处分享该项目https://sites.google.com/site/ngaodaantoi/files/WebApiAuth.zip?attredirects=0&d=1
建议您使用 VS 2017 来帮助重现该问题。
【问题讨论】:
-
为了解决这个问题,我会通过将
#error version放在源代码中来确认正在使用哪个版本的编译器(这将输出编译器的版本)并使用/langversion:?列出可用版本. -
@JulienCouvreur 我已经尝试了你的建议,它显示
Compiler version: '2.9.0.63208 (958f2354)'langversion完全显示了我通过项目的“属性”窗口设置的内容。无论如何感谢您的建议,但我不知道该信息。 -
您是否安装了最新版本的 Microsoft.Net.Compilers Nuget 包?
-
@DMadden51 是的,我确实有这个(我的问题中已经提到过),也安装了最新版本的
Microsoft.CodeDom.Providers.DotNetCompilerPlatform。 -
@Hopeless 我很困惑:-/ Roslyn 编译器版本 2.9.x 支持语言版本 7.3(记录在 here)。可能值得询问 ASP.NET 团队。可能涉及多个编译器:IDE、Build 和 ASP.NET。查看构建日志会有所帮助(使用
/binarylog选项,然后使用“MSBuild 结构化日志查看器”)。如果您的项目很小/简单/独立且不保密,您可以与我分享以尝试复制(电子邮件 jcouv@microsoft.com)。
标签: c# asp.net-mvc visual-studio-2017 c#-7.0