带有最后一个变更集的TFS和msbuild版本号

时间:2009-10-27 13:33:08

标签: tfs msbuild tfsbuild

我想创建一个类似于Major.minor.Date.LastChangeSetInTFS的内部版本号,问题是如何从TFS获取最后一个变更集编号。有没有财产,或什么?

4 个答案:

答案 0 :(得分:11)

好的,我终于找到了解决方案。这是一个任务,它将为您提供最新的变更集编号,并创建一个属性以将其插入到汇编信息版本号中。主要问题是缺少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)" />

答案 1 :(得分:2)

根据对this page的评论,您可以使用命令行 tf changeset /latest /i但我无法在家验证。

答案 2 :(得分:1)

抱歉,我无法对最新答案发表评论。

您提供的表单中的TfsVersion任务只会在$(SolutionRoot)中为您提供最新的变更集编号。

如果您在$(SolutionRoot)\subdir中有更新的内容,则所提供的解决方案将无效,因为它会向您提供$(SolutionRoot)的最新信息,而不是您想要的$(SolutionRoot)\subdir信息。

我使用tf changeset /latest /i,它对我来说很好。

答案 3 :(得分:0)

查看以下扩展项目。您将找到解决问题的5种不同方法。

  • MSBuild Extension Pack - 积极维护,此扩展程序提供超过280个任务
  • MSBuild Community Tasks Project - 自2007年以来未维护,这组约90个任务仍然有一些独特的任务,即基于平面文件的版本任务
  • SDC Tasks Library - 自2008年8月以来未维护,此扩展已被MSBuild扩展包吸收。如果你在MSBuild扩展包中找不到的东西,请查看这个,其中300多个任务的组合可能性,它可能有你需要的。