Apa perbedaan antara hanya Rebuild dan melakukan Clean + Build in Visual Studio 2008? Apakah Clean + Build berbeda dengan Clean + Rebuild ?
Apa perbedaan antara hanya Rebuild dan melakukan Clean + Build in Visual Studio 2008? Apakah Clean + Build berbeda dengan Clean + Rebuild ?
Jawaban:
Rebuild = Bersihkan + Bangun (biasanya)
Detail penting:
Untuk solusi multi-proyek, "membangun kembali solusi" melakukan "bersih" diikuti oleh "membangun" untuk setiap proyek (mungkin secara paralel). Sedangkan "solusi bersih" diikuti oleh "solusi bangun" pertama membersihkan semua proyek (mungkin secara paralel) dan kemudian membangun semua proyek (mungkin secara paralel). Perbedaan dalam urutan peristiwa dapat menjadi signifikan ketika ketergantungan antar-proyek ikut bermain.
Semua tiga tindakan sesuai dengan target MSBuild. Jadi proyek dapat menimpa tindakan Rebuild untuk melakukan sesuatu yang sama sekali berbeda.
Earl benar bahwa 99% dari waktu Rebuild = Clean + Build.
Tetapi mereka tidak dijamin sama. 3 tindakan (membangun kembali, membangun, membersihkan) mewakili berbagai target MSBuild. Masing-masing dapat ditimpa oleh file proyek apa pun untuk melakukan tindakan kustom. Jadi sangat mungkin bagi seseorang untuk mengganti pembangunan kembali untuk melakukan beberapa tindakan sebelum memulai pembangunan yang bersih (atau menghapusnya seluruhnya).
Sangat banyak kasus sudut tetapi menunjukkan karena diskusi komentar.
Mari kita mendefinisikan implementasi Rebuild default dalam hal implementasi Clean and Build default:
Per proyek: Rebuild project = Clean project + Build project.
Per solusi: Rebuild sln = foreach project in sln (Clean project + Build project).
Perhatikan bahwa karena perbedaan dalam urutan eksekusi, Rebuild sln tidak sama dengan (Clean sln + Build sln) = (proyek foreach di proyek sln Clean) + (untuk proyek foreach di proyek sln Build). Juga, "pendahuluan" ini dapat dieksekusi bersamaan, sehingga tugas yang berbeda diizinkan untuk berjalan secara bersamaan dalam dua skenario.
Katakanlah Anda memiliki sln yang berisi proj1, proj2, dan proj3.
Rebuild sln = (Bersihkan proj1 + Build proj1) & (Bersihkan proj2 + Build proj2) & (Bersihkan proj3 + Build proj3)
Bersihkan Sln + Bangun Sln = (Bersihkan proj1 & Bersihkan proj2 & Bersihkan proj3) + (Bangun proj1 & Bangun proj2 & Bangun proj3)
+ berarti serial, & berarti bersamaan.
Jadi, jika dependensi proyek tidak dikonfigurasikan dengan benar, ada kemungkinan ketika Anda menjalankan Rebuild sln, beberapa proyek Anda terhubung ke lib basi. Itu karena semua pembersihan tidak dijamin akan selesai sebelum build pertama dimulai. Jika Anda menjalankan Clean sln + Build sln, mereka akan memberikan kesalahan tautan dan memberi tahu Anda segera, alih-alih memberi Anda aplikasi dengan perilaku aneh.
Dari http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm , (cukup googled):
Build berarti mengkompilasi dan menautkan hanya file sumber yang telah berubah sejak build terakhir, sementara Rebuild berarti mengkompilasi dan menautkan semua file sumber terlepas dari apakah mereka berubah atau tidak. Membangun adalah hal yang normal untuk dilakukan dan lebih cepat. Terkadang versi komponen target proyek dapat keluar dari sinkronisasi dan membangun kembali diperlukan untuk membuat pembangunan berhasil. Dalam praktiknya, Anda tidak perlu Bersihkan.
Solusi Build atau Rebuild membangun atau membangun kembali semua proyek dalam solusi Anda, sedangkan Build atau Rebuild membangun atau membangun kembali proyek StartUp, "halo" pada tangkapan layar di atas. Untuk mengatur proyek StartUp, klik kanan pada nama proyek yang diinginkan di tab Solution Explorer dan pilih Set as StartUp project. Nama proyek sekarang muncul dengan huruf tebal. Karena solusi pekerjaan rumah biasanya hanya memiliki satu proyek, Solusi Build atau Rebuild secara efektif sama dengan Build atau Rebuild.
Kompilasi kompilasi saja file sumber yang sedang diedit. Berguna untuk dengan cepat memeriksa kesalahan ketika sisa file sumber Anda dalam keadaan tidak lengkap yang akan mencegah pembangunan yang berhasil dari seluruh proyek. Ctrl-F7 adalah tombol pintas untuk Kompilasi.
Dari posting blog ini yang penulis tautkan sebagai komentar pada pertanyaan ini :
Sebenarnya tidak!!! mereka tidak sama.
Perbedaannya terletak pada urutan proyek, bersih dan bangun. Katakanlah kita memiliki dua proyek dalam solusi. Bersih dan kemudian membangun akan melakukan bersih untuk kedua proyek dan kemudian membangun akan terjadi secara individual sementara pada proyek membangun kembali A akan mendapatkan dan membersihkan dan kemudian membangun setelah proyek B akan bersih dan kemudian membangun dan seterusnya.