MSBuild プロジェクトがあり、その中に BuildInParallel = "true" を設定した複数のプロジェクトを呼び出すタスクがあります。
例:
<Message Text="MSBuild project list = @(ProjList)" />
<!-- Compile in parallel -->
<MSBuild Projects="@(ProjList)"
Targets="Build"
Properties="Configuration=$(Configuration)"
BuildInParallel="true" />
これらのサブプロジェクトは実際にコマンド ライン ツールを呼び出して、実際の「ビルド」を行います。これを compile.exe と呼びます。ビルド プロセスの大まかなプロファイリング (taskmgr.exe に感謝) を実行すると、次の結果が得られます。
/m 設定に基づいて-もちろん、予想されるMSBuild.exeプロセスの正確な数が開始されたことがわかります-利用可能な同時ビルドプロセスの合計。
しかし、私が期待しているのは、compile.exe のプロセスの数です。基本的に、MSBuild の各プロセスは順番を変えて compile.exe を呼び出します。私が見ているのは、いくつかの compile.exe が開始され、その後、1 つの compile.exe がまだ残っているのを確認するまでゆっくりと終了することです。各 compile.exe のタスクには異なる時間がかかるため、そのうちの 1 つに他のタスクよりも多くの時間がかかることが予想されます。
ただし、最初の「バッチ」が終了するまで、他の compile.exe は生成されません。言い換えると、/m:4 がある場合、すべてが終了するまで 4 つの compile.exe が表示され、その後別の 4 つが生成されます。
これは私とまったく同じではありません。他の誰かがこの動作を見たことがありますか。私は何かを誤解しているだけですか?