我使用的是 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:?
列出可用的版本。 - Julien CouvreurMicrosoft.CodeDom.Providers.DotNetCompilerPlatform
。 - Hopeless/binarylog
选项,然后使用“MSBuild结构化日志查看器”)。如果您的项目很小/简单/独立且不保密,您可以与我分享以尝试重现(电子邮件jcouv@microsoft.com)。 - Julien CouvreurProject System Tools
扩展,并且可以看到binlog结果,但似乎没有帮助,错误路径是Target CoreCompile -> Target Csc
。完全新的ASP.NET MVC/WebApi项目可以使用C# 7.3构建良好,这太荒谬了。我不确定我遇到问题的项目有什么问题(我尝试比较了这两个项目以查看差异,但除了已安装的软件包列表外很难)。我的项目只是一个演示项目(类似于游乐场),这里没有任何机密信息...。 - Hopeless