【问题标题】:Visual Studio IDE error - Cannot access a disposed objectVisual Studio IDE 错误 - 无法访问已处置的对象
【发布时间】:2022-02-04 01:22:05
【问题描述】:

尝试在我的解决方案中打开任何 .cs 文件时出现以下错误。

我试过 1) 重新启动 Visual Studio,2) 重新启动计算机,3) 删除所有 obj 文件夹,4) 删除所有 .vs 文件和文件夹,但我仍然无法打开任何文件。

如果我在解决方案资源管理器中双击文件或使用 F7,则会出现相同的错误消息。

文件确实存在。

我也尝试禁用 resharper,以防万一导致问题,但它没有帮助。

我还尝试使用 Ctrl+T 导航到类,输入类名并选择类。没有错误消息,但没有加载任何内容。

【问题讨论】:

  • 在新的解决方案中会出现这种情况吗?
  • @Ken Tucker,不,新解决方案不会发生这种情况。只有几个现有的解决方案。
  • 我找到了问题所在。我的解决方案存储在我的 OneDrive 文件夹中,该文件夹正在进行自动同步。将解决方案移出 OneDrive 使错误消失!

标签: visual-studio-2017


【解决方案1】:

这是我尝试打开旧解决方案时遇到的错误:Cannot access a disposed object. Object name: 'WorkspaceContext'。我从Refat Eid's blog找到了解决方案。

您只需要打开以下目录并删除其中的内容即可: %LocalAppData%\Microsoft\Team Foundation\7.0\Cache

根据您的 Visual Studio,您的 %LocalAppData%\Microsoft\Team Foundation 中可能有不同的版本号。如果不确定,请先将内容复制到临时文件夹。

其他答案,无论是升级还是重新安装,基本上都是出于相同的目的。

