使用 MSBuild 同時建置多個專案

您可以使用 MSBuild 透過讓專案平行執行的方式,加快建置多個專案的速度。 若要平行執行組建,您可以使用多核心或多處理器電腦上的下列設定:

  • 命令提示字元中的 -maxcpucount 參數。

  • MSBuild 工作上的 BuildInParallel 工作參數。

注意

命令列中的 -verbosity (-v) 參數也會影響建置效能。 如果組建記錄檔資訊的詳細程度設為詳細或診斷 (用於疑難排解),建置效能就可能會降低。 如需詳細資訊,請參閱取得組建記錄檔命令列參考

-maxcpucount 參數

如果您使用 -maxcpucount 參數 (簡寫為 -m),則 MSBuild 可以建立可平行執行的 MSBuild.exe 處理序指定數目。 這些處理序也稱為「背景工作處理序」。每個背景工作處理序會使用個別的核心或處理器 (如果有的話),在其他可用處理器可能正在建置其他專案的同時建置專案。 例如,將此參數設為值 "4" 時,MSBuild 會建立四個背景工作處理序來建置專案。

如果您引入 -maxcpucount 參數但未指定值,MSBuild 會使用電腦上的處理器最大數目。

如需此參數 (在 MSBuild 3.5 中所引進) 的詳細資訊,請參閱命令列參考

下列範例會指示 MSBuild 使用三個背景工作處理序。 如果您使用此組態,MSBuild 就可以同時建立三個專案。

msbuild.exe myproj.proj -maxcpucount:3

BuildInParallel 工作參數

BuildInParallel 是 MSBuild 工作上的選擇性布林值參數。 將 BuildInParallel 設為 true (其預設值為 true) 時,會產生多個背景工作處理序,以盡可能同時建置最多個專案。 若要使其正常運作,必須將 -maxcpucount 切換開關設定為大於 1 的值。

並行建置僅適用於 MSBuild 工作的單一叫用,因此如果叫用工作批次處理,則並行性僅限於每個批次處理。 請參閲 MSBuild 批次處理

以下範例顯示如何使用 BuildInParallel 參數在具有多個不同屬性值的專案檔中並行產生目標。

以下是專案檔 do_it.proj,其目標只是為每個 SourceValue 列印不同訊息:

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

以下專案在 do_it.proj 中並行建置指定目標 DoIt,使用項目清單和 AdditionalProperties 中繼資料來指定屬性 SourceValue 的不同值。

<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>