Visual Studio 经常在运行 Microsoft.VisualStudio.Web.Host.exe 时出现冻结

18

背景

我维护了几个使用Visual Studio“网站项目”的网站。

问题

我发现有些项目在我编写代码时,Visual Studio经常会冻结。并非所有网站项目都会出现此问题,也没有在任何Web应用程序项目上看到它发生过。

症状

  • 每次冻结时,需要约半分钟才能重新使用。
  • 在冻结期间,Windows任务管理器报告Microsoft.VisualStudio.Web.Host.exe占用一个CPU核心的最大值。

重现步骤

  1. App_Code目录下打开一个.cs文件。
  2. 对该文件进行更改。
  3. 保存该文件。
  4. 导航到其他位置(例如切换标签、关闭文件、在Windows中打开不同的程序)。
  5. 返回到该文件(例如切换到该标签、打开该文件或返回到Visual Studio)。

有时似乎还有其他操作可能导致出现问题:

  • “转到定义”
  • 打开文件
  • 预览文件
  • 关闭文件
  • 使用重构
  • “查找用法”

我尝试过的方法

  • 使用Visual Studio 2012和Visual Studio 2015
  • 更改网站项目的生成操作
  • 禁用“作为解决方案的一部分构建网站”
  • 删除Web引用和Bin文件夹似乎可以最小化问题,但显然这将破坏网站。也许当网站项目包含除Code-Behind文件以外的大量C#代码时,将会出现此问题?

类似的问题

我在Google上找到了以下可能相关的问题,但其中没有一个似乎包含了解决方法。


1
我有同样的问题。通常发生在使用Ctrl+Tab切换到另一个文件或通过单击VS编辑器中的另一个选项卡时。非常感谢您提供帮助。 - Jeremiah Flaga
1
同样的问题。我有一个包含50个网站的解决方案。我使用“漏斗”扩展来防止一次性加载所有网站。虽然这有助于减少初始加载时间,但VS仍会像你描述的那样冻结。-- 我注意到保存文件的差异:如果我在不同选项卡中编辑两个文件,我可以正常地在它们之间切换而不保存。一旦我保存当前选项卡,当我尝试切换到另一个选项卡时,Visual Studio就会冻结。 - Robert Fricke
5个回答

7
我注意到当我暂停使用ReSharper时,问题发生的频率较少。
在编辑 App_Code 类时,问题偶尔仍会发生,但重新启动Visual Studio可以解决它。 Visual Studio中的ReSharper选项显示"Suspend Now"按钮

6
我遇到了类似的问题。一个Web应用程序项目有数十个类库,从VS 2010迁移到了VS 2013。
通过禁用“Hosting Process”选项,我成功解决了这个问题:
要禁用托管进程,请按照以下步骤操作: 1. 在Visual Studio中打开可执行项目。不会生成可执行文件的项目(例如,类库或服务项目)没有此选项。 2. 在“项目”菜单上,单击“属性”。 3. 单击“调试”选项卡。 4. 取消选中“启用Visual Studio托管进程”复选框。
有关详细信息,请参考MSDN:http://msdn.microsoft.com/en-us/library/ms185330.aspx

@PhilipPittle 公平地说,答案是一个建议的解决方案,并附有如何执行所建议内容的链接。如果链接消失了,假设这是一个好的建议,那么这个建议仍然有效。 - RiggsFolly
@RoggsFolly - 说得好。我更新了答案,包括相关步骤,以便清楚地删除标志。 - Philip Pittle
@PhilipPittle 点赞,因为微软的开发者工具部门需要将像这样的“特性”移动到“打开或关闭Windows功能”。这只是一个特性,就像在“$tf”下存储数百兆字节的TFS残留物一样,VS不应默认启用。 - jerhewet
3
我在Visual Studio 2015中的Web应用程序项目中没有“Debug”选项卡。你有什么想法可以解决这个问题,而不需要它? - aleyush
谢谢。在将一个Win Forms应用程序转换为WPF时(两者都在自己的Visual Studio应用程序中打开),当我尝试在设计器中单击任何XAML元素时,会出现锁定问题。这似乎已经解决了这个问题。 - GeoffCoope
显示剩余2条评论

4

对于那些在旧的Web应用程序上遇到上述答案中没有属性页面的人来说,还有另一个选择。

禁用“允许更新此预编译站点”。

  1. 打开站点/解决方案
  2. 右键单击并查看属性页面
  3. 转到MSBuild选项
  4. 取消选中“允许更新此预编译站点”

这对我很有效。


谢谢,你解决了我的问题。我之前无法调试、保存文件等操作,因为使用VS会卡顿10分钟! - Jonathan Bick
我刚在Visual Studio 2015 Update 2中尝试了一下,不幸的是,对我来说似乎没有任何区别。 - Sam

0

这篇帖子中提到的问题症状与我今天刚刚做过的噩梦非常相似:

其他有时会触发该问题的操作:

“转到定义”

打开文件

预览文件

关闭文件

使用重构“查找用途”

而且智能提示也无法工作(即使按下CTRL+ J),'Peek definition' 也停止响应。

我不得不一直终止Visual Studio(包括2015和2017)。

我的解决方法是进入出现问题的项目,打开“程序包管理器控制台”,卸载并重新安装'DotNetCompilerPlatform'。

uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform 

然后

install-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

到目前为止,我遇到的每个问题都没有再出现(但这只是今天的情况,还需要时间来确认)。
更新:
它又开始悄悄地回来了。我还注意到安装解决方案的人只安装了其中两个项目。卸载编译器平台(也就是使用 Visual Studio 自带的编译器)使生活恢复了正常。

0

当网站项目转换为Web应用程序项目时,这个问题就不再出现了。

虽然不是一个简单的解决方案,但它确实解决了这个问题。


我接受了这个答案,因为我认为它是这个问题最适合的长期解决方法,而其他大多数答案要么不适用,要么对问题的具体情况没有任何影响。 - Sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接