vshost.exe文件的用途是什么?

当我在C#中创build和编译一个“hello world”应用程序时,除了主exe文件(例如HelloWorld.exe)外,Debug文件夹中还有三个文件。

  1. HelloWorld.vshost.exe
  2. HelloWorld.pdb
  3. 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过程

从VS2010截图

参考

  1. MSDN如何:禁用托pipe过程
  2. MSDN主机进程(vshost.exe)

摘自MSDN如何:禁用托pipe过程

主机进程启用时,对某些API的调用可能会受到影响。 在这些情况下,有必要禁用主机进程以返回正确的结果。

禁用主机进程

  1. 在Visual Studio中打开一个可执行项目。 不生成可执行文件的项目(例如,类库或服务项目)不具有此选项。
  2. 项目菜单上,单击属性
  3. 单击debugging选项卡。
  4. 清除启用Visual Studio宿主进程checkbox。

主机进程被禁用时,几个debuggingfunction不可用或体验下降的性能。 有关更多信息,请参阅debugging和托pipe过程 。

一般来说,当主机进程被禁用时:

  • 开始debugging.NET Framework应用程序所需的时间会增加。
  • devise时expression式评估不可用。
  • 部分信任debugging不可用。

这似乎是一个长期运行的debugging框架过程(以减less加载时间?)。 我发现,当你从debugging器开始你的应用程序两次,通常会使用相同的vshost.exe进程。 它只是首先卸载所有用户加载的DLL。 如果你在托pipe进程中的API挂钩,这是奇怪的事情。