对于我们的一个项目,我们正在尝试升级以使用C#8而不是C#7.1。升级看起来可行,因为编译器看起来需要C#8语句(不会将其标记为错误)。但是,当我构建项目时,构建失败,最初没有显示任何错误。
用于测试C#8的代码为以下几行:
private string TestCSharp8(int x)
{
return x switch
{
0 => "ZERO",
1 => "ONE",
2 => "TWO",
3 => "THREE",
_ => "OTHER"
};
}
IDE接受此代码,甚至建议在编写“老式” switch
语句时将其重新格式化。但是,当我构建解决方案时,在错误列表中得到以下输出:
但是随后Ouput日志显示以下内容:
当我详细介绍了Ouput的详细信息后查看构建日志时,我看到发生以下错误:
1>C:\VisualStudio\Repos\XXX\YYY\ZZZ\Repositories\ABC.cs(301,5,301,6): error CS1597: Semicolon after method or accessor block is not valid
1>C:\VisualStudio\Repos\XXX\YYY\ZZZ\Repositories\ABC.cs(304,1,304,2): error CS1022: Type or namespace definition, or end-of-file expected
1>Done executing task "Csc" -- FAILED.
1>Done building target "CoreCompile" in project "XYZ.csproj" -- FAILED.
在项目文件中,我已将<LangVersion>
设置为latest
。我们要针对的目标框架是.NET Framework 4.7.1。
奇怪的是,所有这些工作和建立在我们拥有的另一个解决方案中。
所以,有人可以在正确的方向上帮助我,如何解决此问题?目前,我不知道在哪里寻找解决方案。