8

私は Xorax IncrediBuild を使用してVisual Studio 2013 (またはそれ以降) のソリューションとプロジェクトをビルド.vcxprojしています.csproj

少し掘り下げましたが、次のことを学びました。

そのため、Visual Studio プロジェクトの場合、次の 2 つのモードを使用できます。

  • BuildConsole.exe MyProj.vcxproj使用するDevEnv.exe

  • BuildConsole.exe MyProj.vcxproj /usemsbuild使用するMSBuild.exe

2 つのエンジンの使用に違いがあるかどうかを知りたいです。

私はいくつかのテストを行い、次のことを観察しました。

  • の場合、IncrediBuild の「初期化中...」フェーズに少し時間がかかりますDevEnv.exe

  • BuildConsole.exe明らかに、異なる出力を生成します。

  • ビルドのパフォーマンスに違いはありません (またはわずかです)。

個々の C/C++ ネイティブ プロジェクト ( .vcxproj) とソリューション全体( .sln)をビルドする場合、 とを使用する利点と欠点は何DevEnv.exeですかMSBuild.exe?

4

2 に答える 2

8

** 免責事項: 私は IncrediBuild で働いています **

Visual Studio (IncrediBuild なし) 内からのビルドと同じように動作するビルドを取得するには、DevEnv を使用する必要があることを Microsoft と共同で決定しました。MSBuild は、VS とは少し異なる方法でビルドを実行します。これは、生成されるビルド出力と、カスタム ステップやその他の小さなことを実行するときの動作の両方においてです。Visual Studio からビルドするときと同じように IncrediBuild ビルドを動作させたい場合は、デフォルトの方法 (DevEnv を実行する IncrediBuild) を使用する必要があります。ユーザーが MSBuild を使用してビルドを実行する場合は、コマンド ラインからでも TFS からでも、UseMSBuild スイッチを使用する必要があります。ユーザーが慣れ親しんだ方法に応じて、IncrediBuild の動作方法を選択できるようにしたかったのです。

追加コメント:

  1. Devenv は msbuild とは異なる方法でソリューションと .vcxproj ファイルを読み込んで解析するため、Devenv を使用すると、初期化段階が実際に長くなります。ソリューションに含まれるプロジェクトが多いほど、このフェーズにかかる時間が長くなります。このフェーズが完了するまでにかかる時間の増加は、通常、実際のビルド時間の速度の増加によって大幅に相殺されます (複数のプロジェクトを同時にビルドする場合)。
  2. MSBuild では不可能な上記の作業方法により、最大 20% の追加ビルド アクセラレーションを提供できる予測実行機能には、Devenv を強くお勧めします。
于 2015-07-29T15:19:01.970 に答える