2012-01-18 9 views
2

私はVS/TFS2010でチームビルドを設定しようとしています。私は、MSBuildの引数には、以下を含める:TFS2010のMSBuild引数で変数置換を行う方法は?

/p:Changeset=BuildDetail.SourceGetVersion 

私はMSBuildのは「BuildDetail.SourceGetVersion」を展開したいです。私はxamlを編集してこれを行う方法を知っていますが、私はそれを必要とせずに動作させる方法があることを望んでいます。何か案は?

答えて

6

あなたは、それは変更になる場合がありますので、私は、アセンブリへのパスを計算するためのプロパティを使用したい、と開発者のマシン上にあるため、それがインストールVisual Studioの下になりますTFSのタスク

<UsingTask 
    TaskName="Microsoft.TeamFoundation.Build.Tasks.GetBuildProperties" 
    AssemblyFile="C:\Program Files\Microsoft Team Foundation Server 2010 
     \Tools\Microsoft.TeamFoundation.Build.ProcessComponents.dll" 
    /> 

<Target Name="MyTarget"> 
    <GetBuildProperties 
     TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
     BuildUri="$(BuildUri)"> 
     <Output TaskParameter="BuildNumber" PropertyName="BuildNumber" /> 
     <Output TaskParameter="SourceGetVersion" PropertyName="SourceGetVersion" /> 
    </GetBuildProperties> 
</Target> 

を実行する必要があります(PrivateAssembliesで私は思う)。

このプロパティはターゲット実行から動的に取得されるため、このプロパティに基づいて行う処理は動的にも計算する必要があります。 $(SourceGetVersion)に基づいてグローバルに静的なプロパティを作成することはできません。もちろん、それを計算してからMSBuildタスクを使って実際のビルドを実行することもできますが、他のプロパティを渡す必要があるので面倒です。より良いものをお望みなら、私が行ったところでXamlを書き直してMSBuildアクションに渡します。

+0

ここでxamlを共有できますか? – Mrchief

1

あなたはTFS 2010について尋ねました。
しかし、TFS 2013以降、これを行う方法は非常に簡単です!
MsBuildでTF_BUILD_SOURCEGETVERSION varを使用すると、TFS Buildから渡されます。
参照のためにTF_BUILD environment変数を参照