【问题标题】:Go To Definition: "Cannot navigate to the symbol under the caret."转到定义:“无法导航到插入符号下的符号。”
【发布时间】:2015-10-09 02:53:14
【问题描述】:

我今天突然开始在我的项目中遇到一个问题,单击“转到定义”给我一个奇怪的错误:“无法导航到插入符号下的符号。”

我是在通过 NuGet 安装 Costura.Fody 之后一段时间才注意到它的。我已经卸载了它,但问题仍然存在。我已经多次清理并重建了解决方案。在我的 git 提交历史记录中,无论是在这种情况开始发生之前还是之后,都没有“Fody”或“Costura”的实例,所以我认为我的 .gitignore 文件中的一个被卡在了一个坏的状态。

仅当目标定义在另一个文件中时才会出现此问题;转到定义当前打开的文件中的某些内容可以正常工作。 Peek Definition 也很好用。其他解决方案/项目也可以正常工作 - 只有这一个会导致问题。

我使用的是 Visual Studio 2015。2013 版本中似乎没有出现此问题。

为什么会出现这个错误,我该如何解决?

【问题讨论】:

  • 尝试清除VS 2015相关的Temp文件试试
  • 同样的问题。 Peek 有效,Go To 无效。 我可以使用 peek 和 promote 进行两次单击解决方案。哇。缓存清除没有帮助。我什至从 C: 重新打开了解决方案:(因为我有映射 B: = C:\devel),清除并重建解决方案,重新启动 VS 甚至 PC ......没有任何帮助。
  • 在解决方案资源管理器中点击刷新图标同时专注于项目解决了我的问题。

标签: c# visual-studio visual-studio-2015


【解决方案1】:

我遇到了同样的问题。我完成了上述所有 cmets 中提到的所有步骤。它没有用。但是当我关闭 Visual Studio 时,删除了“.vs”文件夹(在解决方案文件夹中),然后重新打开了 Visual Studio。它现在就像一个魅力。问题消失了。

【讨论】:

  • 这在清理解决方案和清空符号缓存不起作用时起作用。它确实会删除您的解决方案启动设置。
  • 这似乎是从 Visual Studio 15.4 升级到 15.5 造成的。
  • 所以我删除了 .vs 文件夹并重新打开 VS 然后做了一个“重建解决方案”。这似乎解决了我的问题。
  • 我尝试了很多“修复”都无济于事。这个成功了,谢谢你的帖子!
  • 刚刚删除了.vs文件夹中的未命名文件
【解决方案2】:

最近几天我一直收到这个错误,每天至少两次.. 真的很烦人! 这里提出的解决方案都没有对我有用。我发现,由于很难找到,所以我在这里写下来,是为了:

  • 关闭视觉
  • 打开 Console 并导航到 Visual 安装文件夹,在我的计算机中是 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE
  • 运行 devenv.exe /resetuserdata
  • 打开 Visual Studio,加载需要一些时间。

免责声明: 我正在使用 Xamarin

考虑一下@OzSolomon 和@xCasper 所说的话:

@OzSolomon

知道这将重置您的许多 IDE 自定义,包括 已安装的插件。

在使用之前确保您对此感到满意 /重置用户数据

@xCasper

但是,如果您通过 Microsoft 同步您的设置,大多数 偏好似乎恢复了自己。我说最多是因为它 似乎我的键绑定没有恢复并恢复为默认值。 其他一切,例如我选择的主题和着色选择, 我的 IDE 的布局(例如,我有选项卡),还有什么不是 好像要回来了。

【讨论】:

  • 这最终是对我有用的解决方案,所以我会接受这个;但是,正如其他用户在其他答案中提到的那样,该问题确实可能有多种解决方案。
  • 致任何考虑这一点的人:知道这将重置您的许多 IDE 自定义,包括已安装的插件。在使用 /resetuserdata 之前,请确保您对此感到满意
  • 这绝对解决了我的问题。请注意@OzSolomon 所说的关于它擦除您的数据的内容。但是,如果您通过 Microsoft 同步您的设置,大多数首选项似乎会自行恢复。我说的最多是因为我的键绑定似乎没有恢复并且恢复为默认值。其他一切,例如我选择的主题和颜色选择、我的 IDE 的布局(例如我有标签的地方),以及似乎没有回来的东西。
  • 这个“知道这将重置您的许多 IDE 自定义,包括已安装的插件。在使用 /resetuserdata 之前确保您对此感到满意”应该用“警告”标题加粗。 -1
  • 根据 Anthony 在下面的评论(现在是评分最高的答案)“关闭 Visual Studio,删除“.vs”文件夹(在解决方案文件夹中)然后重新打开 Visual Studio”
