在.NET開發中,我們經常會在bin目錄下面看到這些類型的文件:
.pdb、.xsd、.vshost.exe、.exe、.exe.config、.vshost.exe.config
項目發布的時候,往往搞不清楚哪些是需要的,那些是不需要的。那麼這些格式的文件到底是干什麼用的呢?
pdb
.pdb文件,是VS生成的用於調試的符號文件(program database),保存著調試的信息。在VS的工程屬性,C/C++,調試信息格式,設置/Zi,那麼VS就會在構建項目時創建PDB文件。
在這裡要區分兩種情況:
1、構建靜態庫時,可以在工程屬性 –> C/C++ –> 輸出文件 –> 程序數據庫名 設置生成的pdb文件名稱,如果不指定,默認是生成為VCx0.pdb,這裡x是VS版本號,例如用VS2005,就會生成VC80.pdb。這裡就會產 生一個疑問,編譯靜態庫時默認生成的.pdb文件名字都一樣,那引用這個靜態庫的項目最後能找到正確的.pdb文件嗎?答案是肯定的,因為VS會在生成的 文件中嵌入 .pdb 文件的路徑。
舉個例子,在Project/ToolA下,構建了一個靜態庫ToolA.lib,對應生成一個vc80.pdb,同樣在在Project /ToolB下,構建了一個靜態庫ToolB.lib,對應生成一個vc80.pdb。然後最終的工程Work.exe同時鏈接了這兩個靜態庫.這時,生 成Work.pdb的時候,就會在ToolA.lib中找到它對應的符號文件路徑Project/ToolA/vc80.pdb,以及ToolB.lib 對應的符號文件路徑Project/ToolB/vc80.pdb,合並生成最終工程的Work.pdb。
2、構建可執行文件或動態庫,這種情況下,編譯器會生成一個.pdb文件,鏈接器會生成一個.pdb文件,編譯器生成的pdb文件可以在在工程屬 性 –> C/C++ –> 輸出文件 –> 程序數據庫名 設置,鏈接器生成的.pdb文件可以在工程屬性 –> 鏈接器 –> 調試 –> 生成調試信息(設置Yes),生成程序數據庫名設 置。
這兩個pdb文件有什麼不一樣呢?編譯器生成的pdb文件,默認也是用vcx0命名,是編譯器在編譯過程中,把每個.obj文件對應的符號信息存儲在其中的,但不包括函數定義。而鏈接器生成的.pdb文件,默認使用工程名命名,是鏈接器在鏈接工程時,根據編譯器生成的vcx0.pdb再進一步加工出 來的,具有完整信息的符號文件。就像鏈接器根據各個.obj文件生成exe或dll一樣,編譯器生成的.pdb文件是編譯-鏈接過程的中間產物,最後用於 調試程序的是鏈接器生成的ProjectName.pdb.
上面說的是pdb文件生成規則。在使用的時候,調時期會取到文件對應的pdb文件路徑,然後去那個路徑(絕對路徑)下找,如果這個exe或者dll 是自己編的,那無論它放在哪裡,pdb文件只要不動,調試器都能找到它。如果調試器在那個路徑下找不到,就會到exe或者dll的同級目錄找。例如這個工 程是別人編出來的,連同符號文件一起發過來,我們只要把符號文件與exe或者dll放在同級目錄,調試器也能找到它。當然,在調試器中也可以自己指定符號 文件路徑
XSD
XSD是指XML結構定義 ( XML Schemas Definition )
XML Schema 是DTD的替代品。XML Schema語言也就是XSD。
XML Schema描述了XML文檔的結構。可以用一個指定的XML Schema來驗證某個XML文檔,以檢查該XML文檔是否符合其要求。文檔設計者可以通過XML Schema指定一個XML文檔所允許的結構和內容,並可據此檢查一個XML文檔是否是有效的。XML Schema本身是一個XML文檔,它符合XML語法結構。可以用通用的XML解析器解析它。
一個XML Schema會定義:文檔中出現的元素、文檔中出現的屬性、子元素、子元素的數量、子元素的順序、元素是否為空、元素和屬性的數據類型、元素或屬性的默認和固定值。
XSD是DTD替代者的原因,一是據將來的條件可擴展,二是比DTD豐富和有用,三是用XML書寫,四是支持數據類型,五是支持命名空間。
XSD文件的後綴名為.xsd。
XML Schema的優點:
1) XML Schema基於XML,沒有專門的語法
2) XML可以象其他XML文件一樣解析和處理
3) XML Schema支持一系列的數據類型(int、float、Boolean、date等)
4) XML Schema提供可擴充的數據模型。
5) XML Schema支持綜合命名空間
6) XML Schema支持屬性組。
.vshost.exe和.exe
.vshost.exe顧名思義,是visual studio宿主應用程序,vs運行調試時是打開的其實是這個文件,這個程序可以讓vs跟蹤調試信息。宿主進程是 Visual Studio 2005/2008/2010/201x 中的一項功能,能提高調試性能,支持部分信任調試並支持設計時表達式計算。
宿主進程文件的文件名中包含 vshost,並位於項目的輸出文件夾中。而exe則可以直接打開,vs不會跟蹤任何這個文件的運行情況。只要引用的程序集完整,可直接運行。
.exe.config和.vshost.exe.config的差異
.exe.config是非調試下的配置文件。
vshost.exe.config是個臨時文件,在debug時候生成的調試的時候用的。
文件夾中vshost.exe.config文件的內容和.exe.config是完全一樣的,主要用於宿主進程調試,不應通過應用程序直接運行或部署。
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持幫客之家!