【问题标题】:Brace matching and references highlight suddenly stop working (VS2013)大括号匹配和引用突出显示突然停止工作(VS2013)
【发布时间】:2016-02-12 03:36:59
【问题描述】:

Visual Studio 2013 大括号匹配、引用突出显示、自动检测变量/、方法名称更改(需要改用 Refactor)等...正在停止工作,只有在 VS 重启后才能再次工作。我正在用 C# 编写代码。

我是唯一受此问题困扰/影响的人吗?

非常非常烦人的VS2013问题!!它似乎只发生在大型项目中。

更新 1:我意识到它发生在我在 VS Designer 中打开任何 WinForm 之后。当我回到代码编辑时,大括号匹配和东西都不见了,我需要重新启动VS!

更新 2:Visual Studio 2013 更新 4 并且仍然...没有修复!你好微软?

更新3:由于我的解决方案票数很少,我将在这里总结一下。就我而言,问题是 VS Designer 调用了 Thread.Sleep。这是一个代码错误,但无论如何,Designer 不应该运行 Thread.Sleep 命令冻结整个 VS。

【问题讨论】:

  • 你尝试重新启动vs了吗?
  • 正如我所说,重新启动后它可以工作。但时间不长。自从我安装它以来,我一直在受苦。
  • 可能是它停止在您最初创建的文件中的其他类型而不是 .cs 的工作?当我不小心创建 .html 文件而不是 .cs 然后通过重命名扩展名并添加适当的内容将其作为 .cs 文件处理时,我在 VS2013 中遇到了问题。
  • 这个问题似乎与 Microsoft.Alm.Shared.Remoting.RemoteContainer.dll 有关,我遇到了几个与此相关的错误。有时它会锁定高达 100% 的 CPU,必须终止并重新启动 VS。
  • 这属于 connect.microsoft.com 上的错误报告。

标签: c# visual-studio-2013 intellisense


【解决方案1】:

在修复到来之前,尝试禁用代码镜头
tools->options->text editor -> all languages ->code lens

或者只是终止 ALM 共享远程处理任务。如果它是非常高的 CPU。

【讨论】:

  • 解决不了问题!另外,我喜欢code lens。
  • 尝试禁用部分代码镜头功能。例如,仅留下参考。我现在在 VS2013 更新 4 中已经有一段时间没有遇到这个问题了。
  • 我的与 Git Authors/Changes in code lens 有关。禁用这些,一切都很好。
【解决方案2】:

这是 Visual Studio 中的一个错误,很遗憾,根据this ticket on Connect,微软已决定在 Visual Studio 2015 之前不修复该错误:

我们计划进行更深入的改进,但要等到 Visual Studio 的下一个主要版本才能实现,因为我们将利用 .NET 编译器平台的存在。在我关闭此问题时,请注意我们已计​​划在 Visual Studio 的下一个版本中进行更正。

即便如此,我还是能够充分缓解这个问题,让 CodeLens 再次可用(我个人使用 #3#4):

  1. 转到工具 > 选项... > 文本编辑器 > 所有语言 > CodeLens,并确保只检查您关心的统计数据。检查的内容越少,CodeLens 的速度就越快。
  2. 将您的源代码管理插件更改为。这完全解决了我的问题,但这意味着丢失 CodeLens 提供的作者/更改历史信息。
  3. 加载解决方案后,以管理员身份打开任务管理器并右键单击Microsoft.Alm.Shared.Remoting.RemoteContainer.dll进程(可能有多个)并设置优先级 低于正常水平(每次打开 Visual Studio 时都必须这样做)
  4. 如果你的CPU有多个核心,加载解决方案后,以管理员身份打开任务管理器并右键单击Microsoft.Alm.Shared.Remoting.RemoteContainer.dll进程(可能有多个)并单击设置亲和力并取消选中一个或多个核心。 (每次打开 Visual Studio 时都必须这样做)

我发现只有 #2 可以完全解决问题,但是 #3 应该足以阻止由于可用资源饱和的进程导致的冻结,尽管该进程在完成处理之前仍会导致 CPU 使用率过高。您的里程可能因#4而异。

【讨论】:

    【解决方案3】:

    因为我也一直被这个问题困扰,所以才看到这个帖子,听起来可能与 Microsoft Connect 上报告的this bug 有关。

    不幸的是,似乎没有好的解决方法,微软表示他们将在未来版本的 Visual Studio 中解决这个问题(无论是新版本还是更新,我不知道)。

    用户 Chris Bjugstad 在错误报告页面上发布了一个可能对您有帮助也可能无济于事的建议:

    我运行了 sysinternals procmon 并针对这个特定进程进行了过滤。在我的情况下,进程 (Microsoft.Alm.Shared.Remoting.RemoteContainer.dll) 正在读取/写入我的一个项目引用的 dll 到“卷影副本”文件夹。

    %Temp%\ALM\ShadowCopies\<some_guid>

    上述文件夹有 2600 多个空文件夹。我删除了文件夹,一开始VS速度更快。

    这可能只会暂时解决您的问题(如果有的话),直到它开始备份该文件夹。

    祝你好运!

    【讨论】:

    • 在我的例子中,它有大约 190,000 个子文件夹
    【解决方案4】:

    终于我找到了错误!

    好吧,你可以破解 VS IDE 并让它进入睡眠状态 (LOL),副作用是我遇到的问题,比如大括号匹配不再起作用。

    如何重现它:

    1. 创建一个 WinForm 项目
    2. 创建控件
    3. 在控件中添加如下代码
    4. 重建
    5. 在 Designer 中打开 Form1

    您会注意到 Thread.Sleep 正在运行!现在,回到代码编辑,大括号匹配和东西都不见了。修复它的唯一方法是重新启动 VS。

    重现错误的代码:

    public UserControl1()
    {
        InitializeComponent();
        Application.Idle += Application_Idle;
    }
    
    void Application_Idle(object sender, EventArgs e)
    {
        Thread.Sleep(200); //Yeah VS IDE will sleep for 200 ms ! LOL!
    }
    

    我认为 VS Designer 应该忽略 Thread.Sleep 命令,不是吗?

    现在我只需在调用之前检查代码是否在 VS Designer 中运行:

        // Return if is inside VS Designer !
        if (System.Reflection.Assembly.GetEntryAssembly() == null)
            return;
    

    我还尝试在 Form1 中添加此代码,它表明 VS 忽略了睡眠。

    【讨论】:

    • 你为什么要在空闲事件处理程序中睡觉呢?对我来说,这听起来像是一个糟糕的设计决定。这样做也会在您运行应用程序时冻结您的主 UI 线程。
    • 是的,错误的代码。稍后我将在其他主题中讨论这个问题。但是 VS 设计器不应该那么容易出错。
    • 你可以使用 if(DesignMode)
    【解决方案5】:

    我也注意到了这个问题。我还注意到我没有登录到我的 Visual Studio 配置文件,一旦我解决了 Visual Studio 在线凭据问题,CPU 占用就消失了。

    【讨论】:

      猜你喜欢
      • 2021-09-15
      • 1970-01-01
      • 2015-08-21
      • 2021-10-05
      • 1970-01-01
      • 2022-07-01
      • 2020-08-25
      • 2010-09-18
      • 2014-05-01
      相关资源
      最近更新 更多