【解决方案3】:

我尝试了 David 的解决方案(关于单击 Empty Symbol Cache 选项的解决方案),但它对我不起作用。

我是怎么解决的?

  • 关闭所有文件
  • 清洁解决方案
  • 重建解决方案

对我来说这个错误没有意义,但我解决了这个问题!

【讨论】:

  • 在 Visual Studio 2015 上也为我工作。我在使用 ReSharper 命令时遇到了这个错误。
  • 在 VS 2017 中也为我工作。问题是我使用的是旧文件,大概是我在附加到进程时使用的文件。
  • 在 VS2015 上运行良好
  • 谢谢。这个解决方案对我有用。使用 VS 社区 2017
  • 太棒了!在 Visual Studio 2019 上为我工作。我完全忘记了清理和构建。谢谢
【解决方案4】:

刚遇到同样的问题,似乎 VS 2015 和 TFS 存在问题。将一些文件合并到另一个分支后,我遇到了问题。 尝试了几件事并且成功了:

  • 关闭所有打开的文件,然后VS
  • 工具->选项->调试->符号->空符号缓存
  • TFS 签入并获取最新信息(出于某种原因,它在此之后工作)

不知道为什么会发生,但这对我有用,也可能值得清除 zvi 提到的 TFSTemp 文件夹。

编辑

此路径:%TMP%\TFSTemp 可以复制粘贴到 Windows 资源管理器中以访问 TFS temp

【讨论】:

  • 清空符号缓存对我不起作用。我也不使用 TFS。
  • 空符号缓存对我有用。谢谢。您需要先关闭所有文档。
  • 但是在我打开decument,下断点并调试我的代码后,错误又出现了。谁能进一步帮助我?
  • 就我而言,只执行“工具->选项->调试->符号->空符号缓存”有效,不需要关闭任何东西或做任何其他事情,谢谢。
  • 我的解决方案是: 1. 关闭所有文件 2. 清理解决方案 3. 卸载所有项目 4. 关闭 VS 5. 打开 VS(不要打开文件) 6. 重新加载所有项目 7. 清理解决方案 8 . 构建解决方案
【解决方案5】:

以下为我解决了这个问题:

  • 在解决方案资源管理器中,右键单击解决方案名称。
  • 选择“清洁解决方案”

成功完成后,我不再收到错误消息,也不必关闭并重新打开任何东西。

