当我在c#中创建和编译一个“Hello, World!”应用程序时,除了主要的exe(例如HelloWorld.exe),我在Debug文件夹中得到了三个文件。

HelloWorld.vshost.exe HelloWorld.pdb HelloWorld.vshost.exe.manifest

这些文件有什么用途?


当前回答

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

其他回答

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

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

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

我不确定,但我相信这是一个调试优化。但是,我通常会关闭它(请参阅项目的调试属性),我没有注意到任何放缓,并且在调试时没有看到任何限制。

vshost.exe特性是在Visual Studio 2005中引入的(回答您的评论)。

它的主要目的是使调试启动更快——基本上已经有一个运行框架的进程,只要你想要它就可以加载你的应用程序。

有关更多信息,请参阅这篇MSDN文章和这篇博客文章。

.exe -“正常”可执行文件 .vshost.exe -一个特殊版本的可执行文件,以帮助调试;详情见MSDN .pdb -带有调试符号的程序数据库 .vshost.exe。清单——一种配置文件,主要包含对库的依赖