2012-03-01 33 views
34

正在创建的* .vshost.exe和其他文件,我发现有关Microsoft Visual Studio的“额外”的文件中的下列信息:禁止从构建

What is the purpose of the vshost.exe file?

我的问题是,是否有办法我无法生成.pdb,.manifest和vshost.exe文件?还是他们绝对必要?

我刚刚注意到,调试完成后,它仍然显示为我机器上的一个正在运行的进程,因为我已经关闭了它,所以很担心。

+1

在我看来,你真的不明白他在帖子中说的话。需要使用.vshost来快速启动调试会话。完全不用担心。 – Steve 2012-03-01 10:24:14

+0

但我还发现vshost.exe正在运行双 – gumuruh 2014-04-03 06:42:12

回答

59

切换到发布配置。然后Project + Properties,Debug选项卡,取消选中“启用Visual Studio托管过程”选项。 Build + Clean,你可以删除剩下的东西,它不会回来。 Release版本默认打开这个选项,可以说是一个缺陷,但是可以防御。

托管进程是CLR的自定义托管版本。它确实做了什么没有很好的记录,但它与配置主AppDomain的安全设置有关。我从来没有听说有人抱怨没有它的情况下与CAS进行对抗,但是当它从IDE进行调试时,将它关闭并且你的应用几乎总是以完全信任的方式运行是不常见的。如果您在早期版本的.NET上构建网络共享,这一点很重要。禁用它唯一明显的地方就是你在Gui风格的应用程序中用Console.Write编写的任何内容都不会再出现在输出窗口中。它与链接中高度优先的答案中声明的速度无关,因为VS和MSBuild使用它们,所以核心框架DLL已经驻留在RAM中。

最好的事情就是不要太担心。安装和部署项目将忽略它。

+1

如果禁用“仅限内容的项目”的构建,将会很好。 – 2013-04-19 20:33:55

+0

谢谢。我有一个项目从VS2008升级 - > VS2013拒绝读取app.config文件。然后我了解到它正在搜索未通过AppDomain.CurrentDomain.SetupInformation.ConfigurationFile生成的XXX.vshost.exe.config。所以我就像上面那样关掉它。然后,我不得不将我的app.config文件重命名为{projectName} .config,并将其放入bin文件夹,并最终运行。 – drzounds 2016-06-29 19:46:52

+0

它看起来像“启用在Visual Studio宿主进程”选项不再出现在VS2017,看来,该项目运行的exe文件定义的,而不是vshost.exe。或许vshost是VS2017以前的事情? – HotN 2017-06-15 16:32:06

1

关于vshost文件,至少在VS2010:

  • 他们不是在构建生成的,但在构建配置的选择(它将在发布的时候,我们选择在第一时间发布生成)和设置“启用Visual Studio宿主进程”为true。 (由于配置调试和此选项设置为true是默认设置,vshost.exe将在bin/debug中创建,默认情况下在打开VS时使用目标项目。)
  • 在重建或清理项目时不清除它们,但只能手动当“启用Visual Studio宿主进程”为false时,如果VS与该项目打开。 (并且在打开此项目时它不会再生成)。

如果此标志选项为真,并且VS打开了目标项目,则该文件无法在使用时删除。一旦未选中,vshost.exe可以立即删除。

摘要:生成和删除这些文件与构建过程无关。

此外,我可能会添加该选项“启用Visual Studio宿主进程”在被引用的项目是类库是不考虑。该选项仅适用于生成可执行文件的目标项目。