【讨论】:

    【解决方案6】:

    去做吧:

    • 关闭 Visual Studio
    • 转到项目文件夹并删除 .user 文件(可能已隐藏)
    • 打开 Visual Studio

    【讨论】:

    • 谢谢!!这是为我做的那个。快速无痛。就我而言,这只发生在解决方案的一个项目中,所以我真的不想做任何事情来影响整个解决方案或 VS 中的用户设置。
    【解决方案7】:

    我在更新Visual Studio后也遇到了同样的问题,所以我该如何解决这个问题。

    1. 关闭视觉工作室。
    2. 从我的项目中删除所有 .vs 文件夹。
    3. 打开视觉工作室。
    4. 打开我的项目。

    希望这对遇到此问题的人有所帮助。

    【讨论】:

      【解决方案8】:

      清理缓存符号(工具 > 选项 > 调试 > 符号 > EmptySymbolCache)。 以管理模式打开您的解决方案。

      这解决了我的问题。

      【讨论】:

      • 只需在管理模式下打开 Visual Studio(以管理员身份运行)就解决了我的问题。
      • 不适合我。
      • 只需在管理模式下打开 Visual Studio(以管理员身份运行)就解决了我的问题。
      【解决方案9】:

      关闭 Visual Studio,然后删除该项目上的隐藏文件名 .vs 并再次打开 Visual Studio,然后构建项目。繁荣!一切顺利!

      【讨论】:

        【解决方案10】:

        上面的答案是正确的,但是路径有点偏,试试这个吧:

        %AppData%\..\Local\Temp\TFSTemp
        

        【讨论】:

        • 这行得通,但我还必须重建所涉及的项目。
        • 我不确定您在我的任何计算机上的任何位置上的 \..`, but I don't have a folder named TFSTemp` 是什么意思。
        • 我的电脑上不存在该文件夹
        • 我不明白这个答案。所以我去这个文件夹,并清理。请问,你能改一下答案吗?
        【解决方案11】:

        我已经完成了上述所有操作,但我的问题没有解决(尝试通过 VS 2017 打开项目),

        之后我意识到问题出在我的 csproj 文件上。我的项目(mvc)

        由VS 2015创建...所以我编辑我的csproj文件并替换

        <Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
        

        通过这个:

        <Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.7\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.7\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
        

        都是关于 DotNetCompilerPlatform 的版本。

        (我理解这个问题的方式是我创建了新的 mvc 项目 VS 2017 并比较了两个 csproj 文件 - 新文件和 VS 2015 创建的文件 - )


        https://stackoverflow.com/users/15667/xan 提供的其他相关信息(因为答案已锁定)

        对我来说(VS2019 打开一个较旧的解决方案)它只影响解决方案中的一个项目。导入看起来像这样:

        <Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
        <Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
        <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
        

        工作项目只有

        <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
        

        行,所以我删除了前 2 个,然后 intelisense / go to definition 等再次开始工作。

        但是由于缺少 Roslyn csc 编译器,Web 项目现在无法运行。

        最终,整体可行的解决方案是更新项目的Microsoft.CodeDom.Providers.DotNetCompilerPlatformMicrosoft.Net.Compilers Nuget 包。

        【讨论】:

        • 谢谢,这修复了我的一个旧项目无法导航符号。
        • 用在 VS2019 中对我有用的类似情况扩展了答案。
        【解决方案12】:

        在使用 F12 尝试转到方法定义时遇到了这个问题。

        所有提到的项目(除了/resetuserdata - 我没有尝试,因为它会很难恢复)都不起作用。

        什么对我有用:

        • 退出 Visual Studio
        • 从命令提示符转到解决方案的文件夹并运行以下代码(这会删除解决方案中的所有 binobj 文件夹):

          FOR /F "tokens=*" %%G IN ('DIR /B /AD /S bin') DO RMDIR /S /Q "%%G"
          FOR /F "tokens=*" %%G IN ('DIR /B /AD /S obj') DO RMDIR /S /Q "%%G"
          
        • 重新启动 Visual Studio。打开解决方案需要更长的时间,因为它现在会重建 obj 文件夹。

        这样做后 F12 工作!

        作为旁注,我通常将它放在我的解决方案文件夹中的批处理文件中,与.sln 文件一起。这样以后运行起来很方便!

        【讨论】:

        • 删除 binobj 文件夹解决了问题(重建解决方案对我不起作用),所以 我认为这个答案更有用 因为 /resetuserdata 是太多了。
        • 我收到了错误%%G was unexpected at this time. 根据stackoverflow.com/a/9311607/740639,双百分比用于批处理文件中。我将两个%%G 切换为%G,脚本在命令提示符下运行。遗憾的是,该脚本对我不起作用。
        【解决方案13】:

        最近升级到 VS 2017 15.5.0 遇到了这个问题。我试过了:

        1. 删除符号缓存
        2. 正在删除我的 .vs 文件夹。
        3. 重建解决方案。
        4. 运行 devenv /resetuserdata

        遗憾的是,这些都不起作用。我注意到这只发生在某些项目上,而不是其他项目。在失败的项目中,我最终将所有框架版本切换到 4.7.1,进行了清理/重建,然后我的“转到定义”再次开始工作。

        【讨论】:

          【解决方案14】:

          我想说这是由于新的 Roslyn C# 编译器,在其 github 问题跟踪器中,您可以找到许多实际开发人员遇到此问题并尝试修复它,但目前它仍然开放:https://github.com/dotnet/roslyn/issues/9602

          我也花了一些时间来解决这个问题,但我输了。但我发现以下解决方法对我很有效。

          解决方法

          1. 更改键盘快捷键F12 -> Edit.FindAllReferences(用于TextEditor)。 这将在 Find Symbol Results 中找到定义和所有引用并聚焦根节点(定义)。
          2. 现在按 F12, ENTER 将与之前的 F12 执行相同的操作。

          对我来说,它似乎比 GoToDefinition 更有效,因为:

          • 按 F12 后,您可以通过按 UP 或 DOWN 选择参考而不是定义
          • 只需使用这几个键(F12、ENTER、UP、DOWN),您就可以简单地在引用和定义之间循环,易于记忆。

          【讨论】:

            【解决方案15】:

            我正在使用 VS 2017 15.7.5,这对某些测试文件停止工作。我注意到它们都是我最近添加的新的,并且在解决方案资源管理器中没有可用于展开和查看属性/方法的箭头。

            我将它们排除在外,然后将它们重新包含到我的项目中,然后转到定义命令再次起作用。

            【讨论】:

              【解决方案16】:

              我也遇到过一次。 VS 2015 中的 TFS 有问题。

              我按照这些步骤操作,效果很好

              1. 清除 TFS 缓存 这可能在这里:

                C:\Users\(UserName)\AppData\Local\Microsoft\Team Foundation\(Version)\Cache

              注意:路径可能因操作系统而异,所以不要怪我。

              1. 清空符号缓存

                工具 > 选项 > 调试 > 符号 > EmptySymbolCache

              2. 重新启动 Visual Studio(可能要求再次连接到 TFS)

              这对我有用。:)

              【讨论】:

                【解决方案17】:

                其他人提交的大多数路径要么不起作用,要么有点倒退。

                清空此文件夹:

                %localappdata%\Temp\TFSTemp
                

                这对我有用。

                【讨论】:

                  【解决方案18】:

                  看来您需要至少构建一次项目才能使用插入符号浏览。如果您在尚未构建的项目中遇到此问题,请尝试构建它。这为我解决了问题,所以我想我会把它扔在这里。

                  Ctrl+Shift+B

                  【讨论】:

                    【解决方案19】:
                    1. 检查两个类的命名空间。
                    2. 如果您在类库中添加类 - 请确保您使用的是正确的项目类型。 有两种类库类型。类库(包)和类库。 (选择后一个,因为它会创建 .dll 文件),如果需要,可以在其他解决方案中添加该文件。

                    【讨论】:

                      【解决方案20】:

                      如果您最近安装了插件,请考虑将其卸载。这对我有用。

                      【讨论】:

                      • 我最近安装了一个插件,当我在中间加载解决方案并尝试使用go定义时,我得到了这个错误。等待几分钟并加载所有项目后,问题消失了,无需卸载。
                      【解决方案21】:

                      我也遇到了同样的问题,选择类的“查找所有引用”解决了这个问题。

                      【讨论】:

                        【解决方案22】:

                        清洁解决方案。恢复 nuget 包。

                        【讨论】:

                          【解决方案23】:

                          尝试清理解决方案或清理您的项目,这对我有用

                          【讨论】:

                            【解决方案24】:

                            以下对我来说就像一个魅力:

                            1. 我检查了构建项目时出现的警告
                            2. 其中一些提到了关于程序集版本冲突的内容。 Visual Studio 建议我单击警告并按 Enter。 提供了一个弹出窗口来自动解决问题,所以我做到了。
                            3. 问题解决了!

                            【讨论】:

                              【解决方案25】:

                              我在将 Xamarin 项目导入 VS15 时发生了这个奇怪的错误。 此处列出的解决方案都不适合我。经过一天的挫折,我也遇到了类似的问题:Visual Studio "Find" results in "No files were found to look in. Find stopped progress."

                              在搜索对话框中单击“查找全部”时,弹出窗口通知我无法搜索其他文件。 所以我认为“转到定义”不起作用的原因是由于相同的错误,因为在同一个文件中查找定义确实有效。

                              上述链接中奇怪的解决方案(按 Ctrl+Scroll Lock 或 Ctrl+Break 几次)为我解决了这两个问题。

                              代码的着色(当“转到定义”功能被破坏时不起作用)也立即返回。

                              【讨论】:

                                【解决方案26】:

                                执行“devenv.exe /resetuserdata”后,我的 VAssistX 失败了,所以,实际上,这提醒我 VAssistX 可以通过 Goto Implementation (Alt+G) 解决问题

                                【讨论】:

                                  【解决方案27】:

                                  我的问题是我(半偶然地)将有问题的 .cs 文件的属性 Build action 更改为 Content。将其改回 Compile 就成功了,这很有意义。

                                  【讨论】:

                                    【解决方案28】:

                                    在我读到此特定问题已在 roslyn 编译器 (see this issue at GitHub) 中得到修复后,我将 Visual Studio 从版本 15.0.x 更新到了 15.3.1。它现在就像一个魅力。

                                    【讨论】:

                                      【解决方案29】:

                                      对我来说,导航工作只是没有 XAMARIN 解决方案。 这里的建议不起作用。 :( Devenv.exe /resetuserdata 对我不起作用。

                                      我的解决方案是: 重新创建解决方案、项目、文件夹和作品。 没有进口。 详情:我的项目在VS 2015上,错误在VS 2017上。

                                      【讨论】:

                                        【解决方案30】:

                                        我有这个错误已经有一段时间了,直到我不能再忍受了,所以我尝试了上面所有可能的解决方案,但没有一个对我有用。我注意到该错误仅在某个项目上弹出(就像上面提到的用户一样),而不是在其他项目上。正因为如此,由于没有任何工作,我将我的项目再次克隆到另一个文件夹并再次开始工作。

                                        【讨论】:

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