【问题标题】:Why does my TeamCity build fail, eventhough MSBuild has no errors?为什么我的 TeamCity 构建失败,即使 MSBuild 没有错误?
【发布时间】:2015-06-18 10:18:24
【问题描述】:

TeamCity 旨在构建一个 Visual Studio 解决方案,该解决方案可由许多开发人员在本地构建。但是,当 TeamCity 运行构建时,它总是会导致构建失败,即使 MSBuild 没有输出错误:

[08:49:02][步骤 1/1] 进程以代码 1 退出
[08:49:02][步骤 1/1] MSBuild 输出
[08:49:02][MSBuild 输出]
[08:49:02][MSBuild 输出] 183 个警告
[08:49:02][MSBuild 输出] 0 错误
[08:49:02][MSBuild 输出]
[08:49:02][MSBuild 输出] 已用时间 00:01:10.65
[08:49:03][Step 1/1] Step Build solution (Visual Studio (sln)) 失败

为了比较,这些是本地 Visual Studio 中构建输出的最后几行:

54>
54>构建成功。
54>
54>经过的时间 00:00:11.37
==========全部重建:46个成功,0个失败,18个跳过==========

奇怪的是,我在本地找不到显示“进程以代码 1 退出”的行。我已经关闭了每个项目的所有前/后构建事件。我已经在 TeamCity 的整个构建日志中寻找可能的罪魁祸首,但我找不到任何与它以代码 1 退出的原因相关的线索。
有趣的是,构建确实产生了必要的工件,它们是有效的!

为什么我的构建以代码 1 退出?

EDIT 回应 cmets:

  • 相同版本的 msbuild
  • 在命令行中在服务器上运行 msbuild,生成一个 build.log 文件,结果相同“x 警告,0 错误”。 echo %errorlevel% 返回 0。
  • 没有“将警告视为错误”的设置
  • 我会尝试发布以完成输出,但我需要先将其匿名化。

【问题讨论】:

  • 您是否尝试过在 Teamcity 的代理主机上手动构建您的项目?另外,如果您可以从 TC 控制台发布完整的输出,那就太好了。
  • 尝试在本地从命令行使用 msbuild,通过 Visual Studio 运行它可能会得到不同的结果。另外,您确定它与本地和 TeamCity 上运行的 msbuild 版本相同吗?
  • 查看编辑以获取答案

标签: visual-studio msbuild teamcity


【解决方案1】:

我能想到3个问题:

  1. 如果遇到警告,TeamCity 的构建步骤似乎失败了 - 你能检查一下是不是这样吗?

  2. 正如其他人所评论的,请尝试从命令行进行 ms 构建。查看 Team city 调用 msbuild 的确切命令行参数。

  3. 项目本身有设置“将警告视为错误”,但 msbuild 会遵守这些规则。你定制了你的构建吗?如需更多信息,请参阅this

【讨论】:

  • 我怎样才能找出 TeamCity 使用的确切命令行参数?在构建日志中,它调用自己的 TeamCity Bootstrapper
  • @RoelF 您是否得到/找到上述问题的答案?
  • 不,我们早就转向 TFS 构建系统了。