Visual Studioでのソリューションのビルド、ソリューションのリビルド、およびソリューションのクリーンの違いは何ですか?
これらのそれぞれを使用する適切な時期はいつですか?
Visual Studioでのソリューションのビルド、ソリューションのリビルド、およびソリューションのクリーンの違いは何ですか?
これらのそれぞれを使用する適切な時期はいつですか?
回答:
(リンクはdevenv.exeコマンドラインスイッチへのリンクですが、メニュー項目と同じです。)
.gitignore
ファイルを作成する方が簡単です。しかし、答えによれば、Cleanは私の経験において必ずしも完全な仕事をするわけではありません。
ビルドソリューション:変更されたコードファイル(DLLおよびEXE)をコンパイルします。
再構築:コードが変更されたかどうかに関係なく、すべてのコンパイル済みファイルを削除し、それらを再度コンパイルします。
クリーンソリューション:すべてのコンパイル済みファイル(DLLおよびEXEファイル)を削除します。
このYouTubeビデオ(Visual Studio Build vs. Rebuild vs. Clean(C#インタビューの質問と回答))を見ることができます。違いを示しました。以下は、同じことをより詳細に分析するのに役立つ視覚的な表現です。
Rebuildと(Clean + Build)の違い。これについても混乱があるようです。
違いは、すべてのプロジェクトでビルドおよびクリーンシーケンスが行われる方法です。ソリューションに「proj1」と「proj2」の2つのプロジェクトがあるとします。再構築を行う場合は、「proj1」が必要です。「proj1」のコンパイル済みファイルをクリーンアップ(削除)して、ビルドします。その後、2番目のプロジェクト「proj2」を取得し、「proj2」のコンパイル済みファイルをクリーンアップして、「proj2」をコンパイルします。
ただし、「クリーン」でビルドすると、まず「proj1」と「proj2」のコンパイル済みファイルがすべて削除され、次に「proj1」が最初にビルドされ、次に「proj2」がビルドされます。
このリンクから取得:
ビルドとは、前回のビルド以降に変更されたソースファイルのみをコンパイルしてリンクすることを意味し、リビルドとは、変更されたかどうかに関係なく、すべてのソースファイルをコンパイルしてリンクすることを意味します。ビルドは通常行うことであり、高速です。場合によっては、プロジェクトのターゲットコンポーネントのバージョンが同期しなくなり、ビルドを成功させるために再ビルドが必要になります。実際には、掃除する必要はありません。
ビルドソリューション -ファイルが変更されたアセンブリをビルドします。アセンブリに変更がない場合、アセンブリは再構築されません。また、中間ファイルは削除されません。
最も一般的に使用されます。
ソリューションの再構築 -変更に関係なくすべてのアセンブリを再構築しますが、中間ファイルは残します。
Visual Studioが変更を最新のアセンブリに組み込んでいないことに気付いたときに使用されます。ときどきVisual Studioは間違いを犯します。
クリーンソリューション -すべての中間ファイルを削除します。
他のすべてが失敗し、すべてをクリーンアップして最初からやり直す必要がある場合に使用されます。
Rebuildは、最初にCleanを実行し、次にBuildを実行するものと考えています。たぶん私は間違っている...コメント?
file reference
代わりに追加することによって引き起こされたproject reference
ので、プロジェクトのビルド順序は特定のプロジェクトを別のプロジェクトの前にビルドする必要があることを認識せず、アセンブリはその間に存在するはずの場所に存在しませんでしたビルド?
ビルドソリューション –ファイルを変更したアセンブリをビルドします。アセンブリに変更がない場合、アセンブリは再構築されません。また、中間ファイルは削除されません。
ソリューションを再構築すると、ソリューションがクリーンアップされてからゼロから構築され、以前に行われたことはすべて無視されます
Clean Solutionは、bin / objディレクトリからすべてのコンパイル済みファイル(つまり、EXEとDLL)を削除します。
ソリューションのビルドは、変更されたソリューション内のプロジェクトをビルドします。Rebuildはすべてのプロジェクトをビルドしますが、クリーンソリューションはすべての一時ファイルを削除して、次のビルドが確実に完了するようにします。
ビルドソリューション -ビルドソリューションは、ファイルが変更されているプロジェクトの数をビルドして、アプリケーションをビルドします。また、既存のバイナリファイルは消去されず、binまたはobjフォルダー内の更新されたアセンブリが置き換えられるだけです。
ソリューションの再構築 - ソリューションの再構築は、アプリケーション全体をビルドし、すべてのプロジェクトをビルドして、ソリューションで使用可能なすべてのプロジェクトをクリーンアップします。ビルドする前に、binおよびobjフォルダーからすべてのバイナリファイルをクリアします。
クリーンソリューション -クリーンソリューションは、binおよびobjフォルダーからすべてのバイナリファイルをクリアするだけです。
人々が除外していると私が思う1つの主要なことは、ビルドとクリーンアップはどちらも、プロジェクト/ソリューションに関するVisual Studioの知識に基づいて実行されるタスクであることです。Cleanが機能しない、残されたファイルを残す、または信頼できないという不満がたくさんあります。実際、信頼できないと言う理由により、実際には信頼できるようになります。
Cleanは、Visual Studioまたはコンパイラ自体が実際に作成したファイルやディレクトリのみを削除します。独自のファイルをコピーする場合、またはファイル/フォルダー構造が外部のツールまたはソースから作成される場合、Visual Studioは「それらが存在することを認識」していないため、それらに触れるべきではありません。
Cleanオペレーションが基本的に「del *。*」を実行したと想像できますか?これは壊滅的となる可能性があります。
ビルドは、変更されたプロジェクトまたは必要なプロジェクトでコンパイルを実行します。
Rebuildは、変更や必要なものに関係なくコンパイルを実行します。
Cleanは、過去に作成したファイル/フォルダーを削除しますが、最初は関係のないものはすべて残します。
私はこれが少し精巧になり、助けてくれることを願っています。
私は、AAブランク溶液持っているBuildRebuildClean
と3クラスライブラリをModels
、Repository
、Notification
。
クラスライブラリで使用Models
しRepository
ていNotification
ます。
次に:
Models
ライブラリプロジェクトの一部のコードを変更する場合は、ソリューションを構築します。以下のスクリーンショットでは、DLLのタイムスタンプを参照して、EXEがで更新されるModels
とNotification
ライブラリ。BuildRebuildClean
。これは、すべてのアセンブリ、EXE、および参照ファイルを削除して、再度コンパイルすることです。私が知っているのは、Cleanが "make clean"を実行していないことだけです。ソリューションをCleanすると、objとbinファイル/フォルダーが削除され、ビルドがソースの新しいチェックアウトのようになると予想されます。私の経験では、クリーンアンドビルドまたは再ビルドがコンパイル時に既知のソースで奇妙なエラーを生成することがよくありますが、必要なのはbin / objフォルダーを手動で削除することですが、ビルドされます。
ソリューションのビルドは、ソリューションで変更されたプロジェクトのみをビルドし、変更されていないアセンブリには影響しません。
ReBuildは、最初にソリューションからすべてのアセンブリをクリーンアップし、行われた変更に関係なくソリューション全体をビルドします。
クリーン、単にソリューションをクリーンアップします。
これは「ソリューションのビルド」オプションのみに関するものです。
Visual Studioではソリューションを本当にクリーンアップできないことに完全にうんざりしていて、それを実行するこの小さなツールを作成しました。
まずVSでソリューションを閉じ、そのフォルダーをWindowsエクスプローラーからこのアプリまたはアイコンにドラッグします。ウィンドウ下部の設定に応じて、追加のものを削除することもできます。これは、ソリューションをGitHubに手動でアップロードしたり、他の人と共有したりする場合に役立ちます。
簡単に言うと、VSによってごみ箱に再構築できるすべての「デバッグ」フォルダー、Intellisense、およびその他のキャッシュが配置されます。