web-dev-qa-db-ja.com

インライン変数宣言がコンパイルされていません

Visual Studio 2017で、特にIDE0018 Variable declaration can be inlined.

したがって、Visual Studio 2017リリースノートに記載されている方法でインライン変数宣言を使用しようとしましたが、プロジェクトをコンパイルできません。

エラーメッセージは表示されませんが、出力には「Rebuild All failed..... error CS1525: Invalid expression term 'int' "

エラーは出力にのみ表示され、エラーリストの実際のエラーとしては表示されません。

失敗している私が使用しているコードの実際の例を次に示します。

if (int.TryParse(ExpYear, out int IExpYear))
  {
    if (IExpYear < DateTime.Now.Year || IExpYear > DateTime.Now.AddYears(10).Year)
    {
      e += "Expiration Year is invalid.\n";
    }
  }
  else
  {
    e += "Expiration Year is not a number.\n";
  }

変更を元に戻すと、期待どおりにコンパイルされます。何とかc#7コンパイラを使用していない可能性はありますか?

ありがとうございました。

更新:ビルド>詳細設定で言語設定を見つけ、C#7.0に設定しました。プロジェクトをビルドすると、次のエラーが表示されます。

CSC:エラーCS1617:/ langversionのオプション「7」が無効です。 ISO-1、ISO-2、デフォルト、または1〜6の範囲の整数でなければなりません。

41
prudan

v2.0.0-rcMicrosoft.Net.Compilers nugetパッケージをインストールすることでこれを解決できました。以前にインストールされたバージョンは1.3.2のみでした。

インストールされたコンパイラがこれをサポートしていなかった場合、なぜインテリセンスとコンパイラエラーが表示されるのか、私はまだ理解していません。

38
prudan

上記の答えがうまくいかない場合は、私にとってはうまくいかなかったため、次のようにします:

Csprojファイルを開き、アップグレード後にファイルで参照されている次のパッケージがあるかどうかを確認し、ある場合は削除します。

<Import Project="packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props" Condition="Exists('packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" />

次に、「Project ToolsVersion」を確認します。 15.0でなければなりませんが、おそらく14.0なので、変更する必要があります。

<Project ToolsVersion="15.0" .../>

次に、ソリューションをリロードするだけで準備完了です。 [プロジェクトのリロード]を選択すると、エラーが表示され、ロードされないことに注意してください。

15

最新リリースのC#コンパイラの使用を設定するには:

Visual Studio(私はVisual Studio 2017を使用しています)で、プロジェクトを右クリックして[プロパティ]を選択します

左側のメニューバーで[ビルド]タブを選択します

[ビルド]ウィンドウの右下隅にある[詳細設定...]ボタンをクリックします。

[全般]の下の[言語バージョン]の右側にあるリストボックスで、[C#最新マイナーバージョン(最新)]を選択します。

また、Visual Studio Installerを使用して、Visual Studio IDEを最新の状態に保つようにしてください。

0
BoiseBaked