2010-12-06 9 views
4

なぜシャーププロジェクトファイル内のobjフォルダにx86フォルダが存在するのですか?なぜC#プロジェクトディレクトリのx86フォルダーですか?

マイプロジェクトのファイル構造は

ProjectOne
です----------ビン
--------------デバッグ
---- ----------リリース
---------- Obj
-------------- x86 //これはなぜですか?
-------------------デバッグ
-------------------リリース
---- - 私のソースファイル。

なぜ現在のファイルがbin \ debugで、projectOne(ソースファイルが存在する場所)ではないのですか?

答えて

6

実行時には、現在のディレクトリは、実行可能ファイルがある場所であれば、デフォルトでbin/debugディレクトリにあります。

Visual Studioでプロジェクトを開始したときから実行する場所を設定することができます(プロジェクトのプロパティ - 詳細が必要な場合は、使用しているVSのバージョン/バージョンを正確に記述してください)。

objディレクトリの内容については、ディレクトリ全体を無視することができます。 Visual Studioがビルドして使用する中間ファイルがいっぱいですが、そこから直接ファイルを使用する必要はありません。

+0

oh !!私のexeファイルが存在する現在のディレクトリを意味する...私はprojectOneディレクトリにxmlファイルを使用したい、私は2つのフォルダに行くだろう../../xmlfile – PawanS

+2

ビルド時にbin/Debugディレクトリにコピーされ、アプリケーションのデプロイメントが容易になります。Visual Studioの場合、 "Output Directoryにコピー"を "Copy if newer"に設定できます。 – cspolton

+0

@spolto ...うわー!!このチップのために高すぎる。とにかく私は私の問題を解決したが、本当に素敵な先端を与えた。 – PawanS

0

binフォルダには、アプリケーションのバイナリファイル(実行ファイル)が含まれています。 2つ(またはそれ以上)のフォルダに細分化されています(通常DebugRelease)。これらはビルド構成に対応しています。プロジェクトがコンパイルされると、実行したビルドのタイプに応じて、実行可能ファイルがこれらのフォルダのいずれかに配置されます。開発環境の外部で実行可能ファイルを実行する場合は、これらのフォルダのいずれかにある ".exe"ファイルをクリックします。

希望する場合は、プロジェクトのプロパティウィンドウを使用して、コンパイル中にVisual Studioが実行可能ファイルを出力する場所を変更できます。

objディレクトリには、アプリケーションのコンパイル時にVisual Studioがビルドする中間ファイル(またはオブジェクト)が含まれています。それはあなたが心配したり、ファイルを使用する必要が本当に何かではありません。

最後に、ソースファイルは、ソリューションエクスプローラウィンドウに表示されているルートディレクトリに保存されます。これらのファイルの場所は自分で管理します。 Visual Studioによって管理されていません。

1

x86フォルダーは、ビルド構成マネージャーでのビルドのターゲットプラットフォームを指します。 64ビットOS上に32ビットアプリケーションを構築することができます。コーディとジョンは、objディレクトリを無視できると言っています。

+0

あなたはSpoltoに感謝しました。私は疑問を解決しました。 – PawanS

0

オブジェクトファイル(Objに格納されているファイル)は、リンクされていないコンパイル済みバイナリファイルです。それを後で実行可能ファイルを作るために組み合わせる最終実行ファイルの断片と考えてください。

ソースコードをコンパイルするとき、各ソースファイルは1つのオブジェクトファイルに緩やかにコンパイルされます。どうして?特定のコンパイラがどのように書かれたかは理由もありません。他の言語ではこれをしないコンパイラがありますが、すべてをコンパイルして1つの大きなバイナリにまとめます。しかし、あなたのコンパイラを書いた人は、最初にコンパイルしてオブジェクトファイルを分離することに決めました。

ここで、各ソースファイルが1つのオブジェクトファイルを生成すると、コードをコンパイルするたびにソースディレクトリが厄介になり、たくさんの.objファイル(実際には多くのCコンパイラこれをした)。時間が経つにつれて、大規模プロジェクトに取り組んでいる開発者は、コンパイルスクリプトを作成したり、プロジェクトを構成してすべての.objファイルを1つのディレクトリに集めて、ソースディレクトリを乱雑にしなくしました。

あなたのコンパイラを書いた人は、別のObjディレクトリのアイデアを気に入っていたので、プロジェクトのデフォルト設定にしました。あなたのコンパイラがARM(Android用、Win Phone 7、iPhone用)のような他のCPUもサポートし、32ビットと64ビットを区別できるため、x86サブディレクトリがあるのはなぜですか。


*注:コンパイラのコードはよりモジュール作り、インクリメンタル・コンパイルをサポートするが、一部の人は別々のOBJファイルを生成せずにすべてのことを行うことができるという事実があることを意味するなど、これを行うにはいくつかの非常に良い理由が実際にあります。これは、コンパイラの開発者による設計の決定の大部分が、必要以上に重要です。

+0

実行またはコンパイルプロセス中にオブジェクトファイルが作成されたことを記述した有効なソースを教えていただけますか? –

+0

@VikasVerma:今私はそれをGoogleにすることができると思う便利な参照を持っていないが、もし私がgoogleに行くなら、私はGoogleにそれを伝えるかもしれない。すべての.objファイルを削除し、ソースをコンパイルするだけです。生成されたものが表示されます。つまり、それらはコンパイルプロセスによって生成されます。 – slebetman

+0

.objファイルを見るためにobjフォルダを見ましたが、コンパイル後に.obj関連ファイルが見つかりませんでした。 –

関連する問題