2011-11-29 51 views
4

在我的teambuild我们用自定义生成过程的活动,这是在TFS 2010 - 自定义生成的活动没有部署

\BuildProcessTemplates\CustomAssemblies\MyActivities.dll 

部署构建控制器被配置为从该路径加载组件。

如果我签入新的程序集,那么teambuild不会自动加载新程序集,而是使用旧程序集。事实上,最新版本的流程模板,似乎使用,因为我得到的错误:如果我重新编译器服务,那么最新的组件被认为是

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

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

+0

将文件签入到由构建控制器监视的源控制路径时,控制器应自动重新启动并获取更改。我不认为你应该手动重新启动它。 – Danny

回答

1

尝试将MyActivities.dll安装到GAC中。我在GAC中拥有所有自定义程序集,但没有发现任何问题。

+1

只有当您需要更新二进制文件时,才会有效吗?他所遇到的问题(我也碰到过)是,构建代理*应该*与源代码控件交谈以将二进制文件更新为最新版本,但由于某种原因,它仅在启动时才执行(重新启动服务器/服务做到了,但这有点太过沉重)。 – superlime

5

终于明白了这一点。几个月来一直让我疯狂。即使您的二进制文件在技术上有所不同(即二进制差异),但代理程序只有在文件版本不同时才会刷新。

所以更具体地说,在我的版本“MyActivities.dll”,我不得不增加我的AssemblyInfo.cs以下两行(旧版本字符串为1.0.0.0):

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

一旦我这样做,我做了一个正常的程序集构建,然后检查了新的二进制文件。代理商在几分钟内刷新了新版本! :d

其他(少真棒)选项,如果你不能因为某种原因更新版本:

  • 入住虚拟文件到同一目录。如果有任何文件从CustomAssemblies目录中添加/删除,它会强制刷新所有文件
  • 将“版本控制路径为自定义程序集:”值更改为某个虚拟值(无所谓),应用新值,然后回到原来的目录。任何时候路径改变,都会强制刷新所有文件

尽管如此,“最佳”解决方案只是更新文件/程序集版本。

+0

感谢您的额外提示。我不得不使用'更改版本控制路径'选项,因为碰撞版本不适合我 –

1

当您将签入文件添加到由您的构建控制器监视的源控制路径时,控制器应该在运行构建时获取最新的dll。

在我的情况下,当我运行构建使用相同的控制器,其中我已经做了一些更改后,在运行构建过程中,控制器会自动重新启动,并且构建失败,说构建过程失败bcoz作为重启操作的一部分,控制器停止

它试图获取最新的DLL,但作为重新启动操作的一部分。

那么,是否有任何条件或方案的控制器重新启动... ???

将MyActivities.dll安装到GAC中。它会做什么以及它如何帮助我解决我的问题。

我跑了构建和获得如下错误....

构建停止,因为编译器“Mycontroller-控制器”是不可达:控制器状态已经被编译服务在1/6改变/ 2014 9:31:14 AM GMT。原因:Service'Mycontroller - Controller'作为重启操作的一部分停止。

我已经做了一些签入到程序集之前,所以我想控制器重新启动获取最新的程序集,所以我得到了这个错误。

这里如何重新启动conroller?是否有其他条件/控制器重新启动的情况?