web-dev-qa-db-ja.com

objおよびbinフォルダー(Visual Studioで作成)は何に使用されますか?

Visual Studio 2010で新しいプロジェクトを作成し、プロジェクトディレクトリにobjおよびbinという名前の2つの新しいフォルダーがあることに気付きました。

ビルドおよびデバッグ時に、同様のフォルダーのペアが作成されます-これらのフォルダーは何のためですか?

187
yesraaj

objフォルダーは、オブジェクト、または中間ファイルを保持します。これは、まだリンクされていないコンパイル済みのバイナリファイルです。これらは本質的に、最終的な実行可能ファイルを生成するために結合されるフラグメントです。コンパイラはソースファイルごとに1つのオブジェクトファイルを生成し、それらのファイルはobjフォルダーに配置されます。

binフォルダーはバイナリファイルを保持します。これは、アプリケーションまたはライブラリの実際の実行可能コードです。

これらの各フォルダーは、DebugフォルダーとReleaseフォルダーにさらに細分化され、プロジェクトのビルド構成に対応しています。上記の2種類のファイルは、実行するビルドの種類に応じて、適切なフォルダーに配置されます。これにより、デバッグシンボルを使用してビルドされた実行可能ファイルと、最適化を有効にしてリリースの準備ができてビルドされた実行可能ファイルを簡単に判断できます。

プロジェクトのプロパティでコンパイル中にVisual Studioが実行可能ファイルを出力する場所を変更できることに注意してください。ビルド構成の名前と選択したオプションを変更することもできます。

201
Cody Gray

C#binとobjフォルダー の違いを示し、インクリメンタル/条件付きコンパイルの利点を得る方法を説明するこのYouTubeビデオをご覧になることをお勧めします。

C#コンパイルは2段階のプロセスです。詳細については、以下の図を参照してください。

  1. コンパイル:-コンパイルフェーズでは、個々のC#コードファイルが個々のコンパイル済みユニットにコンパイルされます。これらの個々のコンパイル済みコードファイルは、OBJディレクトリに格納されます。
  2. リンク:-リンクフェーズでは、これらの個々のコンパイル済みコードファイルがリンクされ、単一ユニットDLLおよびEXEが作成されます。これはBINディレクトリに格納されます。

C# bin vs obj folders

Binディレクトリとobjディレクトリの両方を比較すると、「obj」ディレクトリには個々のコンパイル済みコードファイルがあり、「bin」には単一のユニットがあるため、より多くのファイルが見つかります。

bin vs obj

23

objディレクトリは、ビルド中にコンパイラまたはビルドシステムによって生成される中間オブジェクトファイルおよびその他の一時データファイル用です。 binディレクトリは、最終出力バイナリ(および依存関係またはその他のデプロイ可能なファイル)が書き込まれるディレクトリです。

必要に応じて、プロジェクト設定内で両方の目的で使用される実際のディレクトリを変更できます。

16
Josh

Objディレクトリに関する1つの興味深い事実:Webプロジェクトでパブリッシュを設定している場合、パブリッシュされるファイルはobj\Release\Package\PackageTmpにステージングされます。統合されたVS機能を使用するのではなく、自分でファイルを公開する場合は、binディレクトリ内のすべてのデジタルデブリを選択するのではなく、ここで実際に展開する必要があるファイルを取得できます。

3
Roger Hill