尝试在Visual Studio 2015中运行Web应用程序时,数百个MSBuild和ConHost实例产生并填充内存

Gen*_*ove 19 msbuild visual-studio-2015

为了给出一些背景故事,我曾经在VS2012上遇到过这个问题.随机(并非所有时间),当我通过vs2012在IE上运行我的公司Web项目时,它会暂停一段时间并最终无法加载.我注意到我的机器基本上很难做任何事情,并且几乎停止了.

检查任务管理器将显示HUNDREDS,如果没有产生数百个MSBuild.exe和Conhost.exe实例,则填充它们可能的每个可能的内存字节(在机器上最多8个演出).我只有一些需要构建的解决方案.

我从未发现真正的原因,但VS2012的最终更新我认为这个问题已经持续了好几个月.

快进到今天,我现在在一台机器上有16演出的ram,我现在正在运行VS2015 14.0.23107.

我最近注意到无限生成的MSBuild和Conhost的问题又回来了,这次填满了我所有的16个内存.

我尽可能多地搜索了互联网,但我没有找到任何类似于我所遇到的主题.

我知道这是微软的一个"功能",如下所述:

msbuild.exe保持打开状态,锁定文件

和其他地方.

但是我所看到的没有人有这么多MSBuild和Conhosts产生的问题,他们消耗了每一个字节的内存,你被迫重启你的机器或等到它们全部死掉(这似乎不会发生在任何特定的时间量).

最近发生这种情况时,我能想到的唯一环境变量是:

  1. 我至少运行了2个VS2015实例
  2. 我刚刚完成了更改并构建了一个解决方案
  3. 我开始运行我们的Web应用程序,该解决方案取决于我刚刚构建的前一个解决方案.

有没有其他人有这个问题,你有没有找到原因?

-编辑-

更新:如果修复它我不是100%,但是自从我做了这些修改后我还没有得到它.

从本质上讲,我们在这里有两种不同的解决方案.它们非常相似,唯一的区别是它们中的一个具有更少的其他项目/依赖性.

我经常在这两个解决方案之间切换,并且我相信其中一个解决方案配置为至少一个项目检查了"使用扩展诊断进行调试".

此外,我将构建选项设置为同时执行多达8个并行构建.

我们的开发经理认为,在与并行构建混合的解决方案之间进行某种切换可能会导致某种类型的损坏/错误,从而产生数千个MSBuild.

我们已经解决了"使用扩展诊断进行调试"的问题,并且我已经将构建选项更改为仅1个并行构建,并且从那时起就没有问题.

tec*_*ell 20

有趣的是,我遇到了大量的MSBuild和conhost进程开始涌现并杀死了我所有记忆的问题.就我而言,它与我的时区功能测试有关.我更改了我的操作系统时区以进行Web应用程序的测试/质量检查,这是出于某种原因的结果.Visual Studio的某些东西不喜欢即时更改.

  • 我正在测试Web应用程序的时区相关功能,这个问题就出现了.我在调试会话之前,期间和之后在不同时区之间切换.`taskkill/F/IM MSBuild.exe`将它们全部杀死,但它们在每次构建后重新生成. (3认同)
  • @ A.Kostadinov是的,我相信如果您改回原来的时区,或者如果您关闭Visual Studio并重新打开,它就会消失.VS打开时任何时区更改似乎都会导致问题. (2认同)