使用 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>
相關內容
- 使用多個處理器來建置專案
- 撰寫能夠辨識多處理器的記錄器
- Tuning C++ build parallelism blog (調整 C++ 組建平行處理原則部落格)