it-swarm-id.com

Mengapa langkah post-build (xcopy) kadang-kadang keluar dengan kode 2 di teamCity build?

Beberapa proyek dalam solusi klien saya memiliki acara post-build: xcopy output build ke folder tertentu. Ini berfungsi dengan baik ketika membangun secara lokal. Namun, di TeamCity, saya sesekali dapatkan

xcopy [...] keluar dengan kode 2

Jika saya menggunakan copy biasa, ia keluar dengan kode 1. Saya berharap ini ada hubungannya dengan kunci file, meskipun file spesifik yang disalin tidak sama, jadi mungkin hanya mengunci pada direktori tujuan bersama. Saya menggunakan /y untuk tidak meminta pada menimpa file.

Mengapa ini gagal di TeamCity tetapi tidak secara lokal?

87
Tim Iles

Bahkan jika Anda memberikan /Y beralih dengan xcopy, Anda masih akan mendapatkan kesalahan ketika xcopy tidak tahu apakah hal yang Anda salin adalah file atau direktori. Kesalahan ini akan muncul sebagai "keluar dengan kode 2". Ketika Anda menjalankan xcopy yang sama pada Prompt perintah, Anda akan melihat bahwa xcopy meminta respons file atau direktori.

Untuk mengatasi masalah ini dengan build otomatis, Anda dapat menggema dalam respons yang ditentukan sebelumnya dengan sebuah pipa.

Untuk mengatakan hal yang Anda salin adalah file, gema dalam F:

echo F|xcopy /y ...

Untuk mengatakan hal yang Anda salin adalah direktori, gema dalam D:

echo D|xcopy /y ...

Terkadang hal di atas dapat diatasi dengan hanya menggunakan perintah salin alih-alih xcopy:

copy /y ...

Namun, jika ada direktori yang tidak ada yang mengarah ke tujuan file akhir, maka "keluar dengan kode 1" akan terjadi.

Ingat: gunakan /C beralih dan xcopy dengan hati-hati.

134
Metro Smurf

Saya memperbaiki kode kesalahan 2 dengan menambahkan\pada akhir jalur saya, tanpa itu, xcopy akan berpikir bahwa itu adalah file, bukan folder.

34
Benjiko99

Jika Anda menggunakan xcopy dalam acara post build, gunakan tombol/Y di samping/C.

/C           Continues copying even if errors occur.
/Y           Suppresses prompting to confirm you want to overwrite an existing file.
31
DavidS

Perbaikan saya untuk masalah ini adalah untuk masuk ke folder target bin, dan memastikan bahwa subfolder yang tepat ada di sana. Setelah subfolder dibuat secara manual, proses pembuatan selesai dengan sukses.

2
boomer57

Mungkin Anda menggunakan TeamCity dengan git. Jika ya, periksa --- folder Anda ingin menyalin ada di repositori git. Biasanya git aviod menambahkan folder proyek kosong ke repositori, jadi xcopy gagal menemukannya dan menghasilkan kesalahan.

Anda dapat menambahkan beberapa file teks kosong ke folder kosong, komit dan melihat folder muncul di repositori.

1
iliya

copy memperbaikinya untuk saya. xcopy with /c /y tidak bekerja. Saya mendapatkan jalan keluar 4 jadi saya pergi dengan xcopy, tetapi ternyata saya membutuhkan tanda kutip sekitar ($TargetPath).

Skrip saya:

if $(ConfigurationName) == Debug copy "$(TargetPath)" "$(SolutionDir)\Folder\bin\Debug\$(TargetFileName)"
1
Matt