Visual Studio 2010で新しいプロジェクトを作成し、プロジェクトディレクトリにobj
およびbin
という名前の2つの新しいフォルダーがあることに気付きました。
ビルドおよびデバッグ時に、同様のフォルダーのペアが作成されます-これらのフォルダーは何のためですか?
obj
フォルダーは、オブジェクト、または中間ファイルを保持します。これは、まだリンクされていないコンパイル済みのバイナリファイルです。これらは本質的に、最終的な実行可能ファイルを生成するために結合されるフラグメントです。コンパイラはソースファイルごとに1つのオブジェクトファイルを生成し、それらのファイルはobj
フォルダーに配置されます。
bin
フォルダーはバイナリファイルを保持します。これは、アプリケーションまたはライブラリの実際の実行可能コードです。
これらの各フォルダーは、Debug
フォルダーとRelease
フォルダーにさらに細分化され、プロジェクトのビルド構成に対応しています。上記の2種類のファイルは、実行するビルドの種類に応じて、適切なフォルダーに配置されます。これにより、デバッグシンボルを使用してビルドされた実行可能ファイルと、最適化を有効にしてリリースの準備ができてビルドされた実行可能ファイルを簡単に判断できます。
プロジェクトのプロパティでコンパイル中にVisual Studioが実行可能ファイルを出力する場所を変更できることに注意してください。ビルド構成の名前と選択したオプションを変更することもできます。
C#binとobjフォルダー の違いを示し、インクリメンタル/条件付きコンパイルの利点を得る方法を説明するこのYouTubeビデオをご覧になることをお勧めします。
C#コンパイルは2段階のプロセスです。詳細については、以下の図を参照してください。
Binディレクトリとobjディレクトリの両方を比較すると、「obj」ディレクトリには個々のコンパイル済みコードファイルがあり、「bin」には単一のユニットがあるため、より多くのファイルが見つかります。
obj
ディレクトリは、ビルド中にコンパイラまたはビルドシステムによって生成される中間オブジェクトファイルおよびその他の一時データファイル用です。 bin
ディレクトリは、最終出力バイナリ(および依存関係またはその他のデプロイ可能なファイル)が書き込まれるディレクトリです。
必要に応じて、プロジェクト設定内で両方の目的で使用される実際のディレクトリを変更できます。
Objディレクトリに関する1つの興味深い事実:Webプロジェクトでパブリッシュを設定している場合、パブリッシュされるファイルはobj\Release\Package\PackageTmpにステージングされます。統合されたVS機能を使用するのではなく、自分でファイルを公開する場合は、binディレクトリ内のすべてのデジタルデブリを選択するのではなく、ここで実際に展開する必要があるファイルを取得できます。