我正在嘗試在VS/TFS2010中配置團隊版本。我想MSBuild參數包括以下內容:如何在TFS2010中的MSBuild參數中進行變量替換?
/p:Changeset=BuildDetail.SourceGetVersion
我想MSBuild展開「BuildDetail.SourceGetVersion」。我知道如何通過編輯xaml來做到這一點,但我希望有一種方法可以讓它在沒有需要的情況下工作。有任何想法嗎?
我正在嘗試在VS/TFS2010中配置團隊版本。我想MSBuild參數包括以下內容:如何在TFS2010中的MSBuild參數中進行變量替換?
/p:Changeset=BuildDetail.SourceGetVersion
我想MSBuild展開「BuildDetail.SourceGetVersion」。我知道如何通過編輯xaml來做到這一點,但我希望有一種方法可以讓它在沒有需要的情況下工作。有任何想法嗎?
您需要執行的任務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>
我會使用屬性來計算向大會的路徑,因爲它可能會有所不同,由於開發人員的機器上這將是在Visual Studio下安裝(在我認爲的PrivateAssemblies中)。
由於屬性是從目標執行中動態生成的,因此基於此屬性的任何操作都必須動態計算。基於$(SourceGetVersion)形成全局靜態屬性將不起作用。當然,你可以計算它,然後使用MSBuild任務來運行真實的構建,但是這會變得單調乏味,因爲你需要傳遞其他屬性。如果你想要更好的東西,那麼你最終會在我做的地方重寫Xaml,將它傳遞給MSBuild Action。
我知道你問過關於TFS 2010.
但是,自從TFS 2013有一個非常簡單的方法做到這一點!
只需在您的MsBuild中使用TF_BUILD_SOURCEGETVERSION var,它將從TFS Build傳遞。
請參閱TF_BUILD environment變量僅供參考
您可以在此共享xaml嗎? – Mrchief 2012-09-20 16:32:32