2009-10-27 41 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