Devenv命令行切换错误

时间:2015-02-20 11:49:03

标签: batch-file visual-studio-2013 devenv

我有一个简单的解决方案,其中包含类项目旁边的设置项目(VS:vdproj中安装的扩展)。

面对奇怪的行为,执行以下操作:

  1. 在VS2013中打开解决方案 - >启动重建 - >没有错误。

  2. 创建一个小批处理文件:

    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
    
  3. 运行此批处理文件,错误级别不为零

  4. 现在在批处理文件中将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
    
  5. 运行此批处理文件,错误级别为零

  6. 奇怪的是,如果没有输出重定向,我也不会在重建动作激活的情况下运行批处理时出现任何错误。

    为什么我会采取不同的行为?

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%"