【问题标题】:Irregular build errors in TFS 2015 (missing assembly)TFS 2015 中的不规则构建错误(缺少程序集)
【发布时间】:2016-08-08 21:55:21
【问题描述】:

我们已经设置了带有构建服务器的 TFS (2015),并且有几个构建的解决方案(一些是手动的,另一些是自动的)。

有时构建会莫名其妙地失败,有很多错误表明缺少程序集,如下所示:

The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

要修复它,我只需要再次排队构建。无需编辑,无需签入,只需“排队新构建”即可成功构建。

它可能发生在手动构建、自动构建、单个构建或构建多个解决方案时。我看不出任何可识别的模式来解释为什么会发生这种情况。我不认为这是一个 nuget 问题,因为当构建服务器在下载 nuget 包时失败时,我们会看到不同的错误(此外,nuget 是否甚至用于下载 System.Runtime?我假设该库在服务器上很容易获得?)

正如我所说,解决这个问题很容易,但我们正在使用持续集成和自动部署 (Octopus) 来简化我们的发布周期,当构建错误蜂鸣器开始响起时,这些“假”错误非常烦人。

【问题讨论】:

  • 您使用的是新的基于 Web 的构建系统还是旧的 XAML 构建系统?
  • 你在使用多个构建服务器吗?
  • 所以对你的构建脚本/解决方案等一无所知,这是一个疯狂的猜测,但由于这是随机的,所以很有可能。您是否启用了 MSBUILD 并行编译?如果是,您是否在解决方案文件中正确定义了所有项目依赖项?如果启用了并行构建(MSBUILD /m 或 /maxcpucount 开关)并且如果您没有正确定义依赖项,则依赖项目有可能比它的依赖项之一更早构建。
  • @Isaiah4110 我在 UI 中看不到并行构建的任何选项,并且构建参数中没有 cpucount 或并行度的开关,所以我不得不假设我们没有在并行,除非默认开启我们使用基于 Web 的构建系统,并且我们有多个构建服务器
  • 你能分享你的构建步骤吗?错误会出现在哪一步?

标签: tfs build


【解决方案1】:

尝试将 'MSBuild Arguments' 设置为 /m:1 以强制 MSBuild 对所有项目使用单个进程,看看是否有帮助。

【讨论】:

    【解决方案2】:

    正如预期的那样,问题是人为错误。所有可用的构建代理都已添加到此特定解决方案的池中,其中一个代理没有安装 .Net Framework 4.5.2。
    代理已从池中删除,如果我从系统管理员是正确的,那么错误现在应该停止发生。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-31
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      相关资源
      最近更新 更多