当我在C#中创建并编译"hello world"应用程序时,除了主exe之外,我在Debug文件夹中得到三个文件(例如HelloWorld.exe)
HelloWorld.vshost.exe
HelloWorld.pdb
HelloWorld.vshost.exe.manifest
这些文件的用途是什么?
VS2005引入了vshost.exe功能(以回答您的评论).
它的目的主要是使调试启动更快 - 基本上已经有一个框架运行的过程,只需准备好在你想要的时候加载你的应用程序.
有关详细信息,请参阅此MSDN文章和此博客文章.
.exe - "正常"可执行文件
.vshost.exe - 可执行文件的特殊版本,用于辅助debuging; 有关详细信息,请参阅MSDN
.pdb - 带有调试符号的程序数据库
.vshost.exe.manifest - 一种主要包含库依赖项的配置文件
vshost.exe文件是Visual Studio运行的可执行文件(visual studio主机可执行文件).这是链接到Visual Studio并改进调试的可执行文件.
当您将应用程序分发给其他人时,不要使用vshost.exe或.pdb(调试数据库)文件.
另外,您可以为Release版本配置关闭vshost文件的创建,并为Debug启用它.
脚步
项目属性 > 调试 >配置(发布)>禁用Visual Studio宿主过程
项目属性 > 调试 >配置(调试)>启用Visual Studio主机进程
参考
MSDN如何:禁用主机进程
MSDN主机进程(vshost.exe)
摘自MSDN如何:禁用主机进程
启用主机进程时,可能会影响对某些API的调用.在这些情况下,必须禁用托管过程以返回正确的结果.
要禁用托管过程
在Visual Studio中打开可执行项目.不生成可执行文件的项目(例如,类库或服务项目)没有此选项.
在项目菜单上,单击属性.
单击" 调试"选项卡.
清除" 启用Visual Studio宿主进程"复选框.
当托管过程被禁用时,几个调试功能不可用或性能下降.有关更多信息,请参阅调试和托管过程.
通常,当托管过程被禁用时:
开始调试.NET Framework应用程序所需的时间增加了.
设计时表达式评估不可用.
部分信任调试不可用.
我不确定,但我相信这是一个调试优化.但是,我通常将其关闭(请参阅项目的调试属性)并且我没有注意到任何减速并且我看到在调试方面没有任何限制,因此根据Guard的说明,它当然不需要进行调试.