当我在c#中创建和编译一个“Hello, World!”应用程序时,除了主要的exe(例如HelloWorld.exe),我在Debug文件夹中得到了三个文件。
这些文件有什么用途?
vshost.exe文件是Visual Studio运行的可执行文件(Visual Studio主机可执行文件)。这是链接到Visual Studio并改进调试的可执行文件。
当您将应用程序分发给其他人时,不要使用vshost.exe或.pdb(调试数据库)文件。
vshost.exe特性是在Visual Studio 2005中引入的(回答您的评论)。
它的主要目的是使调试启动更快——基本上已经有一个运行框架的进程,只要你想要它就可以加载你的应用程序。
更多信息请参见这篇MSDN文章和这篇博文。
.exe -“正常”可执行文件
.vshost.exe -一个特殊版本的可执行文件,以帮助调试;详见MSDN
.pdb - 程序数据库带调试符号
.vshost.exe。manifest -一种配置文件,主要包含对库的依赖
我不确定,但我相信这是一个调试优化。但是,我通常会关闭它(请参阅项目的调试属性),我没有注意到任何放缓,并且在调试时没有看到任何限制。
它似乎是一个用于调试的长时间运行的框架过程(以减少加载时间?)我发现,当您从调试器启动应用程序两次时,通常会使用相同的vshost.exe进程。它只是首先卸载所有用户加载的dll。如果你在处理来自托管进程的API钩子,这会产生一些奇怪的事情。
此外,你可以关闭你的释放构建配置的vshost文件的创建,并为调试启用它。
步骤
参考
节选自MSDN如何:禁用托管进程
当主机进程被启用时,对某些api的调用可能会受到影响。在这些情况下,有必要禁用托管进程以返回正确的结果。
禁用主机进程
当托管进程被禁用时,一些调试特性不可用或性能下降。更多信息,参见调试和托管过程。
一般情况下,当主机进程被禁用时: 开始调试. net框架应用程序所需的时间增加了。 设计时表达式求值不可用。 部分信任调试不可用。
一般情况下,当主机进程被禁用时: