【问题标题】:Devenv command line switches errorDevenv 命令行切换错误
【发布时间】:2015-02-20 11:49:03
【问题描述】:

我有一个简单的解决方案,其中包含类项目和设置项目(在 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. 运行这个批处理文件,错误级别为零

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

任何建议为什么我会得到不同的行为?

【问题讨论】:

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


    【解决方案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 的任何应用程序都是非常糟糕的形式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2015-04-22
    • 1970-01-01
    • 2014-07-16
    相关资源
    最近更新 更多