TFS 2010 - 自定义构建活动未部署

4

在我的团队中,我们使用自定义的构建过程活动,这些活动部署在

\BuildProcessTemplates\CustomAssemblies\MyActivities.dll

构建控制器被配置为从该路径加载程序集。

如果我提交了新的程序集,那么团队构建不会自动加载新的程序集,而是使用旧的程序集。实际上,最新的构建流程模板似乎正在使用,因为我收到以下错误:

"TF215097: An error occurred while initializing a build for build definition <myTemplate> Cannot create unknown type <any new type>"

如果我重新启动构建控制器服务,则会考虑最新的程序集。

如何使teambuild自动加载最新的程序集,而不必强制重启控制器?


当您将文件签入到由构建控制器监视的源代码控制路径时,控制器应自动重新启动并获取更改。我认为您不应该手动重启它。 - Danny
2个回答

5

最终我解决了这个问题,这个问题困扰我已经好几个月了。即使二进制文件在技术上是不同的(即二进制差异),看起来代理只有在文件版本不同的情况下才会刷新。

具体来说,在我的"MyActivities.dll"版本中,我必须递增以下两行代码在我的AssemblyInfo.cs中(旧版本字符串为1.0.0.0):

[assembly: AssemblyVersion("1.0.0.1")]
[assembly: AssemblyFileVersion("1.0.0.1")]

一旦我完成了这个步骤,我对程序集进行了正常构建,然后检入了新的二进制文件。代理程序在几分钟内就会使用新版本进行刷新! :D
如果由于某种原因无法更新版本,则可以尝试其他(不太好的)选项:
- 在相同目录下检入一个虚拟文件。如果从CustomAssemblies目录中添加/删除任何文件,则强制刷新所有文件。 - 更改“自定义程序集的版本控制路径:”值为某个虚拟值(无论在哪里),应用新值,然后再更改回原始目录。每次路径更改时,都会强制刷新所有文件。
但是,“最佳”的解决方案仍然是更新文件/程序集版本。

谢谢你的额外提示。我不得不使用“更改版本控制路径”选项,因为仅仅升级版本对我来说行不通。 - David Gardiner

1
尝试将MyActivities.dll安装到GAC中。我把所有的自定义程序集都放在GAC中,并没有注意到任何问题。

1
这只能在需要更新二进制文件之前起作用,对吧?他遇到的问题(我也遇到过)是构建代理应该与源代码控制进行通信,以将二进制文件更新为最新版本,但由于某种原因它只在启动时执行此操作(重新启动服务器/服务可以解决问题,但这有点过于粗暴)。 - superlime

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接