2017-06-02 89 views
0

我有一個使用.Net 4.0的複雜項目。(目標框架是.Net 4)。.NET 4.0中的C#7.0語言功能編譯錯誤

我使用Visual Studio 2017年編譯源,並用下面的代碼:

if(int.TryParse(inputText, out int x)) 
    StartAnotherMethod(x); 

它successfuly編譯我的電腦上,所以我COMMITED爲構建服務器。

令人驚訝的是,它有編譯錯誤。

錯誤CS1525:無效的表達術語 'INT'

錯誤CS1003:語法錯誤, '' 預計

我檢查它在網上的編譯器。它使用.Net 4.5,並且也顯示編譯錯誤

https://dotnetfiddle.net/pibxC2

編譯錯誤(第9行,列32):無效表達術語 'INT'

編譯錯誤(第9行,列33):;預期

編譯錯誤(第9行,列33):無效表達術語 ')'

編譯錯誤(第9行,列34):;預期

編譯錯誤(第9行,列34):無效表達術語 ')'

編譯錯誤(第9行,列35):;預計

正如我已閱讀,語言功能並不需要新的框架,所以應該沒有任何問題編譯。

我錯過了什麼?

+10

您沒有使用編譯器爲C#7,更改編譯器羅斯林。 – Amy

+0

您的構建服務器使用哪種編譯器?您需要VisualStudio 2017的編譯器來編譯您的項目。 – Tomtom

+0

您的構建服務器使用什麼編譯器?這些功能取決於編譯器的版本,而不是框架的版本。 – juharr

回答

10

您沒有使用C#編譯器7.將編譯器更改爲Roslyn。

這裏關鍵的是可用的語言特性是由編譯器決定的,而不是目標框架。

+0

這裏關鍵的是可用的語言特性是由*編譯器*確定的,而不是目標框架。也許你可以添加到答案? –

+0

當然。感謝您的建議。 – Amy

-1

試試這個

int x; 
if(int.TryParse(inputText, out x)) 
    StartAnotherMethod(x); 
+0

是的,我已經知道答案:)的意圖是使用新功能。 – Nestor