316

Visual Studio 2008で再構築するだけと、クリーン+ビルドを実行することの違いは何ですか?Clean + Buildは、 Clean + Rebuildとは異なりますか?

4

6 に答える 6

320

Rebuild = Clean + Build (通常)

注目すべき詳細:

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

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

于 2009-08-07T23:41:33.070 に答える
63

デフォルトの Clean および Build 実装に関して、デフォルトの Rebuild 実装を定義しましょう。

  1. プロジェクトごと: プロジェクトの再ビルド = プロジェクトのクリーンアップ + プロジェクトのビルド。

  2. ソリューションごと: sln で sln = foreach プロジェクトを再構築します (クリーン プロジェクト + ビルド プロジェクト)。

実行順序の違いにより、Rebuild sln は (Clean sln + Build sln) = (sln Clean プロジェクト内の foreach プロジェクト) + (sln Build プロジェクト内の foreach プロジェクト) とは異なることに注意してください。また、この「foreach」は同時に実行される可能性があるため、2 つのシナリオで異なるタスクを同時に実行できます。

proj1、proj2、および proj3 を含む sln があるとします。

  • sln の再構築 = (proj1 の消去 + proj1 の構築) & (proj2 の消去 + proj2 の構築) & (proj3 の消去 + proj3 の構築)

  • Clean Sln + Build Sln = (Clean proj1 & Clean proj2 & Clean proj3) + (Build proj1 & Build proj2 & Build proj3)

+ はシリアル、& はコンカレントを意味します。

そのため、プロジェクトの依存関係が正しく構成されていない場合、Rebuild sln を実行すると、プロジェクトの一部が古いライブラリにリンクする可能性があります。これは、最初のビルドが開始される前にすべてのクリーンアップが完了するとは限らないためです。Clean sln + Build sln を実行すると、奇妙な動作をするアプリが提供される代わりに、リンク エラーが表示され、すぐに通知されます。

于 2012-02-17T03:57:35.623 に答える
11

http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htmから(ググってみました):

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

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

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

于 2009-08-21T13:10:39.420 に答える