【问题标题】:How to increment assemby versions on TFS only if they've changed?仅当它们已更改时,如何在 TFS 中增加程序集版本?
【发布时间】:2016-05-01 13:51:19
【问题描述】:

场景

我想通过将变更集编号附加到程序集版本来自动化 tfs 2013 构建服务器上的程序集版本控制。棘手的要求是,我只想更改自上次构建以来已更改的那些程序集的版本(项目目录中的任何源文件都已更改)。

理想情况下,我希望避免自定义 xaml 工作流或将任何插件安装到 tfs 中。

我有什么

到目前为止,我有自定义 build.proj(msbuild 项目),我从 version.txt 中读取版本(例如 2.5.0)并在末尾附加变更集编号。然后我替换每个 AssemblyInfo 中的 AsseblyVersion 属性,构建解决方案,创建 nuget 包并构建它们。


显然,我需要将程序集版本存储在某个地方。它应该在源代码控制中吗?还是构建服务器上的一些本地缓存?基本上,我的私人 nuget 服务器上也有这些信息,因为 nugets 包含版本,因此也包含变更集编号。

我需要什么

如何仅更改自上次构建以来已更改的程序集的版本? 我需要任何建议,不胜感激。

【问题讨论】:

  • 你的解决方案下有多少个项目?
  • 10-20。未来可能会增长

标签: tfs build msbuild continuous-integration tfsbuild


【解决方案1】:

您需要使用构建脚本来实现您想要的。您可以检查ApplyVersionToAssemblies.ps1 并将您自己的逻辑添加到脚本中,以比较最新构建和先前构建之间更改了哪个项目,然后确定在构建期间更改了哪些程序集。

【讨论】:

    【解决方案2】:

    我在一系列帖子(firstsecondthird)中详细描述了 MSBuild/TFS 技术。有一些缺点,最重要的是程序集的版本号保存在构建服务器上;如果您丢失了机器,您必须手动恢复号码。

    之所以有效,是因为 MSBuild 足够聪明,可以仅重建更改的内容,您只需要在此过程中找到合适的挂钩即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-23
      • 2023-03-22
      • 2013-08-11
      • 2010-09-18
      • 2013-05-16
      • 1970-01-01
      • 2017-12-21
      相关资源
      最近更新 更多