vshost.exe文件的目的是什么?

Mil*_*len 475 c# debugging visual-studio

当我在C#中创建并编译"hello world"应用程序时,除了主exe之外,我在Debug文件夹中得到三个文件(例如HelloWorld.exe)

  1. HelloWorld.vshost.exe
  2. HelloWorld.pdb
  3. HelloWorld.vshost.exe.manifest

这些文件的用途是什么?

Jon*_*eet 411

VS2005引入了vshost.exe功能(以回答您的评论).

它的目的主要是使调试启动更快 - 基本上已经有一个框架运行的过程,只需准备好在你想要的时候加载你的应用程序.

有关详细信息,请参阅此MSDN文章此博客文章.

  • 这就是为什么当我从调试器运行Console.Write(System.AppDomain.CurrentDomain.FriendlyName)时,我得到了app.vshost.exe,当我直接从exe运行时,我输出为app.exe (29认同)
  • 如果存在vschost和.pdb文件用于调试目的,那么当我在Release中编译时,为什么它们仍然包括在内? (2认同)
  • 我猜他们在 Visual Studio 2017 中删除了它 (2认同)

Dan*_*ner 174

  • .exe - "正常"可执行文件

  • .vshost.exe - 可执行文件的特殊版本,用于辅助debuging; 有关详细信息,请参阅MSDN

  • .pdb - 带有调试符号的程序数据库

  • .vshost.exe.manifest - 一种主要包含库依赖项的配置文件


Wil*_*ins 62

vshost.exe文件是Visual Studio运行的可执行文件(visual studio主机可执行文件).这是链接到Visual Studio并改进调试的可执行文件.

当您将应用程序分发给其他人时,不要使用vshost.exe或.pdb(调试数据库)文件.

  • VS主机进程仅用于改善debuging - 但它不能实现debuging. (3认同)

Sim*_*Ink 20

另外,您可以为Release版本配置关闭vshost文件的创建,并为Debug启用它.

脚步

  • 项目属性 > 调试 >配置(发布)>禁用Visual Studio宿主过程
  • 项目属性 > 调试 >配置(调试)>启用Visual Studio主机进程

VS2010的屏幕截图

参考

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

摘自MSDN如何:禁用主机进程

启用主机进程时,可能会影响对某些API的调用.在这些情况下,必须禁用托管过程以返回正确的结果.

要禁用托管过程

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

当托管过程被禁用时,几个调试功能不可用或性能下降.有关更多信息,请参阅调试和托管过程.

通常,当托管过程被禁用时:

  • 开始调试.NET Framework应用程序所需的时间增加了.
  • 设计时表达式评估不可用.
  • 部分信任调试不可用.


Bri*_*sen 10

我不确定,但我相信这是一个调试优化.但是,我通常将其关闭(请参阅项目的调试属性)并且我没有注意到任何减速并且我看到在调试方面没有任何限制,因此根据Guard的说明,它当然不需要进行调试.