Devenv 命令行切换错误
Posted
技术标签:
【中文标题】Devenv 命令行切换错误【英文标题】:Devenv command line switches error 【发布时间】:2015-02-20 11:49:03 【问题描述】:我有一个简单的解决方案,其中包含类项目和设置项目(在 VS 中安装的扩展:vdproj)。
面临以下奇怪行为:
在 VS2013 中打开解决方案 -> 开始重建 -> 没有错误。
创建一个小批量文件:
CALL "%VS120COMNTOOLS%vsvars32.bat"
DEVENV "D:\Source\Solution.sln" /Rebuild "Debug|Any CPU" 1>NUL 2>&1
IF ERRORLEVEL 1 GOTO Error
IF ERRORLEVEL 0 GOTO Yeah
:Error
COLOR c
Echo.
Echo end %date% - %time%
Echo Failed!
PAUSE
:Yeah
Echo.
PAUSE
运行这个批处理文件,错误级别不为零
现在在批处理文件中将 devenv 操作更改为以下内容:
DEVENV "D:\Source\Solution.sln" /Clean "Debug|Any CPU" 1>NUL 2>&1
DEVENV "D:\Source\Solution.sln" /Build "Debug|Any CPU" 1>NUL 2>&1
运行这个批处理文件,错误级别为零
奇怪的是,如果没有输出重定向,我在运行重建操作激活的批处理时也不会出现任何错误。
任何建议为什么我会得到不同的行为?
【问题讨论】:
【参考方案1】:在第一种情况下,您正在进行重建。在第二种情况下,您正在执行清理和构建。暂时去掉 1>NUL 2>&1 应该就能看到错误是怎么回事了。
您可能会简化一些事情并像这样保存结果。然后,如果需要,您可以在“按任意键继续”之前查看日志文件。
CALL "%VS120COMNTOOLS%vsvars32.bat"
SET "LogFile=%Temp%\BuildLog.txt"
IF EXIST "%LogFile%" DEL /F /Q "%LogFile%"
DEVENV "D:\Source\Solution.sln" /Rebuild "Debug|Any CPU" 1>"%LogFile%" 2>&1
IF ERRORLEVEL 1 (
COLOR c
Echo.
Echo end %date% - %time%
Echo Failed! View log file %LogFile% if you prefer. Then
)
PAUSE
IF EXIST "%LogFile%" DEL /F /Q "%LogFile%"
【讨论】:
已经进行了删除,并且绝对没有显示错误。这就是我在这里发布它的原因。将更新我的问题以突出显示这一点。 ERROR LEVEL 可能只是表明您的命令行是正确/不正确的,可能实际上并不能反映构建的结果。 在执行命令行给定操作时遇到错误时返回错误级别 0 的任何应用程序都是非常糟糕的形式。以上是关于Devenv 命令行切换错误的主要内容,如果未能解决你的问题,请参考以下文章