无法创建未知类型的clr-namespace:仅在一个“TFS构建代理”上

时间:2013-01-18 18:36:09

标签: c# visual-studio-2010 tfs visual-studio-2012 tfs2012

我们的一个TFS Build服务器发生了一些奇怪的事情

这是情景:

我有一个Controller和两个Build服务器,每个服务器有两个代理

  • 如果我排队任何构建强制它在我的构建服务器01上运行,那么构建成功

  • 如果我在构建服务器02上排队相同的构建,则构建失败

错误如下:

  

无法创建未知类型'{clr-namespace:MyNamespace; assembly = MyAssembly} MyClassName'。

这是一个自定义的MSBuild程序集,它以.Net Framework 4.5为目标,在TFS控件版本上检查,控制器指向TFS上的正确路径。

DLL未在6个月内更新

我不明白为什么会这样。更令人不安的是,这个构建服务器昨天正常工作,团队中的任何人都对服务器做了任何事情,他们甚至没有访问权限。

我认为错误是在执行构建工作流之前发生的,这意味着由于某种原因无法加载构建模板,这是有道理的,因为类型无法解析

到目前为止我所做的事情:

  • 昨天上午,构建服务器02运行顺利

  • 我确定我在两个构建服务器上使用相同的构建运行它。这让我觉得构建模板没有问题

  • 我确定我的构建服务器02上的任何构建都失败并出现相同的错误

  • 我测试的所有版本都在01上运行而没有问题

  • 两个构建服务器都在网络上启用,可用和可访问

  • 两个构建服务器都配置了用于运行构建的域帐户

  • 两台服务器都可以访问工作文件夹,而TFS用户可以访问这些服务器

  • 域帐户属于两个构建服务器上的Administrators组

  • 我仔细检查了这些程序集在两个构建服务器上都不在GAC中(我不想把它们放在GAC上,而且我的构建服务器01再次正常工作而不需要放置DLL的在GAC上)

  • 我比较了Windows Update历史记录,两台服务器都在3个月前的同一天更新了

这是我发现的

在我的构建服务器01 上,我发现用于构建的自定义构建DLL位于正确的位置:

C:\Users\MyTFSServiceAccount\AppData\Local\Temp\BuildAgent\24\Assemblies

C:\Users\MyTFSServiceAccount\AppData\Local\Temp\BuildAgent\25\Assemblies

以前的路径需要所有程序集

在我的构建服务器02上,该文件夹只包含一个DLL,由于某些原因没有复制DLL,我检查了文件夹权限,一切看起来都不错,tfsservice帐户有权限文件夹,它是框中的管理员

这些是构建服务器02上的路径

C:\Users\MyTFSServiceAccount\AppData\Local\Temp\BuildAgent\22\Assemblies

C:\Users\MyTFSServiceAccount\AppData\Local\Temp\BuildAgent\23\Assemblies

好吧,我认为手动复制DLL会暂时解决问题....我错了=(我复制了DLL但是我收到了同样的错误

你们能请我指出正确的方向吗?

1 个答案:

答案 0 :(得分:0)

jaja

这就是我讨厌TFS的原因,这就是我喜欢成为软件工程师的原因

在这个问题上花了几乎所有的时间并验证了我想到的一切,最后,似乎最简单的方法总是有效......

我刚刚重启了TFS服务,神奇的一切都开始了......