代码基于 vs 2017 但不是 vs 2015

Code builds on vs 2017 but not in vs 2015

在 Visual Studio 2017(目标框架 .NET 4.5,vs + resharper)构建和测试我的解决方案后,我 运行 在生产环境中使用 Visual Studio 2015(相同的目标框架) ).

在这种情况下,我在尝试构建它时收到 语法错误

例如:

public double Frequency
{
    get => _frequency;
    set 
    {
        if (value > 0)
            _frequency = value;
    }
}

在 VS 2015 中我得到:

"{ or ; expected"

为什么会这样?

您用于 get 定义的特定功能(表达式体成员)特定于 C# 7.0 版,as detailed here

所以你的代码没有编译的原因是因为 VS 2015 使用 C# 6.0 而 VS 2017 使用 C# 7.0。

您可以将 get 声明更改为以下内容,以使其与 C# 6.0 兼容,并将在 VS 2015 中构建:

get { return _frequency; }

尽管我从未尝试过,,但如果您愿意,似乎可以将 C# 7.0 与 Visual Studio 2015 结合使用。那么理论上您应该能够在不进行任何更改的情况下编译您的代码。