あなたはおそらくすでにこれを動かしていますが、これは将来誰かを助けるかもしれません。私は最近この質問に出くわしました、そしてそれは私を正しい方向に動かし、そして最終的に解決に至りました。
これに対する別の可能な解決策は、プロジェクトのビルドに使用するMSBuildバージョンを対象とするようにプロジェクトファイルを手動で更新することです。
最近、TeamCityビルドサーバーの更新を実行しましたが、Microsoft Build Tools 2015を既にインストールしています。ビルドサーバー上にすべてが整っていると思い、C#6.0をターゲットとするソリューションがあり、.net 4.6.1をターゲットとするすべてのプロジェクトがありました。あなたと同じように、C#6.0固有のコードを含むすべてが私のローカル環境で問題なくビルドされましたが、私のTeamCityビルドサーバーはどれも好きではありませんでした。
他の人が言ったように、Microsoft.Net.Compilers NuGetパッケージを使用してみました。最新バージョンでは、ビルドサーバーでビルドを実行できましたが、コードをローカルに公開できませんでした(私の要件)。そのNuGetパッケージの以前のバージョンでは公開できましたが、ビルドは機能しませんでした。
最終的に自分のソリューションの各プロジェクトファイルを変更して、C#6.0コードを処理できるMSBuildバージョンを具体的に対象にする必要があることがわかりました。各プロジェクトファイルで、次のような行を見つけました。
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
その行の主要なコンポーネントは、ToolsVersion部分です。プロジェクトファイルのこの行を変更して、次のように読みました。
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
ここでの違いは、バージョン4ではなくバージョン14を対象としたことでした。バージョン14.0はビルドツール2015に対応しています。これを変更することで、TeamCityビルドサーバーは正しいMSBuildバージョンを使用し、C#6.0コードをビルドできました。
また、VS2015が適切に機能せず、ローカルビルドをめちゃくちゃにしたため、4.6.1を使用するために、このTargetFrameworkVersion xmlノードを手動で更新する必要がありましたが、ここでは関係ありません。
私が間違っている場合は誰かが私を訂正してください、しかし参考までに、バージョン番号は次のようになると思います:
4.0 = VS2012
12.0 = VS2013
14.0 = VS2015
15.0 = VS2017
.net 4.7を使用する場合は、ビルドツール2017をインストールし、プロジェクトを14.0ではなく15.0にする必要があると思いますが、これは確認していません。