web-dev-qa-db-ja.com

Visual Studioでの再構築とクリーン+ビルドの違い

Rebuildと、Clean+BuildVisual Studio 2008では? Clean+Build異なるClean+Rebuild

290
Jim McKeeth

再構築=クリーン+ビルド(通常)

注目すべき詳細:

  1. マルチプロジェクトソリューションの場合、「再構築ソリューション」は、各プロジェクトに対して「クリーン」を実行し、その後に「ビルド」を実行します(おそらく並行して)。一方、「クリーンソリューション」に続いて「ビルドソリューション」は、最初にすべてのプロジェクトを(おそらく並行して)クリーンアップし、次にすべてのプロジェクトを(おそらく並行して)ビルドします。イベントの順序付けにおけるこの違いは、プロジェクト間の依存関係が作用するときに大きくなる可能性があります。

  2. 3つのアクションはすべて、MSBuildターゲットに対応しています。そのため、プロジェクトはRebuildアクションをオーバーライドして、まったく異なることを行うことができます。

295
earl

Earlは、99%の時間が再構築=クリーン+ビルドであることを認識しています。

ただし、同じであるとは限りません。 3つのアクション(再構築、構築、クリーン)は、異なるMSBuildターゲットを表します。それぞれをプロジェクトファイルでオーバーライドして、カスタムアクションを実行できます。したがって、誰かが再構築をオーバーライドして、クリーン+ビルドを開始する前にいくつかのアクションを実行する(または完全に削除する)ことは完全に可能です。

非常に角質なケースですが、コメントの議論のために指摘しています。

160
JaredPar

1プロジェクトごとに、プロジェクトを再ビルド=(クリーンプロジェクト+プロジェクトのビルド)。

2ソリューションごとに、Slnの再構築= foreachプロジェクト(プロジェクトのクリーン+プロジェクトのビルド)!= Slnのクリーン+ Slnのビルド

Slnがあり、proj1、proj2、およびproj3が含まれているとします。

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は、すべてのビルドがすべてのクリーン後であることを保証されていないため、一部の古いライブラリへのprojリンクを引き起こします(この場合、Clean Sln + Build Slnはリンクエラーを表示し、奇妙な動作のアプリを提供する代わりに、すぐにそれを知らせます)

53
Trout.Z

http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm から、(グーグルで検索してください):

ビルドとは、最後のビルド以降に変更されたソースファイルのみをコンパイルおよびリンクすることを意味し、リビルドとは、変更されたかどうかに関係なく、すべてのソースファイルをコンパイルおよびリンクすることを意味します。ビルドは通常行うことであり、高速です。プロジェクトターゲットコンポーネントのバージョンが同期しなくなることがあり、ビルドを成功させるために再構築が必要になる場合があります。実際には、クリーニングする必要はありません。

ソリューションのビルドまたはリビルドは、ソリューション内のすべてのプロジェクトをビルドまたはリビルドします。ビルドまたはリビルドは、上記のスクリーンショットの「hello」スタートアッププロジェクトをビルドまたはリビルドします。スタートアッププロジェクトを設定するには、[ソリューションエクスプローラー]タブで目的のプロジェクト名を右クリックし、[スタートアッププロジェクトとして設定]を選択します。プロジェクト名が太字で表示されます。通常、宿題ソリューションにはプロジェクトが1つしかないため、ソリューションのビルドまたは再構築は、ビルドまたは再構築と事実上同じです。

コンパイルは、現在編集中のソースファイルをコンパイルするだけです。ソースファイルの残りの部分がプロジェクト全体の正常なビルドを妨げる不完全な状態にある場合、エラーをすばやくチェックするのに役立ちます。 Ctrl-F7は、コンパイルのショートカットキーです。

11
Eduardo Mello

このブログ投稿 から この質問に対するコメント

実は違う!!!それらは等しくありません。

違いは、プロジェクトがクリーンになってビルドされるシーケンスです。ソリューションに2つのプロジェクトがあるとします。クリーンとビルドは両方のプロジェクトに対してクリーンを実行し、ビルドは個別に行われますが、リビルドではプロジェクトAがクリーンになり、プロジェクトBがクリーンになってからビルドなどが行われます。

4
Prageeth godage