devenv 命令行不显示有缺陷项目的错误

Posted

技术标签:

【中文标题】devenv 命令行不显示有缺陷项目的错误【英文标题】:devenv command line does not show error for defective projects 【发布时间】:2012-10-16 07:09:20 【问题描述】:

我们使用 Jenkins 自动构建我们的解决方案。我们通过命令行调用devenv(Visual Studio 2010):devenv PathToProject\Project.sln /build Release

当解决方案包含有缺陷的项目(*.vdproj、*.csproj)时,在 Visual Studio IDE 中打开解决方案将导致出现错误消息。但是在使用上述命令行构建解决方案时,根本没有显示任何错误消息,因此 Jenkins 报告成功。

如果您想重现问题,只需在编辑器中打开 vdproj 文件,然后删除文件中某处的 。

如何解决这个问题?

【问题讨论】:

我知道这显然是您目前面临的一个问题,但您真的经常最终得到损坏的项目文件吗?如何/为什么?你不应该解决这个问题吗? 当然,这种情况不会经常发生。但是持续集成的意义恰恰是应该自动检测到这样的问题。 【参考方案1】:

在 Visual Studio 2012 上,/Out 将构建消息写入文本文件。

devenv.exe YourVisualStudiosolution.sln /build "Debug|Win32" /Out "YourLogFile.txt"

According to MSDN,这个开关应该也适用于 Visual Studio 2010。

【讨论】:

感谢您的提示。 Jenkins 无论如何都会收到输出并使其在构建的“控制台输出”页面上可用,即将输出写入文件只会使事情变得更复杂。 devenv 进程的返回值不会改变,不是吗?这是这里的关键问题 - 在失败的情况下返回失败而不是成功。 唯一的方法是解析 devenv 控制台输出的最后一行,即使用tail 之类的工具显示========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== 的行。 @rwong 另一个烦恼是在一个有 23 个项目的解决方案中,这些信息是不够的;如果它说“22 成功,1 失败”,它并没有说明哪一个失败。

以上是关于devenv 命令行不显示有缺陷项目的错误的主要内容,如果未能解决你的问题,请参考以下文章

linux 命令行不显示路径了,而显示为-bash-4.1#的两种解决办法

DeeplabV3+ 命令行不显示miou的解决

使用 RVM 安装 Ruby 1.9.3 但命令行不显示 ruby​​ -v

通过 Devenv 命令行构建时禁用代码分析

如果程序显示对话框,则终止程序(在 CruiseControl.net 下运行的 devenv.com)

从命令行构建一个VS2003项目而不输出警告