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) –

相關問題