【发布时间】:2015-09-10 17:06:17
【问题描述】:
使用 Visual Studio 2015,我注意到,如果我打开多个解决方案并使用所有解决方案的公共项目,如果我编辑并保存一个属于公共项目的 .cs 文件,所有 Visual Studio 2015 实例都将消耗CPU 10-15 秒。请注意,普通项目相当大。
我不记得在 Visual Studio 2013 中发生过这种情况。在我的工作流程中,使用引用公共项目的解决方案打开所有 8-9 个 Visual Studio 实例是很常见的,所以我感觉好像我会注意到这种行为使用 Visual Studio 2013(我的开发机器有 32 GB 的 RAM,这使得这种类型的工作流成为可能)。
我试过了:
- 禁用 CodeLens
- 卸载 ReSharper
- 禁用 Tools->Options 中的四个 C# Intellisense 功能
- Temporarily Disabling Static Code Analysis Solution Wide (for all loaded solutions)
我还启动了一个单独的 Visual Studio 2015 实例,启用了 Microsoft 符号服务器并分析(通过 Debug-> Profiler-> Performance Explorer -> Attach/Detach)一个有问题的 Visual Studio 实例,同时它正在消耗高 CPU。
此图显示了分析器摘要,您可以从图中看到 ~12 秒到 ~27 秒之间的高 CPU 使用率。
84.46% 的样本在 Thread::intermediateThreadProc 中,并且大多数是排他性样本,但在包容性样本中,它似乎在进行某种代码分析。
根据这些信息,我假设正在对所有 Visual Studio 2015 实例(包括后台的实例)执行某种后台代码分析。有谁知道如何禁用它?或者如果我的假设不正确,还有其他建议吗?
2015 年 9 月 12 日更新 有趣的是,如果我在安装 ReSharper 9.2 的情况下执行相同的分析,我会得到类似的结果,但 JetBrains.Platform.Satellite.exe 位于“热路径”的根目录(而不是 devenv.exe)。
2015 年 10 月 11 日更新
我认为这是问题所在:
How to disable real time compilation in Visual Studio 2015
有没有办法在保存时禁用实时编译?或者至少让它不那么具有侵入性?最有可能跟随“保存”的操作是“构建”,并且由于所有的 Visual Studio 实例都在重新编译各自的解决方案(没有被询问),因此活动解决方案中的“构建”操作受到严重阻碍。
【问题讨论】:
-
Thread::intermediateThreadProc() 是所有 .NET 线程开始执行的地方。当 85% 的样本是 .NET 线程但只执行一小部分 .NET 代码时,您需要怀疑程序员自愿在其计算机上安装的压缩包装恶意软件。首先禁用您的反恶意软件。
-
我不认为与反恶意软件程序相关的 CPU 使用率会出现在 devenv.exe 进程中,但我禁用了 Windows Defender(我安装的唯一反病毒/恶意软件),并且问题持续存在。 (反恶意软件程序是否能够将代码注入进程?)
-
@Shea 你解决了吗?我有同样的问题。我发现 VS 2012 也会发生这种情况,并且在我安装 .Net framework 4.6.x 时已经开始发生
-
@Giox 我没能解决这个问题,我已经辞职去使用当时打开的一个 Visual Studio 实例。 Jetbrains 打开了一个 Microsoft Connect 问题:(connect.microsoft.com/VisualStudio/feedback/details/1803007)。最近的 cmets 表明 Update 2 可能会有一些改进,但我尚未对此进行测试。
-
Visual Studio 2015 Update 2 没有解决这个问题。后台 Visual Studio 2015 Update 2 进程在其已加载项目之一中的文件在磁盘上更新时继续消耗大量 CPU。
标签: c# performance visual-studio-2015