Visual Studio 2019のプレビュー版も出そうな時にまだ2015なんて使ってるんですか??奇遇ですね。
Visual Studio 2015を強いられている間に、C#はもう8.0を伺うところまで進歩しています。タプルやらspan
とはいえ、.NetFramework4.7以降同梱のコンパイラ(csc.exe)ならばC#7.0のコードもコンパイルできるはずです。なんとかVS2015のコンパイラを差し替えられないものでしょうか・・・
Microsoft.Net.Compilers
www.nuget.org
こちらのパッケージをインストールすると、その悩みを解決することが出来ます。
これはMicrosoftのRoslynチームがリリースしているもので、このパッケージをインストールしたプロジェクトをビルドするときに使用するコンパイラをパッケージ内臓のものを使うようにするものです。
まさにVS2015のC#コンパイラを差し替えてくれます。
ちなみに、このパッケージC#だけでなくVBにも同じ効果をもたらします。
しかし、このパッケージはコンパイラを差し替えるだけのため、ターゲットフレームワークによっては実装が無く使えない機能がいくつかあります。
ValueTuple
タプルを扱うにはValueTuple構造体等が必要ですが、これは.Net4.7以降にしか含まれていません。しかし、同名同機能のクラスを自前で用意すれば同じように使うことが出来ます。そして、そのような実装がMicrosoftから提供されています。
www.nuget.org
System.Memory
同じ理由でSpan構造体関連の機能を使うにはSpanの実装が必要です。こちらも提供があります。
www.nuget.org
パッケージバージョンとC#バージョンの対応
パッケージバージョン | C#バージョン |
---|---|
1.x | 6.0 |
2.0 | 7.0 |
2.1 | 7.0 |
2.2 | 7.0 |
2.3 | 7.1 |
2.4 | 7.2 |
2.6 | 7.2 |
2.7 | 7.2 |
2.8 | 7.3 |
2.9 | 7.3 |
バージョンが被っているものはバグ修正です。新しいバージョンが使いたい場合は最新をインストールすればいいと思われます。CIサーバ等にVSインストールせずにコンパイラを最新にする、 あえて古いバージョンのコンパイラを使う、コンパイラのバージョンを環境問わず一致させる、等の使い方ではバージョンを見極める必要があるでしょう(どうやらこちらが本来の使い方らしいですが)。