1

我正在更新我的 XAML 构建工作流和与之配套的自定义程序集。我在带有测试构建代理的机器上有一个测试构建控制器。

我还想在我的实时构建机器上为这个控制器部署一个测试代理(这是更快的硬件)。

在 Visual Studio 中,如果我转到 Manage Build Controllers 对话框,我可以通过为其提供新版本自定义程序集的路径来配置我的测试控制器。

我的测试控制器和实时控制器具有不同版本的自定义程序集。

我认为构建代理运行的构建服务是一个进程,因此我不确定一个进程是否可以加载自定义程序集的两个不同版本(因为此自定义程序集的实时和测试版本具有相同的名称)。

我可以像这样混合和匹配...在一台机器上构建代理,这些代理注册了不同的控制器,这些控制器本身具有不同版本的自定义程序集?


更新

我找到了这个页面...

http://mohamedradwan.com/2013/01/15/understanding-build-controller-and-build-agent-for-tfs-team-foundation-server/

...它的图表似乎显示了一台机器上的两个代理,这些代理注册了不同的控制器。我仍然不确定它是如何工作的,因为我不确定单个服务是否可以加载自定义程序集的两个不同版本。


更新 2

也许应用程序域允许这个工作?

https://msdn.microsoft.com/en-us/library/2bh4z9hs(v=vs.110).aspx

4

1 回答 1

1

一个构建代理只能有一个构建控制。但是一个构建控件可以在不同的物理机器上拥有多个构建代理。

正如这篇博客所解释的, Build Service是一个 Windows 服务,它只能有一个 Build Controller,只为一个 Team Project Collection 配置,并且根据需要有多个 Build Agent。所以如果一个构建代理可以被两个不同的构建控件控制,它可能同时有两个不同的构建服务,这是不可能的。

因此,博客中的图表显示了一台机器上的两个代理,它们注册了不同的控制器。这两个代理用于两个不同的项目集合。

如果你想分配负载,你只需要在不同的机器上有多个构建代理。您可以参考的详细信息为什么以及何时拥有多个构建代理?

另一种方法是使用在 TFS 2015 和 Visual Studio Team Services 中引入的新构建系统vNext 。它是基于代理的。没有控制器,您可以在一台机器上安装多个代理。

代理在池中分组并存在于服务器级别,甚至允许您跨集合使用它们。

于 2017-01-26T07:55:29.043 回答