我在使用MSBuild脚本时遇到问题,因为它正确执行,但在TFS Build Explorer中它会报告失败(红色X图标)。但是,尽管所有构建报告都失败了,但如果我检查日志,它们看起来很好,并以:
结束在项目“TFSBuild.proj”中完成构建目标“EndToEndIteration”。 完成构建项目“C:\ Builds \ EDRM Development \ CI_Development_IW471_UserGroup_CG3 \ BuildType \ TFSBuild.proj”(EndToEndIteration target(s))。
构建成功。 0警告 0错误
Build Explorer究竟用于确定构建脚本是否成功?
脚本本身使用MSBuild扩展包(来自CodePlex)来构建包含40多个VB6项目的解决方案。因此,它可以通过团队构建运行,我已经实现了目标EndToEndIteration,其构建目标为“DependsOnTargets”。 EndToEndIteration是我在脚本中实现的团队构建目标中唯一的一个(它似乎是唯一的强制目标吗?)。
当我从命令行运行脚本时,它也报告成功,因此它只是表明失败的Build Explorer。
为什么会发生这种情况?
答案 0 :(得分:0)
构建的成功取决于以成功模式结束的所有任务(如果一个失败,它可能被视为部分成功构建,但图标仍将保留为具有小绿色成功图标的失败图标:)
尝试查看构建日志,因为看起来,某些预先或过去的运行步骤失败(无法复制等)。最简单的方法是确定问题所在,是从Visual Studio安排构建,每个任务的最大详细级别。
答案 1 :(得分:0)
感谢您的回复。所有任务都以成功结束。
我刚刚找到了解决方案,所以我会在这里添加它。
当我正在构建一个VB6解决方案(包含40多个项目)时,我创建了一个纯粹的msbuild脚本,我最初是从命令行运行的。为了在CI的团队构建中使用它,我添加了一个目标“EndToEndIteration”,因为这是团队构建中新的msbuild脚本的唯一强制目标(即,不是通过TFS的创建构建脚本向导创建的脚本)。这导致上面的问题,即使脚本执行完美,构建资源管理器仍会报告失败。
解决方案是使用TFS向导创建构建脚本(对于任何.Net .sln文件 - 无关紧要 - 将删除对它的引用)。然后获取此tfsbuild.proj文件的副本,并删除与.Net项目相关的详细信息并粘贴到您的msbuild目标中。然后实现目标“CoreCompile”以启动您粘贴的目标。