概述.net開發過程中Bin目錄下面幾種文件格式
在.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支援一系列的資料類型(intfloat 、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是完全一樣的,主要用於宿主進程調試,不應透過應用程式直接運行或部署。
以上就是本文的全部內容,希望本文的內容對大家的學習或工作能帶來一定的幫助,

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

當今人工智慧(AI)技術的發展如火如荼,它們在各個領域都展現了巨大的潛力和影響力。今天大姚給大家分享4個.NET開源的AI模型LLM相關的專案框架,希望能為大家提供一些參考。 https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel是一種開源的軟體開發工具包(SDK),旨在將大型語言模型(LLM)如OpenAI、Azure

如果你是.NET開發者,你必須意識到在交付高品質軟體方面,優化功能和效能的重要性。透過熟練使用提供的資源並減少網站載入時間,你不僅為使用者創造了愉快的體驗,還能減少基礎設施成本。

在高並發請求處理方面,.NETASP.NETCoreWebAPI效能優於JavaSpringMVC,原因包括:AOT提前編譯,減少啟動時間;更精細的記憶體管理,由開發人員負責分配和釋放物件記憶體。

C#是一種現代、面向對象的編程語言,由微軟開發並作為.NET框架的一部分。 1.C#支持面向對象編程(OOP),包括封裝、繼承和多態。 2.C#中的異步編程通過async和await關鍵字實現,提高應用的響應性。 3.使用LINQ可以簡潔地處理數據集合。 4.常見錯誤包括空引用異常和索引超出範圍異常,調試技巧包括使用調試器和異常處理。 5.性能優化包括使用StringBuilder和避免不必要的裝箱和拆箱。

C#.NET面試問題和答案包括基礎知識、核心概念和高級用法。 1)基礎知識:C#是微軟開發的面向對象語言,主要用於.NET框架。 2)核心概念:委託和事件允許動態綁定方法,LINQ提供強大查詢功能。 3)高級用法:異步編程提高響應性,表達式樹用於動態代碼構建。

C#.NET依然重要,因為它提供了強大的工具和庫,支持多種應用開發。 1)C#結合.NET框架,使開發高效便捷。 2)C#的類型安全和垃圾回收機制增強了其優勢。 3).NET提供跨平台運行環境和豐富的API,提升了開發靈活性。

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.
