【问题标题】:TFS and msbuild version number with last changeset最后一个变更集的 TFS 和 msbuild 版本号
【发布时间】:2010-12-10 11:46:45
【问题描述】:

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

【问题讨论】:

标签: tfs msbuild tfsbuild


【解决方案1】:

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

【讨论】:

  • 对于 VS2010,TfsLibraryLocation 已更改为“$(DevEnvDir)ReferenceAssemblies\v2.0”。此外,$(SolutionRoot) 不是自然存在的,但 $(SolutionDir) 确实存在。
  • TfsVersion 任务似乎不再使用 TFS 2010 来解决这个问题。我在此处发布了 TFS 2010 的答案:stackoverflow.com/questions/11748338/tf-exe-on-tfspreview/…
【解决方案2】:

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

【讨论】:

  • tf changeset /latest /i 获取正确的信息,但如何将其放入属性中?
【解决方案3】:

抱歉,我无法评论最新的答案。

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

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

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

【讨论】:

  • 仅供参考...这将获得 TFS 中的最新变更集,无论您当前在本地文件夹中有什么变更集。
【解决方案4】:

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

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

【讨论】:

    猜你喜欢
    • 2011-03-21
    • 2015-10-11
    • 2014-08-28
    • 2010-12-04
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    相关资源
    最近更新 更多