【讨论】:

    【解决方案2】:

    我有同样的问题,但在 Visual Studio 2019 社区版最新更新是 16.7.2 版。

    更新后,我在Azure Devops 中绑定的所有解决方案在我尝试使用与 OP 相同的错误消息签入时都遇到了问题。

    所以,我删除了文件夹,而不是:

    %LocalAppData%\Microsoft\Team Foundation\7.0\Cache
    

    我删除了这个:

    %LocalAppData%\Microsoft\Team Foundation\8.0\Cache
    

    然后重新打开我的解决方案,它会在出现此消息框后自动重新绑定:

    如果它没有重新绑定。尝试通过Team Explorer -> Source Control Explorer 重新打开您的解决方案,然后直接在Source Control Explorer 上双击解决方案。

    【讨论】:

      【解决方案3】:

      这里的问题是我的解决方案文件夹位于我的 OneDrive 文件夹中,该文件夹正在与我的 OneDrive 帐户自动同步。

      将解决方案文件夹移出一个驱动器文件夹使错误消失。

      【讨论】:

      • 对于那些希望将项目保存在我们的 onedrive 文件夹中以进行备份的人,是否有解决方案?
      • 我的解决方案没有与 OneDrive 同步,所以这个答案没有解决我的错误。此外,在启动 IE Express 时,我还收到“对象未设置为实例”错误。我用于 IIS Express(用于运行 Web Api)的 Web 浏览器是 Chrome。我用 IE 切换它,瞧,它起作用了。不知道为什么 Chrome 会导致错误。当我更正 null ref 错误时,disposed object 错误也随之而来。
      • 对于 2021 年来到这里的任何人来说,使用 Git 来备份任何 VS 项目,它完美地集成了。
      【解决方案4】:

      在我的情况下,只需重新启动 Visual Studio 即可解决。

      【讨论】:

        【解决方案5】:

        我通过重新下载 vs 安装程序解决了这个问题(我显然删除了我的旧副本),并告诉它也运行更新。

        【讨论】:

          【解决方案6】:

          这太疯狂了。为什么 OneDrive 同步会导致这个问题?

          我的 Windows 10 系统今天(2018 年 4 月 11 日)刚刚安装了一堆新更新。安装这些更新后,我立即无法在 VS 2017 中打开 任何 我的 C# 文件(错误:无法访问已处置的对象)。在今天的更新之前,所有这些文件都可以正常打开。

          将项目移出 OneDrive 解决了这个问题,在以前版本的 VS 中打开文件也解决了这个问题(我试过 VS 2015)。

          我所有的 VS 项目都存储在 OneDrive 上,副本在我的本地驱动器上。 OneDrive 声称我的所有文件都是最新的,所以我不明白这与 OneDrive 同步有何关系。

          有没有其他人突然遇到这个问题?

          【讨论】:

            【解决方案7】:

            就我而言,我在 OneDrive 同步文件夹下有解决方案文件及其文件夹。右键单击 OneDrive 系统托盘,然后单击设置。在“设置”选项卡下,取消选中“使用时保存空间并下载文件”复选框(按需文件)

            【讨论】:

              【解决方案8】:

              我遇到了同样的问题,但是在我升级到最新版本的 Visual Studio 2017 (15.6.7) 后,错误消息消失了,所以我可以再次打开解决方案中的所有文件。希望这会有所帮助。

              【讨论】:

                【解决方案9】:

                在我的情况下,这是由于删除了未立即保存的解决方案配置,只需保存所有并重新启动 Visual Studio 即可解决问题。

                【讨论】:

                  【解决方案10】:

                  在我的 VS2019 中。封闭VS。 禁用一个驱动器文件的同步,然后重新加载项目。问题解决了!它肯定似乎与 OneDrive 有点相关。即使在我的情况下,所有文件都已同步,但仍会暂停它并重新打开 VS 已解决。可能只是重启VS...

                  【讨论】:

                    【解决方案11】:

                    我有同样的错误。我的解决方案不是存储在 onedrive 中,而是存储在本地。 完整的错误信息是:

                    执行重命名时出错。无法访问已处置的对象。对象名 invisibleEditor

                    当我首先从解决方案资源管理器窗口重命名文件然后单击“是”时发生错误,这通常也会更改类名,但是这没有发生。

                    然后当我尝试更改类名时抛出错误。

                    我重新启动了 VS 2019 Enterprise 16.11.3 几次,但没有帮助。

                    我通过以下方式解决了这个问题:

                    1. 在解决方案资源管理器中撤消文件重命名
                    2. 删除我的解决方案目录中的 .vs 文件夹
                    3. 在当时的解决方案中删除我的项目中的所有 bin 和 obj 文件夹。

                    然后重命名成功。

                    错误堆栈是:

                    System.ObjectDisposedException:无法访问已处置的对象。 对象名称:'InvisibleEditor'。 在 Microsoft.VisualStudio.LanguageServices.Implementation.ProjectSystem.InvisibleEditor.get_TextBuffer() 在 Microsoft.VisualStudio.LanguageServices.Implementation.ProjectSystem.VisualStudioWorkspaceImpl.ApplyTextDocumentChange(DocumentId documentId,SourceText newText) 在 Microsoft.VisualStudio.LanguageServices.Implementation.ProjectSystem.VisualStudioWorkspaceImpl.ApplyDocumentTextChanged(DocumentId documentId,SourceText newText) 在 Microsoft.CodeAnalysis.Workspace.ApplyChangedDocument(ProjectChanges projectChanges,DocumentId documentId) 在 Microsoft.CodeAnalysis.Workspace.ApplyProjectChanges(ProjectChanges projectChanges) 在 Microsoft.CodeAnalysis.Workspace.TryApplyChanges(解决方案 newSolution,IProgressTracker progressTracker) 在 Microsoft.VisualStudio.LanguageServices.Implementation.ProjectSystem.VisualStudioWorkspaceImpl.TryApplyChanges(解决方案 newSolution,IProgressTracker progressTracker) 在 Microsoft.CodeAnalysis.Workspace.TryApplyChanges(解决方案 newSolution) 在 Microsoft.CodeAnalysis.Editor.Implementation.InlineRename.InlineRenameSession.ApplyRename(解决方案 newSolution,IWaitContext waitContext) 在 Microsoft.CodeAnalysis.Editor.Implementation.InlineRename.InlineRenameSession.CommitCore(IWaitContext waitContext,Boolean previewChanges) 在 Microsoft.CodeAnalysis.Editor.Implementation.InlineRename.InlineRenameSession.c__DisplayClass78_0.b__0(IWaitContext waitContext) 在 Microsoft.VisualStudio.LanguageServices.Implementation.Utilities.VisualStudioWaitIndicator.Wait(字符串标题,字符串消息,布尔 allowCancel,布尔显示进度,Action`1 动作) 在 Microsoft.CodeAnalysis.Editor.Implementation.InlineRename.InlineRenameSession.CommitWorker(布尔预览更改) 在 Microsoft.CodeAnalysis.Editor.Implementation.InlineRename.Dashboard.Commit() 在 Microsoft.VisualStudio.Telemetry.WindowsErrorReporting.WatsonReport.GetClrWatsonExceptionInfo(异常异常对象)

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2011-10-23
                      • 2011-03-25
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多