【问题标题】:Disabling the *.vshost.exe and miscellaneous files from being created on build禁止在构建时创建 *.vshost.exe 和其他文件
【发布时间】:2012-03-19 18:44:42
【问题描述】:

我找到了有关 Microsoft Visual Studio“额外”文件的以下信息:

What is the purpose of the vshost.exe file?

我的问题是,有没有办法让我无法制作 .pdb、.manifest 和 vshost.exe 文件?或者它们是绝对必要的?

我刚刚注意到,在调试之后,它仍然显示为我机器中正在运行的进程,这让我很担心,因为我已经关闭了它。

【问题讨论】:

  • 在我看来,您似乎并没有真正理解他在帖子中所说的话。需要 .vshost 来快速启动您的调试会话。没什么好担心的。
  • 但我也发现 vshost.exe 运行双重

标签: visual-studio-2010 build build-process


【解决方案1】:

切换到发布配置。然后 Project + Properties,Debug 选项卡,取消勾选“Enable the Visual Studio hosting process”选项。 Build + Clean,你可以删除任何留下的东西,它不会回来。对于 Release 版本默认启用此选项,可以说是有点缺陷,但可以辩护。

托管进程是 CLR 的自定义托管版本。它的确切作用没有得到很好的记录,但它与配置主 AppDomain 的安全设置有关。我从来没有听过有人抱怨没有它来解决 CAS 问题,但是关闭它是不寻常的,并且在从 IDE 进行调试时,您的应用程序几乎总是在完全信任的情况下运行。如果您在早期版本的 .NET 上构建网络共享,这将很重要。禁用它唯一明显的是,您使用 Console.Write 在 gui 样式应用程序中编写的任何内容都将不再出现在“输出”窗口中。正如链接中高度赞成的答案所声称的那样,它与速度无关,核心框架 DLL 已经驻留在 RAM 中,因为 VS 和 MSBuild 使用它们。

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

【讨论】:

  • 最好在“仅内容项目”的构建中禁用它。
  • 谢谢。我有一个从 VS2008 -> VS2013 升级的项目,拒绝读取 app.config 文件。然后我了解到它正在搜索不是通过 AppDomain.CurrentDomain.SetupInformation.ConfigurationFile 生成的 XXX.vshost.exe.config。所以我像上面一样把它关掉了。然后我不得不将我的 app.config 文件重命名为 {projectName}.config,把它放在 bin 文件夹中,它终于可以工作了。
  • 看起来“启用 Visual Studio 托管进程”选项在 VS2017 中不再存在,并且项目似乎作为定义的 exe 运行,而不是 vshost.exe。也许 vshost 在 VS2017 已经成为过去?
【解决方案2】:

关于 vshost 文件,至少在 VS2010 中:

  • 它们不是在构建时生成的,而是在选择构建配置时生成的(当我们第一次选择发布时,它将在发布中生成)并将“启用 Visual Studio 托管进程”设置为 true。 (由于配置调试和此选项设置为true是默认设置,vshost.exe会在打开VS时默认在bin/debug中创建。)
  • 在重建或清理项目时不会清理它们,但只有在“启用 Visual Studio 托管进程”为假时,如果带有该项目的 VS 已打开,则只能手动清理它们。 (并且打开这个项目时不会再生成了。)

如果这个标志选项为真并且VS与目标项目被打开,这个文件不能被删除为正在使用。一旦不勾选,vshost.exe就可以立即删除。

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

另外,我可能会在不考虑作为类库的引用项目中添加“启用 Visual Studio 托管进程”选项。此选项仅适用于生成可执行文件的目标项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多