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

时间:2009-04-21 19:24:48

标签: c# visual-studio debugging

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

  1. HelloWorld.vshost.exe
  2. HelloWorld.pdb
  3. HelloWorld.vshost.exe.manifest
  4. 这些文件的用途是什么?

6 个答案:

答案 0 :(得分:407)

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

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

有关详细信息,请参阅this MSDN articlethis blog post

答案 1 :(得分:170)

  • .exe - “正常”可执行文件

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

  • .pdb - 带有调试符号的Program Data Base

  • .vshost.exe.manifest - 一种configuration file,主要包含对库的依赖

答案 2 :(得分:62)

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

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

答案 3 :(得分:17)

此外,您可以为发布构建配置关闭vshost文件的创建,并为调试启用它。

<强>步骤

  • 项目属性&gt; 调试&gt;配置(发布)&gt;禁用Visual Studio托管过程
  • 项目属性&gt; 调试&gt;配置(调试)&gt;启用Visual Studio托管过程

Screenshot from VS2010

<强>参考

  1. MSDN How to: Disable the Hosting Process
  2. MSDN Hosting Process (vshost.exe)
  3. 摘自MSDN How to: Disable the Hosting Process

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

    禁用托管流程

    1. 在Visual Studio中打开可执行项目。不生成可执行文件的项目(例如,类库或服务项目)没有此选项。
    2. 项目菜单上,点击属性
    3. 点击调试标签。
    4. 清除启用Visual Studio托管过程复选框。
    5. 禁用托管过程时,多个调试功能不可用或性能下降。有关详细信息,请参阅Debugging and the Hosting Process

        

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

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

答案 4 :(得分:10)

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

答案 5 :(得分:2)

这似乎是一个长期运行的调试框架过程(减少加载时间?)。我发现当您从调试器启动应用程序两次时,通常会使用相同的vshost.exe进程。它只是首先卸载所有用户加载的DLL。如果您在使用来自托管进程的API挂钩时,这会很奇怪。