當我創建和編譯一個 「Hello World」,在C#應用程序,我得到在遠離主exe文件Debug文件夾中的三個文件(如HelloWorld.exe的)vshost.exe文件的用途是什麼?
- HelloWorld.vshost.exe
- 的HelloWorld .PDB
- HelloWorld.vshost.exe.manifest
這些文件的目的是什麼呢?
當我創建和編譯一個 「Hello World」,在C#應用程序,我得到在遠離主exe文件Debug文件夾中的三個文件(如HelloWorld.exe的)vshost.exe文件的用途是什麼?
這些文件的目的是什麼呢?
VS2005引入了vshost.exe功能(回答您的評論)。
它的目的主要是使調試更快啓動 - 基本上已經有一個框架運行的過程,只要你願意,就準備好加載你的應用程序。
請參閱this MSDN article和this blog post瞭解更多信息。
vshost.exe文件是由Visual Studio(Visual Studio主機可執行文件)運行的可執行文件。這是鏈接到Visual Studio並改進調試的可執行文件。
將應用程序分發給其他人時,不要使用vshost.exe或.pdb(調試數據庫)文件。
.exe文件 - '正常' 的可執行
.vshost.exe - 可執行文件,以幫助調試運行的一個特殊版本;見MSDN的細節
.PDB - 在Program Data Base與調試符號
.vshost.exe.manifest - 一種主要包含configuration file依存信息庫
我不知道,但我相信這是一個調試優化。但是,我通常關閉它(請參閱項目的調試屬性),並且我沒有注意到任何放緩,並且在調試時我沒有看到任何限制,因此Guard在調試時並不需要它。
它似乎是一個長時間運行的調試框架過程(以減少加載時間?)。我發現當你從調試器啓動應用程序兩次時,通常會使用相同的vshost.exe進程。它只是首先卸載所有用戶加載的DLL。如果你從託管進程中調用API鉤子,這會做一些奇怪的事情。
添加上,你可以關閉的vshost文件的創建爲您發佈構建配置,並將它啓用調試。
步驟
參考
摘自MSDN How to: Disable the Hosting Process
呼叫至某些API可能會受到影響,當託管的凝固酶原ss已啓用。在這些情況下,有必要禁用主機進程以返回正確的結果。
要禁用託管進程
當主機進程被禁用時,幾個調試功能不可用或者體驗性能下降。有關更多信息,請參閱Debugging and the Hosting Process。
在一般情況下,當宿主進程被禁用:
- 開始調試.NET Framework應用程序所需時間會增加。
- 設計時錶達式評估不可用。
- 部分信任調試不可用。
我記得我們在VS2003中沒有這樣的可執行文件(但我們確實有斷點)。你能詳細說明一下嗎? – 2009-04-21 19:28:59
此外,清單是關於通常也鏈接到可執行文件的應用程序的元數據。 .pdb文件是一個可移植調試數據庫,包含有關編譯可執行文件的調試信息,例如可執行文件中的哪一點對應於代碼中的哪一行。 – Joey 2009-04-21 19:29:42
VS主機進程僅用於改進調試 - 但不啓用調試。 – 2009-04-21 19:42:18