[C#]Visual Studio 2015でC#7.0以降を利用する

Visual Studio 2019のプレビュー版も出そうな時にまだ2015なんて使ってるんですか??奇遇ですね。

Visual Studio 2015を強いられている間に、C#はもう8.0を伺うところまで進歩しています。タプルやらspanやら便利なものや構文が追加されています。しかしVS2015に同梱のC#コンパイラC#6.0までのコードしかコンパイルすることが出来ません・・・。
とはいえ、.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インストールせずにコンパイラを最新にする、 あえて古いバージョンのコンパイラを使う、コンパイラのバージョンを環境問わず一致させる、等の使い方ではバージョンを見極める必要があるでしょう(どうやらこちらが本来の使い方らしいですが)。

インテリセンス

いいことずくめに思えるMicrosoft.Net.Compilersパッケージですが、インテリセンスには適用されません。もともとインテリセンスに利用するコンパイラは別に用意されているらしいので、単純に置き換えできないのかもしれません。
なので、赤線で怒られまくるけどビルドは通る、という状況で使用することになります・・・