2012-07-05 14 views
8

私は、VS 2010で起こった比較的単純なポストビルドイベントを持っています。ビルド後のイベントVS 2010は「失敗」しますが、実際にはありません

コピー操作の出力は、正常に完了したことを示し、ディレクトリをチェックしてファイルコピーが正常に動作しています。

VSは...ここに正確な出力だなぜビルドが失敗しましたが、私に教えてくれないことを私に語った:私はrobocopyをコマンドにそれを絞り込むまし

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 source dest VSが失敗します。
パラメータ '/ s'を使用しないと失敗しませんが、ファイルはコピーされません。

私は手作業で実行したので、スクリプトを投稿していないだけで、エラーはありません。

答えて

10

通常、処理は成功した場合はexit statusで、失敗した場合は0以外の値で返されます。 robocopyは非標準を持っているようですexit code definition:1も成功を意味します。 0は単にファイルがコピーされなかったことを意味します。 /sを省略した場合、VSが文句を言っていない理由が分かりますか?

あなたのプロセスはステータス3で終了しているようです。あなたの要件に問題がなければ、robocopyのドキュメントにチェックしてください。私の理解には、2以上の値は問題を意味します。すべてが大丈夫(テストしていない以下のコード)である場合

あなたはそれがエラー状態を示す場合、終了コードを自分でチェックし、0で終了する必要があります

if ERRORLEVEL 2 goto HandleError 
exit 0 
:HandleError 
exit %ERRORLEVEL% 
0

を私はこの1つhere

(robocopy /s source dest) ^& IF %ERRORLEVEL% LEQ 3 exit 0 
を見つけました

これは短いコマンドで、krlmlrの答えは1つのコマンドラインで実行できます。私は、ファイルをコピーするとき(出口コード1)、そして目的地に余分なファイルがあるとき(出口コード2)、出口コードはエラーコード3またはそれ以下であるとみなします。

関連する問題