Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
MSBuild dapat memanfaatkan sepenuhnya sistem yang memiliki beberapa prosesor atau prosesor multi-inti dengan membuat proses build terpisah untuk setiap prosesor. Misalnya, jika sistem memiliki empat prosesor, MSBuild membuat empat proses build.
MSBuild dapat memproses beberapa build secara bersamaan, yang mengurangi waktu build keseluruhan. Namun, build paralel dapat memperkenalkan perubahan dalam bagaimana proses build terjadi.
Artikel ini menjelaskan perubahan proses yang dapat terjadi saat beberapa build berjalan secara bersamaan.
Referensi proyek-ke-proyek
Saat Microsoft Build Engine menemukan referensi proyek (ProjectReference elemen) selama build paralel untuk proyek, microsoft Build Engine hanya membangun referensi satu kali. Jika dua proyek memiliki referensi proyek yang sama, referensi tidak dibangun kembali untuk setiap proyek. Sebaliknya, mesin build mengembalikan referensi proyek yang sama ke kedua proyek yang memiliki dependensi. MSBuild juga menyediakan referensi proyek yang sama ke permintaan di masa mendatang dalam sesi untuk target yang sama.
Deteksi siklus
Deteksi siklus selama build paralel adalah perilaku yang sama seperti untuk MSBuild 2.0. Salah satu perbedaannya adalah bahwa versi MSBuild yang lebih baru dapat melaporkan deteksi siklus pada waktu yang berbeda atau dalam build.
Kesalahan dan pengecualian selama build paralel
Selama build paralel, kesalahan dan pengecualian dapat terjadi pada waktu yang berbeda dari yang mereka lakukan selama build nonparallel. Selain itu, jika satu proyek tidak berhasil dibangun, proyek-proyek lain tetap dilanjutkan pembangunannya.
MSBuild tidak menghentikan pembangunan proyek apa pun secara paralel dengan build yang gagal. Proyek lain terus dibangun hingga berhasil atau gagal. ContinueOnError Saat pengaturan diaktifkan, tidak ada build yang berhenti, bahkan jika terjadi kesalahan.
File proyek C++ (.vcxproj) dan solusi (.sln)
File proyek C++ (.vcxproj) dan solusi (.sln) dapat diteruskan ke tugas MSBuild.
- Proyek C++: API VCWrapperProject dipanggil dan kemudian proyek MSBuild internal dibuat.
- Solusi C++: Instans SolutionWrapperProject dibuat lalu proyek MSBuild internal dibuat.
Dalam kedua kasus, proyek yang dihasilkan ditangani seperti proyek MSBuild lainnya.
Eksekusi multi-proses
Hampir semua aktivitas terkait build mengharuskan direktori saat ini agar tetap konsisten sepanjang proses build untuk mencegah kesalahan yang terkait dengan jalur. Proyek tidak dapat berjalan pada utas yang berbeda di MSBuild karena dapat menyebabkan pembuatan beberapa direktori.
Untuk menghindari masalah ini tetapi masih mengaktifkan build multi-prosesor, MSBuild menggunakan isolasi proses. Proses ini memungkinkan MSBuild untuk membuat maksimum n proses, di mana n sama dengan jumlah prosesor yang tersedia pada sistem. Misalnya, jika MSBuild membangun solusi pada sistem dengan dua prosesor, hanya dua proses build yang dibuat. Proses ini digunakan kembali untuk membangun semua proyek dalam solusi.