回答:
obj
フォルダが保持しているオブジェクト、または中間、ファイルまだリンクされていないバイナリファイルをコンパイルされ、。これらは基本的に、最終的な実行可能ファイルを生成するために結合されるフラグメントです。コンパイラーは、ソースファイルごとに1つのオブジェクトファイルを生成し、それらのファイルはobj
フォルダーに配置されます。
このbin
フォルダーには、アプリケーションまたはライブラリの実際の実行可能コードであるバイナリファイルが格納されます。
これらの各フォルダーはさらにDebug
とRelease
フォルダーに細分され、これらは単にプロジェクトのビルド構成に対応しています。上記の2つのタイプのファイルは、実行するビルドのタイプに応じて、適切なフォルダーに配置されます。これにより、デバッグシンボルを使用してビルドされた実行可能ファイルと、最適化を有効にしてビルドされ、リリースの準備ができた実行可能ファイルを簡単に判別できます。
プロジェクトのプロパティで、コンパイル中にVisual Studioが実行可能ファイルを出力する場所を変更できることに注意してください。ビルド構成の名前と選択したオプションを変更することもできます。
obj
本当にだけ含まれているリンクされていないオブジェクトコードファイルを?私の経験では、これらにはすべてが含まれており、最後のビルドステップでは、「最終セット」の一部であるファイルがにコピーされbin
ます。
C#binとobjフォルダーの違いを示し、インクリメンタル/条件付きコンパイルの利点を得る方法を説明するこのyoutubeビデオをご覧になることをお勧めします。
C#のコンパイルは2段階のプロセスです。詳細については、以下の図を参照してください。
binとobjの両方のディレクトリを比較すると、「obj」ディレクトリには個別のコンパイル済みコードファイルがあり、「bin」には単一のユニットがあるため、より多くのファイルが見つかります。
このobj
ディレクトリは、ビルド中にコンパイラまたはビルドシステムによって生成される中間オブジェクトファイルおよびその他の一時データファイル用です。bin
ディレクトリには、最終的な出力バイナリ(およびすべての依存関係やその他の展開可能ファイル)に書き込まれることのディレクトリです。
必要に応じて、プロジェクト設定内で両方の目的に使用される実際のディレクトリを変更できます。
setup
プロジェクトを使用する場合は注意してください。Visual StudioセットアッププロジェクトPrimary Output
は、obj
ではなくフォルダーからプルしますbin
。
私は私が思ったアプリケーションがで難読化し、署名して解放したmsi
私は、デプロイされたアプリケーションファイルが実際にどちらにビルド後の手順を実行すると、難読化されなかったり、私として締結されたことを発見する前に、かなりしばらくの間、セットアップbin
フォルダのアセンブリおよびターゲティングされている必要がありますobj
フォルダを代わりにアセンブリ。
これは直感的なものとはほど遠いですが、一般的なsetup
アプローチはPrimary Output
プロジェクトのを使用することであり、これがobj
フォルダーです。誰かがこれについていくつかの光を当てることができれば私はそれを愛しています。