2012-07-05 15 views
8

VS 2010 yılında gerçekleşen nispeten basit bir post-build olayı var, sadece iki kopya işlemleri.Yapılandırma Sonrası Olay VS 2010 "Başarısız", ama gerçekten değil

Kopyalama işlemlerinin çıktısı başarılı olduklarını ve dizinleri kontrol ettiğimi ve dosya kopyasının kusursuz çalıştığını gösterir.

VS ... İşte tam çıkış neden inşa başarısız ama bana söylemez söylüyor: Ben robocopy komuta indirdim ettik

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 başarısız olursa başarısız olur.
'/ s' parametresini kullanmazsam başarısız olmaz, ancak dosyalar kopyalanmaz.

Herhangi bir düşünce?

Sadece senaryoyu yayınlamıyorum çünkü el ile çalıştırıyorum ve herhangi bir hata yok.

cevap

10

Genellikle, bir işlem başarılı olursa exit status 0 ile döner ve başarısız olursa sıfırdan oluşur. robocopy standart olmayan bir exit code definition gibi görünüyor: 1 de başarı anlamına gelir; 0, hiçbir dosyanın kopyalanmadığı anlamına gelir. /s'u ihmal ederseniz VS'nin neden şikayet etmediğini görüyor musunuz?

İşleminiz durum 3 ile çıkılıyor gibi görünüyor. Gereksinimlerinize uygunsa, lütfen robocopy'un belgelerine bakın. Anladığım kadarıyla, 2 veya daha büyük herhangi bir değer, sorun anlamına gelir.

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

Ben bu here

(robocopy /s source dest) ^& IF %ERRORLEVEL% LEQ 3 exit 0 
bulundu: 0'a bir hata durumunu ve çıkış gösteriyorsa her şey (test edilmemiş aşağıda kodu) yolunda mı

Sen çıkış kodu kendiniz kontrol etmelisiniz

Tek bir komut satırında çalıştırılabilecek daha kısa bir krlmlr cevabı sürümüdür. Dosyayı kopyalarken (kod 1'den çıkış) çıkış kodu olduğu gibi 3 veya altındaki hata seviyesini başarılı olarak kabul ediyorum ve hedefte fazladan dosyalar var (çıkış kodu 2).

İlgili konular