1

ソース ツリーのルートを参照するために、インクルード パスで $(ProjectRoot) 変数を使用する従来のプロジェクト ファイルが山ほどあります。ビジュアル スタジオ環境で変数を定義して、デスクトップ ビルドが使用中の tfs ワークスペースへの道を見つけられるようにします。

tfs ビルド定義の MSBuild コマンド ライン オプションを使用して、チーム ビルド環境でこの変数を定義したいと考えていますが、うまくいく方法が見つからないようです。変数のリストを含む回答(TFSがビルドスクリプトに渡すmsbuildプロパティのリスト)を見つけ、SolutionRootは有望に見えました。

ビルド定義に を入れる/p:ProjectRoot=$(SolutionRoot)MSBuild Arguments、ProjectRoot は空になります。私はそれを次のように展開したい D:\Builds\18\TfsProject\BuildDef\src\

チーム ビルドでワークスペース ソースのルートの値を使用して変数を定義する方法はありますか?

注: TFS2010 でこれを理解しようとしましたが、最終的には BuildProcessTemplate をあきらめて変更し、そのコンテキスト内で使用できる SourcesDirectory 変数を使用して変数を定義しました。TFS2013 で新しいテンプレートを変更せずに使用することを期待して、もう一度試してみようと思いましたが、まだ困惑しています。

UPDATE :逆参照している変数が実際に msbuild に渡されている場合、MSBuild 引数にあった構文が機能することがわかりました。私が参照する他の投稿のリストは、もはや有効ではないようです。詳細なチーム ビルド ログを見ると、チーム ビルドで msbuild に渡される変数は、OutDir、BuildId、BuildLabel、BuildTimestamp、BuildSourceVersion、BuildDefinition だけのようです。現在の msbuild スクリプトがビルド時に必要とする情報はどれも得られないため、すべてのプロジェクト ファイルを作り直すか、これまで使用してきた BuildProcessTemplate の変更を続行するかのどちらかで行き詰まっています。ここで誰かがより良い答えを出さない限り。

4

2 に答える 2

4

/p:ProjectRoot=$(TF_BUILD_SOURCESDIRECTORY)TFS2013 を使用する場合、ビルド定義の MSBuild 引数で指定できるはずです。

詳細については、Team Foundation ビルド環境変数のドキュメントを参照してください。

于 2014-11-07T00:08:30.350 に答える