vshost.exe调试宿主(VS Debug Host Process)进程详解

 

在Visual Studio 2005以后,编译完.NET程序以后,你会发现在bin文件夹里面除了生成的可执行exe文件以外,VS还自动给你生成了一个.vshost.exe文件。MSDN里面对这个程序的描述是:

 

下文引用自MSDN:


§  提高的调试性能 

 

宿主进程创建一个应用程序域并将调试器与应用程序关联起来。执行这些任务会导致在开始调试和开始运行应用程序之间有很明显的延迟。通过在后台创建应用程序域和关联调试器,并在运行应用程序之间保存应用程序域和调试器状态,宿主进程使性能得到提高。有关应用程序域的更多信息,请参见应用程序域。

 

§   部分信任调试 

 

在“项目设计器”的安全页中,可将应用程序指定为部分信任应用程序。调试部分信任应用程序需要对应用程序域进行特殊的初始化。此初始化由宿主进程处理。

 

§   设计时表达式计算 

 

设计时表达式计算使您可以从“即时”窗口进行代码测试,而不必运行应用程序。宿主进程在设计时表达式计算期间执行此代码。有关更多信息,请参见即时窗口。

 

然而VS 2005是如何使用.vshost.exe来做到上面说的这些功能(或者说改进)的呢?实际上你的托管程序是通过.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所提供的三个功能的流程:

§  设计时表达式计算 ,这个只会影响到Class Library(类型库)工程,.vshost.exe将.dll可执行文件加载到应用程序域里面,然后跟Visual Studio交互,获取表达式的值。如果将.vshost.exe禁用,那么你不能在类型库项目中使用设计时表达式计算这个功能。但是你仍然可以使用可执行文件的设计时表达式功能,这是因为Visual Studio通过直接启动你的可执行.exe文件来完成的。

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Donjuan/archive/2009/01/21/3849200.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值