web-dev-qa-db-ja.com

C#6.0機能でTFSビルドを実行する

最近、プロジェクトでC#6.0のnameof()演算子の使用を開始しました。さて(チェックイン時に、...)私(またはそれ以上:ビルドエージェント)は、nameof()式が見つからなかったため、プロジェクト(ローカルで正常にコンパイルされていました)のビルドを拒否しました。

ビルドコントローラーとTFSサーバー自体にVS 2015をインストールし始めましたが、役に立ちませんでした。 TFS 2013 Update 5でC#6.0の機能を備えたプロジェクトをビルドするにはどうすればよいですか?

BuildProcessTemplateを編集することはすでに考えていましたが、すべてのビルド定義でデフォルトのテンプレートを使用しており、これが正しい方法であるかどうかさえ知りませんでした。

19
SeToY

"Microsoft Build Tools 2015" をビルドエージェントマシンにインストールして、そのバージョンのmsbuildを使用するようにビルドテンプレートを構成するか、Microsoft.Net.Compilers NuGetパッケージをプロジェクトにインストールします。新しいコンパイラでビルドしたい。

20
Kevin Pilch

TFS 2015でも同じ問題が発生しました。ビルド定義はXAMLビルド定義形式でした-この形式では notは、高度なビルドプロセスパラメータのMSBuild引数に/p:VisualStudioVersion=14.0または15.0を指定した場合でも、C#6機能をサポートします。

代わりに、新しいビルド形式を使用してください。 Visual Studio 2017(はい、TFS 2015でVS 2017を使用できます)では、「ビルド定義」セクションで利用できます(下に古いセクション「XAMLビルド定義」があることに注意してください)。

enter image description here

この方法で新しいビルド定義を作成すると、ビルドステップを作成する必要があるWebサイトが開きます。バイナリファイルが[アーティファクト]セクションに表示されます。残念ながら、XAMLビルド定義を新しい形式に変換する方法が見つからなかったため、ゼロから作成する必要があります。

Visual Studio Buildステップで、「Visual Studio Version」フィールドが「Latest」に設定されていることを確認します。

ヒント:適切なファイルをアーティファクトに取り込むには、Minimatchパターンを定義する必要があります。構文hereを見つけることができます。この例では、展開用のコピーファイルパターンを見つけることができますWebプロジェクト。

1
Matt