8

VS 2010 で発生する比較的単純なビルド後のイベントがあります。コピー操作は 2 回だけです。

コピー操作の出力は、それらが成功したことを示しています。ディレクトリを確認したところ、ファイルのコピーは完全に機能しています。

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 コマンドに絞り込みました。
私がやるとrobocopy /s source destVSは失敗します。
パラメータ「/s」を使用しない場合、失敗しませんが、ファイルはコピーされません。

何かご意見は?

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

4

2 に答える 2

11

通常、プロセスは、成功した場合は 終了ステータス0 を返し、失敗した場合はゼロ以外のステータスを返します。robocopy非標準の終了コード定義があるようです: 1 も成功を意味します。0 は単にファイルがコピーされなかったことを意味します。省略してもVSが文句を言わない理由がわかりました/sか?

プロセスはステータス 3 で終了しているようrobocopyです。これが要件に問題がないかどうか、のドキュメントを確認してください。私の理解では、2 以上の値は問題を意味します。

エラー状態を示している場合は終了コードを自分で確認し、問題がなければ 0 で終了する必要があります (以下のコードはテストされていません)。

if ERRORLEVEL 2 goto HandleError
exit 0
:HandleError
exit %ERRORLEVEL%
于 2012-07-05T21:51:44.490 に答える