当我在c#中创建和编译一个“Hello, World!”应用程序时,除了主要的exe(例如HelloWorld.exe),我在Debug文件夹中得到了三个文件。
HelloWorld.vshost.exe HelloWorld.pdb HelloWorld.vshost.exe.manifest
这些文件有什么用途?
当我在c#中创建和编译一个“Hello, World!”应用程序时,除了主要的exe(例如HelloWorld.exe),我在Debug文件夹中得到了三个文件。
HelloWorld.vshost.exe HelloWorld.pdb HelloWorld.vshost.exe.manifest
这些文件有什么用途?
当前回答
此外,您还可以关闭发布版本配置的vshost文件的创建,并启用调试功能。
步骤
项目属性>调试>配置(发布)>关闭Visual Studio托管进程 项目属性>调试>配置(调试)>启用Visual Studio托管进程
参考
MSDN如何:禁用托管进程 MSDN托管进程(vshost.exe)
摘自MSDN如何:禁用托管进程
当主机进程被启用时,对某些api的调用可能会受到影响。在这些情况下,有必要禁用托管进程以返回正确的结果。
禁用主机进程
在Visual Studio中打开一个可执行项目。不生成可执行文件的项目(例如,类库或服务项目)没有此选项。 在项目菜单上,单击属性。 单击Debug选项卡。 清除“启用Visual Studio托管进程”复选框。
当托管进程被禁用时,一些调试特性不可用或性能下降。有关更多信息,请参见调试和托管进程。
一般情况下,当主机进程被禁用时: 开始调试. net框架应用程序所需的时间增加了。 设计时表达式求值不可用。 部分信任调试不可用。
其他回答
.exe -“正常”可执行文件 .vshost.exe -一个特殊版本的可执行文件,以帮助调试;详情见MSDN .pdb -带有调试符号的程序数据库 .vshost.exe。清单——一种配置文件,主要包含对库的依赖
我不确定,但我相信这是一个调试优化。但是,我通常会关闭它(请参阅项目的调试属性),我没有注意到任何放缓,并且在调试时没有看到任何限制。
vshost.exe特性是在Visual Studio 2005中引入的(回答您的评论)。
它的主要目的是使调试启动更快——基本上已经有一个运行框架的进程,只要你想要它就可以加载你的应用程序。
有关更多信息,请参阅这篇MSDN文章和这篇博客文章。
它似乎是一个用于调试的长时间运行的框架过程(以减少加载时间?)我发现,当您从调试器启动应用程序两次时,通常会使用相同的vshost.exe进程。它只是首先卸载所有用户加载的dll。如果你在处理来自托管进程的API钩子,这会产生一些奇怪的事情。
此外,您还可以关闭发布版本配置的vshost文件的创建,并启用调试功能。
步骤
项目属性>调试>配置(发布)>关闭Visual Studio托管进程 项目属性>调试>配置(调试)>启用Visual Studio托管进程
参考
MSDN如何:禁用托管进程 MSDN托管进程(vshost.exe)
摘自MSDN如何:禁用托管进程
当主机进程被启用时,对某些api的调用可能会受到影响。在这些情况下,有必要禁用托管进程以返回正确的结果。
禁用主机进程
在Visual Studio中打开一个可执行项目。不生成可执行文件的项目(例如,类库或服务项目)没有此选项。 在项目菜单上,单击属性。 单击Debug选项卡。 清除“启用Visual Studio托管进程”复选框。
当托管进程被禁用时,一些调试特性不可用或性能下降。有关更多信息,请参见调试和托管进程。
一般情况下,当主机进程被禁用时: 开始调试. net框架应用程序所需的时间增加了。 设计时表达式求值不可用。 部分信任调试不可用。