Membangun beberapa proyek secara paralel dengan MSBuild

Anda dapat menggunakan MSBuild untuk membangun beberapa proyek lebih cepat dengan menjalankannya secara paralel. Untuk menjalankan build secara paralel, Anda menggunakan pengaturan berikut pada komputer multi-core atau beberapa prosesor:

  • Sakelar -maxcpucount pada prompt perintah.

  • Parameter tugas BuildInParallel pada tugas MSBuild.

Catatan

Sakelar -verbosity (-v) di baris perintah juga dapat memengaruhi performa build. Performa build Anda mungkin menurun jika verbositas informasi log build Anda diatur ke terperinci atau diagnostik, yang digunakan untuk pemecahan masalah. Untuk informasi selengkapnya, lihat Mendapatkan log build dan Referensi Baris perintah.

-Saklar maxcpucount

Jika Anda menggunakan sakelar -maxcpucount, atau -m singkatnya, MSBuild dapat membuat jumlah proses MSBuild.exe yang ditentukan yang mungkin dijalankan secara paralel. Proses ini juga dikenal sebagai "proses pekerja." Setiap proses pekerja menggunakan inti atau prosesor terpisah, jika ada yang tersedia, untuk membangun proyek pada saat yang sama dengan prosesor lain yang tersedia mungkin membangun proyek lain. Misalnya, mengatur sakelar ini ke nilai "4" menyebabkan MSBuild membuat empat proses pekerja untuk membangun proyek.

Jika Anda menyertakan sakelar -maxcpucount tanpa menentukan nilai, MSBuild akan menggunakan hingga jumlah prosesor di komputer.

Untuk informasi selengkapnya tentang sakelar ini, yang diperkenalkan di MSBuild 3.5, lihat Referensi baris perintah.

Contoh berikut menginstruksikan MSBuild untuk menggunakan tiga proses pekerja. Jika Anda menggunakan konfigurasi ini, MSBuild dapat membangun tiga proyek secara bersamaan.

msbuild.exe myproj.proj -maxcpucount:3

Parameter tugas BuildInParallel

BuildInParallel adalah parameter boolean opsional pada tugas MSBuild. Ketika BuildInParallel diatur ke true (nilai defaultnya adalah true), beberapa proses pekerja dihasilkan untuk membangun proyek sebanyak mungkin pada saat yang sama. Agar ini berfungsi dengan benar, sakelar -maxcpucount harus diatur ke nilai yang lebih besar dari 1.

Membangun secara paralel hanya berfungsi untuk satu pemanggilan tugas MSBuild, jadi jika Anda memanggil batching tugas, paralelisme terbatas pada setiap batch. Lihat Batching MSBuild.

Contoh berikut menunjukkan cara membangun target dalam file proyek dengan beberapa nilai properti yang berbeda secara paralel dengan menggunakan BuildInParallel parameter .

Berikut adalah file do_it.proj proyek dengan target yang hanya mencetak pesan yang berbeda untuk masing-masing SourceValue:

<Project>
   <Target Name="DoIt">
      <Message Text="For this invocation SourceValue='$(SourceValue)'" Importance="High" />
   </Target>
</Project>

Proyek berikut membangun target DoIt tertentu secara do_it.proj paralel, menggunakan daftar item dan AdditionalProperties metadata untuk menentukan nilai properti SourceValueyang berbeda.

<Project>
   <ItemGroup>
      <_Project Include="do_it.proj" AdditionalProperties="SourceValue=Test1" />
      <_Project Include="do_it.proj" AdditionalProperties="SourceValue=Test2" />
      <_Project Include="do_it.proj" AdditionalProperties="SourceValue=Test3" />
      <_Project Include="do_it.proj" AdditionalProperties="SourceValue=Test4" />
   </ItemGroup>
   <Target Name="Build">
      <MSBuild Projects="@(_Project)" Targets="DoIt" BuildInParallel="true" />
   </Target>
</Project>