ソース ツリーのルートを参照するために、インクルード パスで $(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 の変更を続行するかのどちらかで行き詰まっています。ここで誰かがより良い答えを出さない限り。