首页 文章

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

提问于
浏览
458

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

  • HelloWorld.vshost.exe

  • HelloWorld.pdb

  • HelloWorld.vshost.exe.manifest

这些文件的用途是什么?

6 回答

  • 2

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

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

    有关更多信息,请参见this MSDN articlethis blog post .

  • 10
    • .exe - '普通'可执行文件

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

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

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

  • 17

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

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

  • 403

    添加后,您可以关闭 Release 构建配置的vshost文件的创建,并为 Debug 启用它 .

    Steps

    • Project Properties > Debug >配置(发布)>禁用Visual Studio主机进程

    • Project Properties > Debug >配置(调试)>启用Visual Studio主机进程

    Screenshot from VS2010

    Reference

    摘自MSDN How to: Disable the Hosting Process

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

    要禁用托管过程

    • 在Visual Studio中打开可执行项目 . 不生成可执行文件的项目(例如,类库或服务项目)没有此选项 .

    • Project 菜单上,单击 Properties .

    • 单击 Debug 选项卡 .

    • 清除 Enable the Visual Studio hosting process 复选框 .

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

    通常,禁用托管进程时:开始调试.NET Framework应用程序所需的时间会增加 . 设计时表达式评估不可用 . 部分信任调试不可用 .

  • 167

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

  • 61

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

相关问题