Visual Studio 2012/2013 缓慢的“列表成员”智能感知

9
我正在使用Visual Studio 2012 (Premium, Update 3, ReSharper 8)编写VB.Net代码。我已停用ReSharper的智能感知功能,改用标准的VS智能感知。
最近我遇到了严重的智能感知性能问题。我的问题似乎只出现在智能感知的“列出成员”子集中。每次激活列表成员智能感知时,它需要大约2秒钟才能加载和显示列表。应用程序会一直挂起,直到成员列表被显示出来。
我使用Process Monitor诊断了这个问题,发现Visual Studio缓存每次显示成员列表时都要与解决方案中的各种文件进行数千次文件交互。其中大多数文件交互似乎集中在T4模板生成的代码和VS生成的设计师文件上。我没有找到任何关于这个问题的信息。
有人遇到过这个性能问题并找到了解决方法吗?

3
我在使用VS2013和Resharper 8时遇到了同样的问题。 - ekenman
我在使用C#的VS2013中遇到了同样的问题。我生成了一些代码,其中有一些方法存在着成千上万的重载,因此列表成员必须列出1000多个成员,这会使得在使用该命名空间的文件内进行的所有操作都变慢。不仅是列表成员,而是所有编辑操作。在进程监视器中可以看到devenv.exe为每个重载(例如数千次)打开cs文件。不知道如何解决这个问题。尝试删除suo文件,但没有帮助。我认为这是与智能感知在这种情况下的工作方式有关的问题... - nietras
尝试关闭解决方案并删除obj\debug/release隐藏文件夹中的*.cache*.FileListAbsolute.txt文件。我重命名了整个解决方案及其项目,导致这些文件混乱,影响性能。它们将被重新创建。 - Ivan Ferrer Villa
6个回答

11

我曾遇到同样的问题。每当我开始输入html标签的class(或style)属性时,智能提示菜单需要大约10秒才能显示出来。

我试过删除我的.suo文件并观察VS重建缓存约30秒钟。但问题仍然存在;也许对我来说,问题只是在于加载智能提示列表中的项。

我禁用了BrowserLink但没解决问题。

所以,我通过在“文本编辑器|HTML|常规”选项卡中取消勾选“自动列出成员”,有效地关闭了HTML文件的智能提示功能。不再有烦人的暂停..没有更多的智能提示,但对我来说这没关系。


这对我有用,尽管我讨厌没有智能感知。虽然我在HTML中不需要它,但有它存在的感觉很令人安心...咕噜...当我将Bootstrap框架添加到我的项目中时,我实际上注意到了这个问题。我想这可能与尝试解析所有CSS类以在智能感知中显示有关(?)。 - Gary O. Stenstrom
在VS选项中按照Wasatch的描述关闭它是可行的(应该标记为答案)。如果您安装了ReSharper,仍然可以获得其Intellisense,因此您不会失去任何东西,而且速度会加快。 - Mike K
谢谢你。感谢上苍! - Tim Abell

3

我没有安装Resharper,但遇到了这个问题——只有CSS的智能感知很慢(当我尝试编辑class属性的值或只是将光标移动到它时,VS变得疯狂并且整体速度明显变慢。如果我正在编辑CSS文件也会发生这种情况。 请注意,这发生在使用Flat Dream模板的Web项目中。可能我应该检查一下并删除未引用的CSS文件,但如果它有整个CSS和LESS文件的集合,最好的方法是什么...


1
每当我遇到这样的错误行为(我进行C++开发)时,我会删除属于“解决方案”的sdf文件。删除该文件并重新启动Visual Studio后,Intellisense再次变得快速而流畅 :)

1
很不幸,这个问题在VS 2013中也存在 - 我在VS2013 + ReSharper v8.0.2和CSS的intellisense中遇到了类似的问题。在相同的解决方案上使用VS 2012 + ReSharper 8.0.2没有问题。我的问题主要似乎源于我正在处理一个ExtJS解决方案(其中添加了数百个.js和.css文件),而VS 2013似乎在这方面出了问题。您已经在这里使用了VS2012 - 如果完全卸载ReSharper后问题不存在,则是ReSharper引起的问题。如果是VS2012,则是其他原因。检查所有其他安装的扩展并尝试禁用它们。您是否在使用自己的T4模板?

1
问题是R#智能提示没有性能问题。只有VS智能提示存在问题。我们现在已经切换到VS 2013,但仍然存在相同的问题。从Process Monitor中的信息来看,我不认为R#与此有任何关系,并且当禁用R#时问题仍然存在。好像VS智能提示无法缓存来自T4模板生成的代码的任何信息,或者每次尝试访问智能提示缓存时都认为信息已过期。我们有数千个从自定义T4生成的文件,并且每次似乎都需要重新处理它们。 - ThatShawGuy
1
我已经在VS2013中禁用了BrowserLink,这似乎有助于调试时的性能。不过你说得对 - 我后来尝试了不同版本的R#,问题明显与VS有关,并且与解决方案中的文件数量有关。较小的项目没有问题。 - Rich
是的,我们不得不立即禁用 BrowserLink。它实际上破坏了我们项目的功能,哈。 - ThatShawGuy

1

试试这个:

  1. 清理解决方案。
  2. 成功编译项目。

当我遇到这个问题时,它实际上对我起作用。我主要开发C#项目。


加油,我真的不认为我们在推荐别人重建项目方面没有达到功绩水平:D特别是考虑到这是CSS/HTML编辑器的问题。 - mikus
这一切都与事件的顺序有关。您需要进行清理和重新编译。我之前没有每次遇到此问题都这样做,因为我认为它与正在构建的项目无关。所以,如果这似乎很明显,对我来说并不是这样,特别是当由于项目数量而重建需要一些时间时。该问题似乎与需要重新构建的智能感知缓存(或某种类型的项目缓存)有关。因此,提出这个建议并不荒谬。 - agarcian
这对我的问题(vb.net)有了显著的改进 - 仍然有一些暂停,但不像之前输入关键字后10秒以上的延迟。 - Rich Freeman

-1

我面临这个问题已经两个星期了,最终使用一个名为Process monitor(ProcMon.exe)的Sysinternal工具找到了解决办法。这个问题与自动更新设置有关,我将其禁用后,问题得以解决。

解决方法:工具->选项->环境->扩展和更新->(取消勾选)自动检查更新->OK


这个建议完全没有意义。当你在HTML文档中更新CSS类时,VS不会去处理扩展更新;这两者是完全无关的。为了公正起见,我确实尝试了一下,但是并没有任何区别。 - Mike K

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