1

おそらく200以上のプロジェクトを含むプロジェクトがあります。老鳥です。ローカル ビルドを高速化するために、診断ビルドを実行しました。アセンブリとプロジェクトの参照を解決するには、msbuild に時間がかかるようです。VSはこれを高速に実行しているようですが、MSBuildでこれらの参照にキャッシュを使用する方法、または何らかの方法でより高速に解決する方法はありますか?

MSBuild は、インクリメンタル ビルドでこれほど頻繁にアセンブリ参照を解決する必要はないようですよね?

MSBuild に内部依存関係ツリーを報告させる方法はありますか?

4

1 に答える 1

0

VS は同じ MSBuild エンジンを使用してビルドを実行するため、VS からどのようなパフォーマンスを観察しても、MSBuild.exe を使用してコマンド ラインからビルドを開始することで達成できるはずです。

VS とコマンド ラインのビルド速度の違いを説明するいくつかの点に注意してください。

  1. VS で「プロジェクトのみ」をビルドする場合、つまりプロジェクト ノードを右クリックし、「プロジェクトのみ」メニューから「プロジェクトのビルド (this)」を選択すると、ビルドは参照プロジェクトのビルドをスキップします。これはインクリメンタル ビルドを行う最速の方法ですが、すべての依存関係が最新であることを事前に知っておく必要があります。

これをコマンド ラインから複製する場合は、パラメーター BuildProjectReferences=false を渡すだけです。例えば:

msbuild myproject.csproj /p:BuildProjectReferences=false
  1. VS のデフォルトは、マルチプロセス ビルド用に設定されている場合があり、多くの場合、ビルド速度が大幅に向上します。ただし、コマンド ラインでは、デフォルトで常にシングル プロセス ビルドが実行されるため、VS よりもはるかに遅くなります。常に /m を msbuild コマンド ラインに渡します。例えば:
msbuild MySolution.sln /m
于 2014-11-02T20:13:04.300 に答える