web-dev-qa-db-ja.com

BuildActivityはToolsVersionを無視します

BuildAgentで継続的インテグレーションビルドを実行していますが、正常に動作しません。最近、コードベースをC#6.0に変更し、プロジェクトをToolsVersion 14に変更しました。

ビルドサーバー(TFS 2012)にVisual Studio 2015をインストールしました。ここでC#6.0コードをチェックインすると、最初のプロジェクトでビルドが失敗します(「$」は予期しないか何かです)

BuildTemplateは「DefaultTemplate.11.1」です。ログファイルを確認すると、ビルドが間違ったcsc.exe(C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Csc.exe)を呼び出します。

スイッチなしでプロジェクトでMSBuild/14.0/Bin/MSBuild実行可能ファイルを起動すると、ビルドは成功します。 TFS BuildAgentがToolsVersionを使用しない理由と、TFS 2012を取得してVisual Studio 2015ソリューションをビルドする方法

MSBuildArgument /tv:14.0を追加しても失敗します。 Visual Studio 2015に同梱されている.NET 4.6 RC Frameworkの一部であるMSBuildのバージョン12を呼び出します。

MSBuildアクティビティのToolsPathを変更すると、ビルドは機能しますが、UnitTestを実行しようとすると箇条書きが表示されます。 「Missing dlls "Microsoft.VisualStudio.TestPlatform.Utilities.dll"例外が発生します。 (VS2012はビルドサーバーにもインストールされます)。

更新:ユニットテストで別のエラーが表示されるようになりました。

TF900548: An error occurred publishing the Visual Studio test results.
Details: 'Method not found:
'System.Collections.Generic.IEnumerable<System.String>
Microsoft.VisualStudio.TestPlatform.Utilities.InferSettingsHelper.MergeRunSettingsAndFindCompatibleSources(Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture
ByRef,
 Microsoft.VisualStudio.TestPlatform.ObjectModel.FrameworkVersion
 ByRef, System.String, System.String,
 System.Collections.Generic.IDictionary`2<System.String,System.Collections.Generic.KeyValuePair`2<Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture,Microsoft.VisualStudio.TestPlatform.ObjectModel.FrameworkVersion>>,
 System.Xml.XPath.IXPathNavigable, System.String ByRef)'.'
33
Console

ビルドテンプレートの内部に毎日住んでいない私たちにとって、ここでそれが私のために働いたステップがあります:

まず、ビルドに関連付けられているテンプレートを見つけます(テンプレートの場所が既にわかっている場合は、いくつかの手順をスキップします)。

  • ビルド定義を右クリックして、_Edit build definition_を選択するだけです

  • Processタブを選択すると、テンプレートの名前が表示されます(カスタマイズしていない場合は、おそらくDefaultTemplateになります)。一番右の_Show details_をクリックして、テンプレートのパスを表示します。

enter image description here

  • チームエクスプローラーの[Home]タブに移動し、[_Source control Explorer_]をクリックします

enter image description here

  • テンプレートファイルを見つけ、ダブルクリックして編集します。このようなグラフィカルビューで表示されます。 _Run MSBuild for Project_が見つかるまでスクロールします

enter image description here

  • このアイテムをクリックすると、すぐにプロパティが表示されます

enter image description here

  • 右側の小さなアイコンをクリックしてください。VisualStudioが爆発してクラッシュする可能性があるため、入力しないでください。

  • 以下を入力してください"C:\Program Files (x86)\MSBuild\14.0\bin"

enter image description here

今、最も重要な部分

私にとって_Run MSBuild for Project_は2か所にありました。

したがって、両方の場所で上記の手順を繰り返し、_.xaml_ファイルをチェックインした後、ビルドが正常に機能しました。

TFSツール内からエージェント/コントローラーをリサイクルする必要がある場合があります。

enter image description here

42
Simon_Weaver

テンプレートの編集msbuildアクティビティのToolPathを「MSBuild/14.0/Bin/MSBuild」に変更します

13
Siva palla

回答を参照してください by Marson

TfvcTemplate.12.xamlビルドプロセステンプレートと/ tv:14.0ビルド引数は私のために働いた。

4
gReX

msbuild arguments /p:VisualStudioVersion=14.0を使用します

0
Siva palla