Pada build yang berhasil, saya ingin menyalin isi direktori output ke lokasi yang berbeda di bawah folder "base" yang sama . Folder induk ini adalah bagian relatif dan dapat bervariasi berdasarkan pengaturan Kontrol Sumber.
Saya telah mendaftarkan beberapa nilai Makro yang tersedia untuk saya ...
$ (SolutionDir) = D: \ GlobalDir \ Version \ AppName \ Solution1 \ build
$ (ProjectDir) = D: \ GlobalDir \ Version \ AppName \ Solution1 \ Version \ ProjectA \
Saya ingin menyalin konten Output Dir ke folder berikut:
D: \ GlobalDir \ Version \ AppName \ Solution2 \ Project \ Dependency
Lokasi dasar "D: \ GlobalDir \ Version \ AppName" perlu diambil dari salah satu makro di atas. Namun, tidak ada nilai makro yang mencantumkan hanya lokasi induk.
Bagaimana cara mengekstrak hanya lokasi dasar untuk perintah copy build post?
Inilah yang ingin Anda masukkan ke dalam baris perintah acara pasca-bangun proyek:
EDIT: Atau jika nama target Anda berbeda dari Nama Proyek.
sumber
/Y
. Terima kasih telah menunjukkan seluruh perintah.xcopy
dengan wildcard dan switch yang sesuai untuk mencapai hasil yang sama, sambil mempertahankan struktur (folder) folder sumber, seperti:xcopy /i /e /s /y /f "<source>\MyFolder\*" "<destination>\MyFolder"
copy /Y "$(TargetPath)" "$(SolutionDir)somewhere\"
:, tanpa backslash tambahan, karena $ (SolutionDir) termasuk backslash tambahan (setidaknya dalam VS2012)Kamu bisa mencoba:
sumber
Saya pikir ini terkait, tapi saya punya masalah ketika membangun langsung menggunakan
msbuild
baris perintah (dari file batch) vs membangun dari dalam VS.Menggunakan sesuatu seperti berikut:
(catatan:
start XCOPY
daripadaXCOPY
digunakan untuk mengatasi masalah izin yang mencegah penyalinan)Makro
$(SolutionDir)
dievaluasi..\
ketika mengeksekusi msbuild dari batchfile, yang mengakibatkanXCOPY
perintah gagal. Jika tidak berfungsi dengan baik ketika dibangun dari dalam Visual Studio. Dikonfirmasi menggunakan/verbosity:diagnostic
untuk melihat output yang dievaluasi.Menggunakan makro
$(ProjectDir)..\
sebagai gantinya, yang berjumlah hal yang sama, bekerja dengan baik dan mempertahankan jalur penuh di kedua skenario pembuatan.sumber
Start
bekerja untuk saya (untukxcopy
di folder bersama).Tidakkah masuk akal untuk menggunakan msbuild secara langsung? Jika Anda melakukan ini dengan setiap build, maka Anda dapat menambahkan tugas msbuild di akhir? Jika Anda hanya ingin melihat apakah Anda tidak dapat menemukan nilai makro lain yang tidak ditampilkan pada Visual Studio IDE, Anda bisa mengaktifkan opsi msbuild untuk diagnostik dan yang akan menunjukkan kepada Anda semua variabel yang bisa Anda gunakan, seperti serta nilai mereka saat ini.
Untuk mengaktifkan ini di dalam studio visual, pergi ke Alat / Opsi kemudian gulir ke bawah tampilan pohon ke bagian yang disebut Proyek dan Solusi, perluas itu dan klik Build and Run, di sebelah kanan mereka adalah drop down yang menentukan verbosity output build , mengaturnya ke diagnostik, akan menunjukkan kepada Anda nilai makro apa yang bisa Anda gunakan.
Karena saya tidak tahu sampai tingkat apa yang ingin Anda tuju, dan seberapa kompleks Anda ingin membangun Anda, ini mungkin memberi Anda beberapa ide. Saya baru-baru ini melakukan skrip build, yang bahkan mengeksekusi kode SQL sebagai bagian dari build. Jika Anda ingin bantuan lagi atau bahkan beberapa contoh skrip build, beri tahu saya, tetapi jika itu hanya proses kecil yang ingin Anda jalankan di akhir build, skrip msbuild lengkap yang sedang berjalan mungkin sedikit berlebihan. .
Semoga ini membantu Rihan
sumber