回答:
再構築=クリーン+ビルド(通常)
注目すべき詳細:
マルチプロジェクトソリューションの場合、「再構築ソリューション」は「クリーン」を実行し、その後各プロジェクトの「ビルド」を実行します(おそらく並行して)。一方、「クリーンソリューション」の後に「ビルドソリューション」を実行すると、最初にすべてのプロジェクトが(おそらく並列で)クリーンアップされ、次にすべてのプロジェクトが(おそらく並列で)ビルドされます。イベントの順序付けにおけるこの違いは、プロジェクト間の依存関係が関係する場合に大きくなる可能性があります。
3つのアクションはすべてMSBuildターゲットに対応しています。したがって、プロジェクトはRebuildアクションをオーバーライドして、まったく異なる処理を実行できます。
Earlは正解です。99%の確率でRebuild = Clean + Buildです。
しかし、それらが同じであることは保証されていません。3つのアクション(再構築、構築、クリーン)は、さまざまなMSBuildターゲットを表しています。それぞれのプロジェクトファイルでオーバーライドして、カスタムアクションを実行できます。したがって、クリーン+ビルドを開始する前に(またはそれらを完全に削除する前に)誰かがrebuildをオーバーライドしていくつかのアクションを実行することは完全に可能です。
非常にまれなケースですが、コメントの議論により指摘されています。
デフォルトのCleanおよびBuild実装の観点から、デフォルトのRebuild実装を定義してみましょう。
プロジェクトごと:プロジェクトの再構築=プロジェクトのクリーン+プロジェクトの構築。
ソリューションごと:slnの再構築= foreachプロジェクトをsln(プロジェクトのクリーン+プロジェクトのビルド)。
実行順序の違いにより、slnの再構築は(slnのクリーン+ slnのビルド)=(slnクリーンプロジェクトのforeachプロジェクト)+(slnビルドプロジェクトのforeachプロジェクト)と同じではないことに注意してください。また、この「foreach」は同時に実行される可能性があるため、2つのシナリオで異なるタスクを同時に実行できます。
たとえば、proj1、proj2、proj3を含むslnがあるとします。
slnの再構築=(Clean proj1 + Build proj1)&(Clean proj2 + Build proj2)&(Clean proj3 + Build proj3)
Clean Sln + Build Sln =(Clean proj1&Clean proj2&Clean proj3)+(Build proj1&Build proj2&Build proj3)
+はシリアルを意味し、&は並行を意味します。
そのため、プロジェクトの依存関係が正しく構成されていない場合、Rebuild slnを実行すると、一部のプロジェクトが古いライブラリにリンクする可能性があります。これは、最初のビルドが始まる前にすべてのクリーンアップが完了するとは限らないためです。Clean sln + Build slnを実行すると、奇妙な動作をするアプリではなく、リンクエラーが発生してすぐに通知されます。
http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm、(それをグーグル):
ビルドとは、前回のビルド以降に変更されたソースファイルのみをコンパイルしてリンクすることを意味し、リビルドとは、変更されたかどうかに関係なく、すべてのソースファイルをコンパイルしてリンクすることを意味します。ビルドは通常行うことであり、高速です。プロジェクトターゲットコンポーネントのバージョンが同期しなくなることがあり、ビルドを成功させるために再ビルドが必要になる場合があります。実際には、掃除する必要はありません。
ソリューションのビルドまたは再構築は、ソリューション内のすべてのプロジェクトをビルドまたは再構築します。一方、ビルドまたは再構築は、上記のスクリーンショットの「こんにちは」、スタートアッププロジェクトをビルドまたは再構築します。スタートアッププロジェクトを設定するには、ソリューションエクスプローラータブで目的のプロジェクト名を右クリックし、[スタートアッププロジェクトとして設定]を選択します。プロジェクト名が太字で表示されます。通常、宿題ソリューションにはプロジェクトが1つしかないため、ソリューションのビルドまたは再構築は、ビルドまたは再構築と実質的に同じです。
コンパイルは、現在編集中のソースファイルをコンパイルするだけです。残りのソースファイルが不完全な状態にあり、プロジェクト全体を正常にビルドできない場合に、エラーをすばやく確認するのに役立ちます。Ctrl-F7はコンパイルのショートカットキーです。
著者がこの質問へのコメントとしてリンクしたこのブログ投稿から:
実は違う!!!それらは等しくありません。
違いは、プロジェクトがクリーンでビルドされるシーケンスにあります。ソリューションに2つのプロジェクトがあるとします。クリーンしてからビルドすると、両方のプロジェクトに対してクリーンが実行され、ビルドは個別に行われますが、再構築中は、プロジェクトAが取得およびクリーンしてからビルドし、その後、プロジェクトBがクリーンしてからビルドします。