1

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

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

例如:

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

在2015年VS我得到:

{或;预计

为什么会出现这种情况?

回答

4

您用于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; } 

虽然我从来没有尝试过,after a quick look around the web,如果您愿意使用Visual Studio 2015,那么您可能会使用C#7.0。那么你理论上应该能够编译你的代码而不做任何改变。

+1

好的,但为什么会发生这种情况? –

+1

@MassimoVariolo:我已经编辑过了,我会尽快添加更多信息......我只想先仔细检查几件事情 – musefan

+0

即使它是相同的框架C#7在独立于框架的Roslyn编译器上运行(kind of) –