【问题标题】:Cannot create unknown type clr-namespace: ONLY on one "TFS build agent"无法创建未知类型的 clr 命名空间:仅在一个“TFS 构建代理”上
【发布时间】:2013-01-02 13:06:13
【问题描述】:

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

这是场景:

我有一个控制器和两个构建服务器,每个服务器有两个代理

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

  • 如果我在 Build server 02 上对相同的构建进行排队,构建会失败

错误如下:

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

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

DLL 有 6 个月没有更新了

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

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

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

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

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

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

  • 我测试过的所有构建都在 01 上运行,没有问题

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

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

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

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

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

  • 我比较了 Windows 更新历史记录,两台服务器都在同一日期更新,比如 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 但我收到了同样的错误

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

【问题讨论】:

  • 如果这样的事情突然发生,我首先要仔细检查诸如 MS 更新之类的事情。也许这是昨天在构建服务器 02 上运行的,但不是在 01 上运行的?
  • 我会更新问题,我刚刚检查了 Windows 更新日志,它们是相同的,最后一次安装更新是 3 个月前

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


【解决方案1】:

jaja

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

在这个问题上花了几乎一整天的时间并验证了我脑海中闪过的一切之后,最后,似乎最简单的方法总能奏效......

我刚刚重新启动了 TFS 服务,神奇地一切又开始工作了......

【讨论】:

    猜你喜欢
    • 2011-09-03
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 2015-04-20
    • 1970-01-01
    相关资源
    最近更新 更多