Visual Studio 2019项目升级到C#8构建失败

问题描述 投票:0回答:2

对于我们的一个项目,我们正在尝试升级以使用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语句时将其重新格式化。但是,当我构建解决方案时,在错误列表中得到以下输出:enter image description here

但是随后Ouput日志显示以下内容:

enter image description here

当我详细介绍了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。

奇怪的是,所有这些工作建立在我们拥有的另一个解决方案中。

所以,有人可以在正确的方向上帮助我,如何解决此问题?目前,我不知道在哪里寻找解决方案。

c# visual-studio-2019 c#-8.0
2个回答
2
投票

docs

。NET Core 3.x和。NET Standard 2.1支持C#8.0。

And

C#8.0(及更高版本)仅在.NET Core 3.x和更高版本上受支持。许多最新功能需要.NET Core 3.x中引入的库和运行时功能。

0
投票
我找到了有助于解决此问题的答案。就我而言,我还必须将Microsoft.Net.Compilers软件包也更新为最新版本。现在,它的构建没有任何错误。
© www.soinside.com 2019 - 2024. All rights reserved.