2017-06-02 10 views
0

私は.Net 4.0を使用する複雑なプロジェクトを持っています。(ターゲットフレームワークは.Net 4です)。C#7.0言語機能が.NET 4.xでコンパイルエラー

私はソースをコンパイルするためのVisual Studio 2017を使用して、次のコードを使用:私はビルドサーバー用にコミットように、それは私のコンピュータ上でsuccessfulyコンパイル

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

を。

驚いたことに、コンパイルエラーが発生しました。

エラーCS1525:無効な表現の用語「int型

エラーCS1003:構文エラー、 '' 私はオンラインのコンパイラでそれを確認し

を期待。 .Net 4.5を使用し、はコンパイルエラーも表示します。

https://dotnetfiddle.net/pibxC2

コンパイルエラー(線9、COL 32):無効発現用語 'INT'

コンパイルエラー(線9、COL 33)。無効発現用語 ')'

コンパイルエラー(線9、COL 34):

コンパイルエラー(線9、COL 33)期待。無効発現用語 ')'

コンパイルエラー(線9、COL 35):

コンパイルエラー(線9、COL 34)期待。私が読んでてきたように、言語機能が新しいフレームワークを必要としないので、それは問題なくコンパイルする必要

を期待。

私は何を欠席しましたか?

+10

を試してみてください。 – Amy

+0

あなたのビルドサーバはどのコンパイラを使用していますか?プロジェクトをコンパイルするには、VisualStudio 2017のコンパイラが必要です。 – Tomtom

+0

あなたのビルドサーバはどのコンパイラを使用していますか?これらの機能は、フレームワークのバージョンではなく、コンパイラのバージョンによって異なります。 – juharr

答えて

10

C#7ではコンパイラを使用していません。コンパイラをRoslynに変更します。

ここで重要なことは、使用可能な言語機能がターゲットフレームワークではなくコンパイラによって決定されることです。

+0

ここで重要な点は、利用可能な言語機能がターゲットフレームワークではなく*コンパイラ*によって決まることです。おそらくあなたはそれを答えに加えることができますか? –

+0

確かです。提案していただきありがとうございます。 – Amy

-1

あなたはロスリンにC#7.変更コンパイラのコンパイラを使用していないこの

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

ええ、私はすでにその答えを知っていた:)その意図は、新しい機能を使用することでした。 – Nestor

関連する問題