Visual studio 2010 建造后事件VS 2010”一文;不合格;,但事实并非如此';T

Visual studio 2010 建造后事件VS 2010”一文;不合格;,但事实并非如此';T,visual-studio-2010,post-build-event,Visual Studio 2010,Post Build Event,我在VS2010中有一个相对简单的构建后事件,只有两个拷贝操作 复制操作的输出显示它们已经成功,我已经检查了目录,文件副本工作正常 VS告诉我构建失败了,但没有告诉我为什么。。。下面是确切的输出: 1>PostBuildEvent: 1> Description: Copying Library to Animation-Calibrator 1> 1 file(s) copied. 1> 1> ----------------------

我在VS2010中有一个相对简单的构建后事件,只有两个拷贝操作

复制操作的输出显示它们已经成功,我已经检查了目录,文件副本工作正常

VS告诉我构建失败了,但没有告诉我为什么。。。下面是确切的输出:

1>PostBuildEvent:
1>  Description: Copying Library to Animation-Calibrator
1>          1 file(s) copied.
1>  
1>  -------------------------------------------------------------------------------
1>     ROBOCOPY     ::     Robust File Copy for Windows                              
1>  -------------------------------------------------------------------------------
1>  
1>    Started : Thu Jul 05 14:26:34 2012
1>  
1>     Source : C:\Users\Tag\Google Drive\Projects\TGAEngine\VS2010\obj\
1>       Dest : C:\Users\Tag\Google Drive\Projects\Animation-Calibrator\lib\TGAEngine\obj\
1>  
1>      Files : *.*
1>          
1>    Options : *.* /S /COPY:DAT /R:1000000 /W:30 
1>  
1>  ------------------------------------------------------------------------------
... List of files copied, no errors
1>  
1>  ------------------------------------------------------------------------------
1>  
1>                 Total    Copied   Skipped  Mismatch    FAILED    Extras
1>      Dirs :         2         0         2         0         0         0
1>     Files :        29        29         0         0         0         1
1>     Bytes :    1.92 m    1.92 m         0         0         0       697
1>     Times :   0:00:00   0:00:00                       0:00:00   0:00:00
1>  
1>  
1>     Speed :           100824150 Bytes/sec.
1>     Speed :            5769.204 MegaBytes/min.
1>  
1>     Ended : Thu Jul 05 14:26:34 2012
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: The command "copy /y .\TGAEngine.lib .\..\..\Animation-Calibrator\lib\TGAEngine
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: robocopy /s ".\obj" ".\..\..\Animation-Calibrator\lib\TGAEngine\obj"
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: :VCEnd" exited with code 3.
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.11
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
我已经把范围缩小到机器人副本命令。
如果我执行
robocopy/s源dest
VS失败。
如果不使用参数'/s',则不会失败,但不会复制文件。

有什么想法吗


我之所以不发布脚本,是因为我手动运行了脚本,并且没有任何错误。

通常,如果进程成功,则返回0;如果进程失败,则返回非零。
robocopy
似乎有一个非标准:1也意味着成功;0表示未复制任何文件。你现在明白为什么VS不抱怨你省略了
/s

您的进程似乎已退出,状态为3。如果这符合您的要求,请查阅
robocopy
的文档。据我所知,任何2或更大的值都意味着麻烦

如果退出代码指示错误情况,则应自己检查退出代码,如果一切正常,则应使用0退出(下面的代码未测试):

我找到了这个

它是krlmlr答案的一个较短版本,可以在单个命令行中运行。当复制文件(退出代码1)并且目标中有额外文件(退出代码2)时,我认为错误级别3或以下与退出代码一样成功

if ERRORLEVEL 2 goto HandleError
exit 0
:HandleError
exit %ERRORLEVEL%
(robocopy /s source dest) ^& IF %ERRORLEVEL% LEQ 3 exit 0