TFS和msbuild版本号以及最后一个变更集

TFS和msbuild版本号以及最后一个变更集,tfs,msbuild,tfsbuild,Tfs,Msbuild,Tfsbuild,我想创建一个看起来像Major.minor.Date.LastChangeSetInTFS的内部版本号,问题是如何从TFS中获取最后一个变更集号。是否有任何属性或其他内容???根据对的注释,您可以使用命令行 tf changeset/latest/i,但我无法在家里验证这一点。查看以下扩展项目。你会找到5种不同的方法来解决你的问题 -积极维护,此扩展提供280多项任务 -自2007年以来未维护,这组约90个任务仍有一些独特的任务,即基于平面文件的版本任务 -自2008年8月以来未维护,此扩展已

我想创建一个看起来像Major.minor.Date.LastChangeSetInTFS的内部版本号,问题是如何从TFS中获取最后一个变更集号。是否有任何属性或其他内容???

根据对的注释,您可以使用命令行
tf changeset/latest/i
,但我无法在家里验证这一点。

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

  • -积极维护,此扩展提供280多项任务
  • -自2007年以来未维护,这组约90个任务仍有一些独特的任务,即基于平面文件的版本任务
  • -自2008年8月以来未维护,此扩展已被吸收到MSBuild扩展包中。如果您在MSBuild扩展包中找不到某些东西,请查看此扩展包,它包含300多个任务,很可能会满足您的需要

    • 好的,我终于找到了解决办法。下面的任务将为您提供最新的变更集编号,并创建一个属性以将其插入到程序集信息生成编号中。主要问题在于缺少TfsLibraryLocation属性(没有它,它应该指向GAC中的库,但它没有)

      
      

      对不起,我不能对最新的答案发表评论

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

      如果您在
      $(SolutionRoot)\subdir
      中有更新的内容,则提供的解决方案将不起作用,因为它将为您提供
      $(SolutionRoot)
      中的最新内容,而不是您想要的
      $(SolutionRoot)\subdir


      我使用了
      tf changeset/latest/I
      ,它对我来说运行良好。

      对于VS2010,TfsLibraryLocation已更改为“$(DevEnvDir)ReferenceAssemblies\v2.0”。另外,$(SolutionRoot)自然不存在,但$(SolutionDir)存在。使用TFS 2010,TFS版本任务似乎不再适用于此。我在这里发布了TFS 2010的答案:这已经得到了回答,请看:@Burt链接的问题/答案是关于自动生成的TFS BuildNumber,它与变更集编号完全不同。仅供参考。。。这将获取TFS中的最新变更集,而不管您当前在本地文件夹中有什么变更集。
      tf changeset/latest/i
      获取正确的信息,但如何将其放入属性中?
      <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)" />