【问题标题】:What is the purpose of the Visual Studio Hosting Process?Visual Studio 托管过程的目的是什么?
【发布时间】:2011-01-05 09:51:42
【问题描述】:

使用 Visual Studio 调试程序时,您可以选择Enable the Visual Studio hosting process。这个选项的目的是什么,有什么作用?

【问题讨论】:

  • 很难相信这个问题被关闭为“不是一个真正的问题”!托管过程足够真实,知道它的作用对任何 .NET 程序员都很重要。就像 Visual Studio 设置页面中任何易于访问的神秘选项一样。让我们重新开放这些人。

标签: visual-studio


【解决方案1】:

MSDN 库没有提供关于“托管过程”的非常好的信息。 Eric 的链接中列出的最后两个功能实际上是由该功能引起的问题。您迟早会遇到另一个问题:它使用不同的 app.config 文件。活动的名为 yourapp.vshost.exe.config。手动更改文件时请注意这一点。

它支持的另一项功能在您调试应用程序时非常明显,但在任何地方都没有提及,那就是 Console.Write() 生成的输出会发生什么。在非控制台模式应用程序中,它被重定向到 IDE 的输出窗口。很有用。

“托管”一词是指 CLR 的一项功能,它可以是“托管的”。自定义 CLR 主机的示例是 SQL Server 和 ASP.NET。托管允许在 CLR 开始之前对其进行配置。其主要用途之一是配置主 AppDomain 并设置自定义安全策略。这正是托管进程正在做的事情。

this question 中提供了一个很好的自定义 CLR 主机示例。

长话短说:在调试模式下,您运行的是自定义版本的 CLR,它可以改善调试体验。

【讨论】:

  • 我有在每个新项目上禁用此功能的习惯。我在使用 C++/CLI WinForms Designer 时遇到了奇怪的问题,而禁用此功能时不会发生这种情况。
  • 这不太可能相关,C++ IDE 不使用托管进程,也不用于设计模式。
  • 此外,在 Microsoft 网站 (msdn.microsoft.com/en-us/library/ms242202.aspx) 上,它声明它启用了部分信任调试(不知道那是什么)和设计时表达式评估,我经常使用它来评估立即窗口。但是,托管确实存在如上所述的问题。
  • 托管进程倾向于保持加载我想从另一个运行的 Visual Studio 副本写入的 DLL。杀死宿主进程,甚至退出并重新启动有问题的 VS 都无济于事,因为新启动的宿主进程会再次加载 DLL。这就是我通常禁用它的原因。
  • 我观察到 Console.WriteLine 日志会打印在输出窗口中,即使我从 Windows 窗体项目的属性窗口中禁用 Enable the Visual Studio hosting process 选项也是如此。不知道为什么。
【解决方案2】:

来自MSDN

Visual Studio 托管过程 提高调试器性能和 启用新的调试器功能,例如 部分信任调试和 设计时表达式评估

【讨论】:

    【解决方案3】:

    在 MSDN 中有解释:Debugging and the Hosting Process

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2010-09-24
    • 2011-12-28
    • 2019-08-19
    • 1970-01-01
    相关资源
    最近更新 更多