[*.vshost.exe] ---宿主進程

       [*.vshost.exe] 也叫宿主進程,是VS2005/2008/2010中的一項功能,能提高調試性能,支持部分信任調試並支持設計時錶達式計算。宿主進程文件的文件名中包含 vshost, 並位於項目的輸出文件夾中。

  託管程序是通過[*.vshost.exe]啓動的,而[*.vshost.exe]是一個固定的程序,在每次啓動調試過程前,VS會把[*.vshost.exe]拷貝到被調試進程的同一目錄裏面,然後在後臺幫你啓動[*.vshost.exe]以便節省調試時間,直到你關閉VS或者關閉當前的VS解決方案(.sln文件),VS纔會終止[*.vshost.exe].

[*.vshost.exe]負責創建應用程序域並將調試器和自身關聯起來,因爲在你調試你的.NET工程的時候,[*.vshost.exe]只啓動一次,因此避免了每一次調試.NET可執行文件時準備調試環境的過程,然後[*.vshost.exe]使用AppDomain.ExecuteAssembly函數來執行我們的可執行文件。

宿主進程文件 (.vshost.exe) 由 VS使用,不應通過應用程序直接運行或部署。

提高調試性能

  宿主進程創建一個應用程序域並將調試器與應用程序關聯起來。執行這些任務會導致在開始調試和開始運行應用程序之間有很明顯的延遲。通過在後臺創建應用程序域和關聯調試器,並在運行應用程序之間保存應用程序域和調試器狀態,宿主進程使性能得到提高。


部分信任調試

  在“項目設計器”的安全頁中,可將應用程序指定爲部分信任應用程序。調試部分信任應用程序需要對應用程序域進行特殊的初始化。此初始化由宿主進程處理。



調試與宿主進程

  Visual Studio 宿主進程提高了調試器性能,並啓用了新的調試器功能,如部分信任調試和設計時錶達式計算。如果需要,您可以禁用宿主進程。

用宿主進程和不用宿主進程進行調試的一些差異

1)    部分信任調試和 Click-Once 安全

部分信任調試需要宿主進程。如果禁用宿主進程,部分信任調試將不工作,即使在“項目屬性”的“安全”頁上啓用了部分信任安全。

2)    設計時錶達式計算

設計時錶達式始終使用宿主進程。如果在“項目屬性”中禁用宿主進程,則禁用了類庫項目的設計時錶達式計算。對於其他項目類型,不禁用設計時錶達式計算。相反,Visual Studio 啓動實際可執行文件,並將它用於不用宿主進程的設計時計算。這種差異可能產生不同的結果。

3)    AppDomain.CurrentDomain.FriendlyName 差異

AppDomain.CurrentDomain.FriendlyName 依據是否啓用宿主進程返回不同的結果。如果啓用宿主進程時調用 AppDomain.CurrentDomain.FriendlyName,它將返回 app_name.vhost.exe。如果禁用宿主進程時調用它,它將返回 app_name.exe。

4)    Assembly.GetCallingAssembly().FullName 差異

Assembly.GetCallingAssembly().FullName 依據是否啓用宿主進程返回不同的結果。如果啓用宿主進程時調用 Assembly.GetCallingAssembly().FullName,它將返回 mscorlib。如果禁用宿主進程時調用 Assembly.GetCallingAssembly().FullName,它將返回該應用程序名。





發佈了48 篇原創文章 · 獲贊 14 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章