Visual Studio 2015 C#重命名非常慢

时间:2015-08-25 21:19:36

标签: visual-studio-2015

每当我使用C#编辑|重构|重命名功能时,应用更改的速度非常慢 - 比如30秒或更慢。有时会出现“更新文件”弹出窗口。

机器上的其他所有内容都快速响应。 C ++等价物也很好。还有其他人看到这个问题吗?任何解决方案?

编辑:

根据magicandre1981的建议,我运行了一个ETW跟踪。我还将VS调试器的另一个实例附加到我正在使用的实例上,以查看是否有任何有趣的东西。

我发现了两件有趣的事情:

  1. 减速是指数级的 - 最初速度很快但是第10次你使用它需要10秒钟,到第20次需要一分钟或更长时间。

  2. 在Delegate.Remove方法中抛出异常。 (特别是在System.MulticastDelegate.RemoveImpl中。)所以我猜测某些东西已经被连接起来然后从未被删除。

  3. 基本上这个调用堆栈被击中数千次:

    mscorlib.dll!System.MulticastDelegate.DeleteFromInvocationList(object[] invocationList = {object[4096]}, int invocationCount = 3569, int deleteIndex, int deleteCount = 1) mscorlib.dll!System.MulticastDelegate.RemoveImpl(System.Delegate value) mscorlib.dll!System.Delegate.Remove(System.Delegate source, System.Delegate value) Microsoft.CodeAnalysis.EditorFeatures.dll!Microsoft.CodeAnalysis.Editor.Implementation.InlineRename.InlineRenameSession.OpenTextBufferManager.SpansChanged.remove(System.Action value = {Method = {System.Reflection.RuntimeMethodInfo}})

    ETW跟踪和简单地使用调试器进入该调用堆栈。

    所以......更多信息,但我还没弄明白为什么。

    另一个编辑:

    Aaand我刚刚做了我应该做的事情:禁用扩展程序以查看它是否有任何区别。果然性能问题就消失了。我将其缩小到特定的扩展名 - 我会联系作者,看看他们是否可以修复它。

0 个答案:

没有答案