Visual studio 2010 建造后事件VS 2010”一文;不合格;,但事实并非如此';T
我在VS2010中有一个相对简单的构建后事件,只有两个拷贝操作 复制操作的输出显示它们已经成功,我已经检查了目录,文件副本工作正常 VS告诉我构建失败了,但没有告诉我为什么。。。下面是确切的输出: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> ----------------------
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