我有一个简单的解决方案,其中包含类项目旁边的设置项目(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
运行此批处理文件,错误级别为零
奇怪的是,如果没有输出重定向,我也不会在重建动作激活的情况下运行批处理时出现任何错误。
为什么我会采取不同的行为?
答案 0 :(得分:0)
在第一种情况下,您正在进行重建。在第二种情况下,您正在进行清理和构建。暂时删除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%"