Visual Studio定期冻结运行Microsoft.VisualStudio.Web.Host.exe

时间:2014-09-30 03:18:35

标签: visual-studio-2012 hang web-site-project devenv

背景

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

问题

我发现使用几个这些项目时,Visual Studio会在我处理代码时定期冻结。对于某些网站项目,这种情况不会发生,我还没有在任何Web 应用程序项目中看到它。

症状

  • 每次冻结,大约需要半分钟才能再次使用。
  • 在冻结期间,Windows任务管理器报告Microsoft.VisualStudio.Web.Host.exe正在最大化其中一个CPU核心。

重现步骤

  1. .cs目录下打开App_Code文件。
  2. 对文件进行更改。
  3. 保存文件。
  4. 导航到其他位置(例如,切换选项卡,关闭文件,在Windows中打开其他程序)。
  5. 导航回文件(例如切换选项卡,打开它,或返回Visual Studio)。
  6. 有时似乎会引发问题的其他行动:

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

    我尝试过什么

    • Visual Studio 2012和Visual Studio 2015
    • 更改网站项目的构建操作
    • 禁用“将网站构建为解决方案的一部分”
    • 删除网络引用和Bin文件夹似乎可以最大限度地减少问题,但很明显这会破坏网站。也许网站项目在包含大量代码隐藏文件以外的C#代码时会遇到这个问题吗?

    类似问题

    我发现使用Google存在以下可能相关的问题,但它们似乎都没有包含变通方法或解决方案。

5 个答案:

答案 0 :(得分:7)

我注意到当我暂停ReSharper时,问题发生的次数减少了。

ReSharper options in Visual Studio showing the "Suspend Now" button

App_Code下编辑类时偶尔会出现问题,但重新启动Visual Studio会解决它。

答案 1 :(得分:6)

我遇到了类似的问题。一个包含数十个类库的Web应用程序项目,从VS 2010迁移到VS 2013.

我能够通过禁用"托管流程"来解决我的问题。选项:

  

禁用托管流程

     
      
  1. 在Visual Studio中打开可执行项目。没有的项目   生成可执行文件(例如,类库或服务项目)   没有这个选项。
  2.   
  3. 项目菜单上,点击属性
  4.   
  5. 点击调试标签。
  6.   
  7. 清除启用Visual Studio托管过程复选框。
  8.   

MSDN的完整详情:http://msdn.microsoft.com/en-us/library/ms185330.aspx

答案 2 :(得分:4)

在上面接受的答案中没有属性页的旧Web应用程序中遇到此问题的人的另一个选项。

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

  1. 打开网站/解决方案
  2. 右键单击并查看“属性页”
  3. 转到MSBuild选项
  4. 取消选中“允许此预编译网站可更新”
  5. 这对我有用。

答案 3 :(得分:1)

他们在这篇文章中的症状听起来就像我今天做的噩梦一样:

  

有时似乎会引发问题的其他行动:

     

“转到定义”

     

打开文件

     

预览文件

     

关闭文件

     

使用重构“查找用法”

加上intellisense无效(即使使用CTRL + J)和 “Peek定义”也悬而未决。

我不得不继续任务杀死视觉工作室(2015年和2017年)。

我的修复是进入我遇到问题的项目,打开“软件包管理器控制台”并卸载并重新安装'DotNetCompilerPlatform'

uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform 

然后

install-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

到目前为止,我遇到的每一个问题都没有重新出现(但这只是今天所以仍然需要给它时间)。

更新:

它开始再次爬回来。我还注意到安装到解决方案的任何人只完成了两个不同的项目。卸载编译器平台(这意味着使用Visual Studio附带的编译器)使生活恢复了理智。

答案 4 :(得分:0)

当网站项目转换为Web 应用程序项目时,此问题停止发生。

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