概述.net開發過程中Bin目錄下面幾種檔案格式

來源:互聯網
上載者:User
在.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是完全一樣的,主要用於宿主進程調試,不應通過應用程式直接運行或部署。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的協助,

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.