2010-12-06 65 views
4

爲什麼x86文件夾存在於c Sharp項目文件中的obj文件夾中?爲什麼x86文件夾在c#項目目錄下?

我的項目文件結構

ProjectOne
----------斌
--------------調試
---- ---------- Release
---------- Obj
-------------- x86 //爲什麼這樣?
-------------------調試
-------------------版本
---- - 我的源文件。

爲什麼我的文件當前目錄是bin \ debug,而不是projectOne(我的源文件存在)?

回答

6

當執行時,當前目錄將默認爲可執行文件的任何位置 - 這將位於bin/debug目錄中。 (在項目屬性中 - 如果你需要更多的細節,請準確地說出你正在使用哪個版本的VS)。你可以設置它在Visual Studio中啓動時的運行位置。

至於obj目錄的內容 - 幾乎可以忽略整個目錄。它充滿了Visual Studio構建然後消耗的中間文件 - 但您無需直接使用任何文件。

+0

哦!你的意思是當前目錄是,我的exe文件存在的位置...我想在projectOne目錄中使用xml文件,我會去2文件夾,../../xmlfile – PawanS 2010-12-06 07:32:38

+2

如果右鍵單擊屬性Visual Studio中的xml文件,您可以將「複製到輸出目錄」設置爲「複製,如果更新」,並且在構建時它將被複制到bin/Debug目錄中,並且將使您的應用程序更容易部署。 – cspolton 2010-12-06 07:37:21

+0

@spolto ...哇! thanx這個提示。無論如何,我解決了我的問題,但你給了非常好的提示。 – PawanS 2010-12-06 07:40:07

0

bin文件夾包含您的應用程序的二進制文件(即您的可執行文件)。它被細分爲兩個(或更多)文件夾 - 通常爲DebugRelease。這些對應於您的構建配置。編譯項目時,可執行文件將被放入其中一個文件夾中,具體取決於您執行的構建類型。如果您想在開發環境之外運行可執行文件,則可以單擊在其中一個文件夾中找到的「.exe」文件。

如果您願意,可以在編譯期間使用項目的「屬性」窗口更改Visual Studio輸出可執行文件的位置。

obj目錄包含Visual Studio在編譯應用程序時構建的中間(或對象)文件。這不是真正需要擔心或使用文件的東西。

最後,您的源文件保存在根目錄中,如「解決方案資源管理器」窗口中所示。你自己管理這些文件的位置;它們不是由Visual Studio管理的。

1

x86文件夾是指構建配置管理器中的目標平臺。它允許您在64位操作系統上構建32位應用程序。正如科迪和喬恩說的,你可以忽略obj目錄。

0

目標文件(存儲在Obj中的文件)是未鏈接的編譯後的二進制文件。把它想象成最終可執行文件的片段,這些可執行文件稍後將被合併爲可執行文件。

編譯源代碼時,每個源文件將被鬆散地編譯爲一個目標文件。爲什麼?沒有理由*,你的特定編譯器是如何編寫的。還有其他語言的其他編譯器不會這樣做,而是一步將所有內容編譯成一個大的二進制文件。但編寫編譯器的人決定先編譯來分離目標文件。

現在,你可以想像,如果每個源文件生成一個目標文件,則每次編譯代碼源目錄將最終被亂,充滿了很多的obj文件(實際上是一個很大的C編譯器的傳統做過這個)。隨着時間的推移,開發大型項目的開發人員開始編寫編譯腳本或配置其項目,以便將所有.obj文件收集到一個目錄中,以減少源目錄的混亂。

編寫編譯器的人明顯喜歡單獨Obj目錄的想法,因此他們將其作爲項目的默認配置。至於爲什麼有一個x86子目錄,這是因爲你的編譯器還支持其他CPU,如ARM(對於Android,Win Phone 7和iPhone)以及區分32位和64位。


*注:實際上,有一些很好的理由要做到這一點,包括使編譯器代碼更加模塊化,並支持漸進式編譯但事實上,有些人可以做的一切,沒有產生獨立的OBJ文件意味着它主要是編譯器開發人員的設計決定,而不是必須的。

相關問題