Visual Studio 2015でC#7を使用する方法


146

Visual Studio 2017(15.x)はC#7をサポートしていますが、Visual Studio 2015(14.x)はどうですか?

C#7をどのように使用できますか?


2
:このリンク参照してくださいstrathweb.com/2016/03/...
スニル・クマール

8
@SunilKumar:VS 15(VS 2017)でそれらを有効にしています。VS 2015(VS 14)については触れていません。
Jon Skeet

回答:


162

NugetパッケージMicrosoft.Net.Compilersをインストールすることにより、C#7対応バージョン用のVisual Studioに同梱されているコンパイラーを置き換えることができます

このパッケージを参照すると、システムにインストールされたバージョンではなく、パッケージに含まれているC#およびVisual Basicコンパイラの特定のバージョンを使用してプロジェクトがビルドされます。

これがVisual Studio 2015で正式にサポートされているかどうかについては、パッケージページで確認できません。これまでの徹底的なテストでは、問題なく機能することを示しています-C#7コードはコンパイルされますが、赤い下線が引かれています構文エラーを示す波線: 新しいC#7値タプル機能を使用スクリーンショットするには、NugetパッケージSystem.ValueTupleもインストールする必要があることに注意してください。


9
その場合は、VIsual Studio Codeを使用するか、単にVisual Studio 2017 Communityをインストールすることをお勧めします
Panagiotis Kanavos '27年

3
これは知っておくと良いことです。したがって、緊急場合に他の開発者コードを操作できること知って一部のプロジェクトをゆっくりとVS2017に切り替えることができます。
2017

10
中規模または大規模企業のVS2017 Community Editionの従業員がライセンシーとしての使用が有効でない可能性がある場合は、理論的には@PanagiotisKanavosに同意します。VS Codeは真のFOSSだと思います。
Chris Marisic

6
Xamarin.Forms UWP、Windows 8.1、およびWindows Phone 8.1プロジェクトに最新のMicrosoft.Net.Compilersナゲット、および最新のSystem.ValueTupleナゲット(およびその他すべてのSystem。*シリーズナゲットの最新リビジョン)をインストールしました。すべてがビルドとランタイムで正常に動作するように見えます。(私はデバッガーの機能セットの
隅々を

13
VS2015.3、.NET 4.7.1用にコンパイル:Microsoft.Net.Compilers is only supported on MSBuild v15.0 and above-このバージョンを使用する必要がありました:nuget.org/packages/Microsoft.Net.Compilers/2.4.0でビルドすると、問題なく動作しました。:)
CADブローク

5

私の場合、Microsoft.Net.Compilersだけをインストールしても機能しませんでした。代わりに、私は次のことをしなければなりませんでした:

  1. プロジェクトにMicrosoft.CodeDom.Providers.DotNetCompilerPlatformをインストールし([ ツール] => [ NuGetパッケージマネージャー] => [ソリューションのNugetパッケージを管理...])、Microsoft.CodeDom.Providers.DotNetCompilerPlatformをインストールします
  2. プロジェクトの最新のMicrosoft.Net.Compilersをインストールします
  3. 使用する最新のC#機能用の他のNuGetパッケージをインストールします。私の場合、私の目標はタプルを使用することでしたので、System.ValueTupleをインストールして問題なく動作しました。

ただし、Visual Studio 2015のデフォルトコンパイラでは認識されていないC#コードは、その下に赤い波線があることに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.