vshost.exe文件的用途是什么?
当我在C#中创build和编译一个“hello world”应用程序时,除了主exe文件(例如HelloWorld.exe)外,Debug文件夹中还有三个文件。
- HelloWorld.vshost.exe
- HelloWorld.pdb
- HelloWorld.vshost.exe.manifest
这些文件的用途是什么?
VS2005引入了vshost.exefunction(回答您的评论)。
其目的主要是使debugging更快启动 – 基本上已经有一个框架运行的过程,只要你愿意,就准备好加载你的应用程序。
有关更多信息,请参阅此MSDN文章和此博客文章 。
-
.exe – “正常”可执行文件
-
.vshost.exe – 帮助debugging的特殊版本的可执行文件; 详情请参阅MSDN
-
.pdb – 带有debugging符号的程序数据库
-
.vshost.exe.manifest – 一种主要包含库依赖关系的configuration文件
vshost.exe文件是由Visual Studio(Visual Studio主机可执行文件)运行的可执行文件。 这是链接到Visual Studio并改进debugging的可执行文件。
将应用程序分发给其他人时,不要使用vshost.exe或.pdb(debugging数据库)文件。
我不确定,但我相信这是一个debugging优化。 但是,我通常closures它(请参阅项目的debugging属性),我没有注意到任何放缓,并且在debugging时我没有看到任何限制,所以在Guard中debugging肯定不是必需的。
继续添加,您可以closures为您的版本构buildconfiguration创buildvshost文件,并启用debugging 。
脚步
- 项目属性 > debugging >configuration(发布)>禁用Visual Studio托pipe过程
- 项目属性 > debugging >configuration(debugging)>启用Visual Studio托pipe过程
参考
- MSDN如何:禁用托pipe过程
- MSDN主机进程(vshost.exe)
摘自MSDN如何:禁用托pipe过程
主机进程启用时,对某些API的调用可能会受到影响。 在这些情况下,有必要禁用主机进程以返回正确的结果。
禁用主机进程
- 在Visual Studio中打开一个可执行项目。 不生成可执行文件的项目(例如,类库或服务项目)不具有此选项。
- 在项目菜单上,单击属性 。
- 单击debugging选项卡。
- 清除启用Visual Studio宿主进程checkbox。
主机进程被禁用时,几个debuggingfunction不可用或体验下降的性能。 有关更多信息,请参阅debugging和托pipe过程 。
一般来说,当主机进程被禁用时:
- 开始debugging.NET Framework应用程序所需的时间会增加。
- devise时expression式评估不可用。
- 部分信任debugging不可用。
这似乎是一个长期运行的debugging框架过程(以减less加载时间?)。 我发现,当你从debugging器开始你的应用程序两次,通常会使用相同的vshost.exe进程。 它只是首先卸载所有用户加载的DLL。 如果你在托pipe进程中的API挂钩,这是奇怪的事情。