【问题标题】:How to isolate TFS build agents to build with different versions of VS?如何隔离 TFS 构建代理以使用不同版本的 VS 构建?
【发布时间】:2015-10-16 20:11:45
【问题描述】:

我们有一个带有四个构建代理的 TFS 构建控制器。我们还在所有四个构建代理上都有 VS 2013 来构建我们的 VS 2013 项目。我们现在需要开始使用 VS 2015 构建新项目。我们已经注意到一些 VS 2013 项目无法使用 VS 2015 在 TFS 构建代理上构建,因此我们需要找到一种方法来隔离构建代理与 VS 2015并且仅使用 VS 2015 在 TFS 构建代理上构建基于 VS 2015 的项目,而不影响 VS 2013 项目。仅使用一个 TFS 构建控制器如何做到这一点?我们是否需要在同一 TFS 服务器上创建第二个构建控制器来处理 VS 2015 构建?我已经读过这可以完成(在同一 TFS 服务器上有多个构建控制器),但 MS 不支持这种情况。

【问题讨论】:

  • 您是否尝试使用标签构建代理?
  • 嗯..还没有尝试构建代理标签。因此,假设我为具有 VS2015 的构建代理之一添加了一个名为“VS2015”的标签,然后将“VS2015”标签添加到需要 VS2015 的新项目的构建定义中。非 VS2015 项目呢?如果 VS2013 项目的构建定义没有“VS2015”标签,他们会不会将构建代理与 VS2015 一起使用并使用其他构建代理?这就是想要的结果。
  • 我建议也使用 VS2013 标签;这样你就可以避免记住“无标签”构建定义在做什么
  • 谢谢!你和 Daniel Mann 提供了一些关于如何通过构建定义处理这个问题的好技巧。希望避免更新我们的许多构建定义,但可能不得不走这条路以避免设置另一个构建控制器和构建代理。

标签: visual-studio tfs tfsbuild


【解决方案1】:

为此,您不需要单独的控制器或代理。您可以通过在构建定义中传递 MSbuild 参数来明确指定 Visual Studio 版本和 MSbuild 版本。

视觉工作室

/p:VisualStudioVersion=12.0 将强制它使用 VS 2013。

/p:VisualStudioVersion=14.0 将强制它使用 VS 2015。

MSBuild

/tv:12.0 将强制 MSBuild 使用 VS 2013 版本。

/tv:14.0 将强制 MSBuild 使用 VS 2015 版本。

【讨论】:

  • 我们希望尽可能避免使用此选项,因为我们有几十个 VS2013 项目,我们必须更新其构建定义以支持构建几个 VS2015 项目。最终 VS2013 项目可能会转换为 VS2015,但那是以后的事情了。
  • VS2015项目只需要这样做
  • 我们希望 VS 2013 项目完全避免将构建代理与 VS 2015 一起使用,那么我们是否还需要更新 VS2013 构建定义?
  • 我的意思是,您可以完全避免使用单独的构建代理,只需并排安装 2013 和 2015。如果您使用的是 TFS2013 构建过程模板,则所有内容都将默认为 VS2013。然后,您可以在适当的情况下使用 MSbuild 参数强制 VS2015。
  • 我明白你在说什么,但是我们在使用 VS2015 的机器上构建 VS2013 项目时遇到的问题之一是由于 .NET 4.6,它破坏了我们使用 Fakes 程序集的构建。这也是我们需要将 VS2015 代理与 VS2013 项目隔离的原因之一。
猜你喜欢
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-21
相关资源
最近更新 更多