2009-10-27 39 views
15

我想創建一個看起來像Major.minor.Date.LastChangeSetInTFS的內部版本號,問題是如何從TFS獲取最後一個更改集編號。有沒有任何財產,或什麼?TFS和帶有上次更改集的msbuild版本號

+0

這已經回答了,看看:http://stackoverflow.com/questions/545566/aligning-assembly-version-numbers-with-tfs-buildnumber – Burt 2009-10-27 13:53:30

+0

@Burt鏈接的問題/答案是有關自動生成的TFS BuildNumber,它與變更集號完全不同。 – makhdumi 2015-10-14 22:22:54

回答

10

好了終於我找到了解決方案。這是一個任務,它將爲您提供最新的變更集編號,並創建一個屬性以將其插入程序集信息內部版本號中。主要的問題是缺少TfsLibraryLocation屬性(如果沒有它,它應該在GAC是指向庫,但是事實並非如此)

<Target Name="GetVersionChangeSet"> 
<TfsVersion 
    TfsLibraryLocation="C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies"  
    LocalPath="$(SolutionRoot)"> 
    <Output TaskParameter="Changeset" PropertyName="ChangesetNumber"/> 
</TfsVersion> 
<Message Text="TFS ChangeSetNumber: $(ChangesetNumber)" /> 

+3

對於VS2010,TfsLibraryLocation已更改爲 「$(DevEnvDir)ReferenceAssemblies \ v2.0」。此外,$(SolutionRoot)自然不存在,但$(SolutionDir)不會。 – 2011-03-17 20:32:08

+1

TfsVersion任務似乎不再適用於使用TFS 2010的此任務。我已在此發佈TFS 2010的答案:http://stackoverflow.com/questions/11748338/tf-exe-on-tfspreview/12923581 – 2012-10-16 21:29:47

2

根據對this page的評論,您可以使用命令行 tf changeset /latest /i但我無法在家中驗證。

+0

'tf changeset/latest/i'獲得正確的信息,但如何將它放入一個屬性? – 2015-09-24 06:05:17

0

查看下列擴展項目。你會發現大約5種不同的方式來解決你的問題。

  • MSBuild Extension Pack - 積極維護,這個擴展提供超過280個任務
  • MSBuild Community Tasks Project - 不保持自2007年以來,這套〜90級的任務還是有一些獨特的任務,即平面文件爲基礎的版本任務
  • SDC Tasks Library - 自2008年8月以來未進行維護,此擴展已被吸收到MSBuild擴展包中。如果在MSBuild擴展包中找不到任何東西,請檢查這一個,它的300多個任務組合可能會有你需要的。
1

對不起,我不能在最新的答案發表評論。

您提供的表單中的TfsVersion任務只會爲您提供$(SolutionRoot)中的最新更改集編號。

如果你有什麼在$(SolutionRoot)\subdir更新,所提供的解決方案是行不通的,因爲它會給你從$(SolutionRoot)最新的,而不是從$(SolutionRoot)\subdir,你會一直想。

我使用tf changeset /latest /i,它適用於我。

+0

僅供參考...這將獲得TFS中的最新變更集,而不管您當前在本地文件夾中有哪些變更集。 – 2012-07-18 00:45:47