1

我正在尝试为 TFS 服务器计划构建定义,并且遇到了一个问题/问题,我想在继续之前得到澄清。

这是我们项目设置的简化版本,抱歉我在这台机器上没有 UML 工具:)

解决方案示例

我想要完成的是正确的构建定义,以便:

  1. 如果解决方案 1 有签入,则构建解决方案 1 及其依赖项目 Dependency 项目。
  2. 如果解决方案 2 有签入,则构建解决方案 2 及其依赖项目 Dependency 项目。
  3. 如果 Dependency Project 有签入,则构建解决方案 1 和解决方案 2(带有 Dependency 项目)
  4. 如果完成涉及所有 3 个项目的单次签入(例如),则仅构建解决方案 1 和 2一次

我可能会使用门控签入来防止在构建中断时提交源代码控制。

已经有一段时间了,但我相信当时如果我有 3 个构建定义:

  • 监控解决方案 1 文件夹 - 构建解决方案 1
  • 监控解决方案 2 文件夹 - 构建解决方案 2
  • 监控依赖解决方案文件夹 - 构建解决方案 1 和解决方案 2

这在大多数情况下都有效,但是如果在解决方案 1 和依赖解决方案 IIRC 上都发生了一次签入,则解决方案 1 将被构建两次。

虽然这是一个不便,我不必弄清楚,但很高兴知道如何以正确的方式做到这一点。

4

1 回答 1

5

@Kritner 我建议您从依赖项的输出创建一个 NuGet 包,并将其发布到内部 NuGet 存储库。然后,解决方案 1 和解决方案 2 应依赖于 NuGet 包。

这是在签入新源时触发的一个构建保留。

此时,如果有新版本的依赖项可供您使用,您将在尝试构建任一解决方案时收到通知。Visual Studio 中的开发人员大楼将能够选择现在是否合适。

我建议您在此处停止并允许开发人员在升级时进行选择。但是,您可以走得更远。

如果您使用 MyGet 之类的东西来托管您的依赖项,您可以让它为构建创建触发器。您可以使用 VSO 和服务挂钩来执行此操作,或者您可以编写一些东西来监视新包,然后触发其他构建。如果仅在成功构建和测试后发布包,则可以提高依赖项的质量。

于 2014-07-18T18:13:33.797 回答