转到定义:"无法导航到插入符号下的符号."

Jef*_*f E 65 c# visual-studio visual-studio-2015

今天我在项目中突然遇到问题,单击Go To Definition会给我一个奇怪的错误:"无法导航到插入符号下的符号."

在此输入图像描述

我首先注意到通过NuGet 安装Costura.Fody后的一段时间.我已经卸载了它,但问题仍然存在.我多次清理并重建了解决方案.在我的git提交历史中,在此开始发生的时间点之前或之后,没有任何"Fody"或"Costura"的实例,所以我认为我的.gitignore文件中的一个卡在一个坏的州.

如果目标定义在另一个文件中,则只会出现此问题; 转到当前打开的文件中的内容定义工作正常.Peek Definition也可以正常工作.其他解决方案/项目也可以正常工作 - 只有这一点才会导致问题.

我正在使用Visual Studio 2015. 2013版本似乎没有出现此问题.

为什么会出现此错误,如何解决?

小智 104

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

  • 这在清理解决方案和清空符号缓存不起作用时起作用。它会删除您的解决方案启动设置。 (2认同)

fab*_*cio 64

最近几天我得到了这个错误,每天至少两次......真烦人!这里提出的解决方案都没有对我有用.我发现了什么,因为很难找到我在这里写下来的,是:

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

免责声明:我正在使用Xamarin

考虑@OzSolomon和@xCasper所说的:

@OzSolomon

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

在使用/ resetuserdata之前,请确保您对此感到满意

@xCasper

但是,如果您通过Microsoft同步了设置,则大多数首选项似乎都会自行恢复.我说的最多,因为我的键绑定似乎没有恢复,而是恢复默认.其他所有内容,例如我选择的主题和颜色选择,我的IDE的布局(例如我有标签),以及似乎没有回来的东西.

  • 对于任何考虑到这一点的人:知道这将重置您的许多IDE自定义,包括已安装的插件.在使用`/ resetuserdata`之前,请确保您对此感到满意 (16认同)
  • 根据下面 Anthony 的评论(现在是评分最高的答案)“关闭了 Visual Studio,删除了“.vs”文件夹(在解决方案文件夹中),然后重新打开了 Visual Studio” (2认同)

joa*_*ego 53

我尝试了David的解决方案(关于单击空符号缓存选项的解决方案),但它对我不起作用.

我是怎么解决的?

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

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

  • 完善.我在VS2017上,它有效! (2认同)

Dav*_*vid 36

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

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

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

编辑

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

  • 空符号缓存为我工作.谢谢.您需要先关闭所有文档. (4认同)

小智 18

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

  • 在Solution Explorer中,右键单击解决方案名称.
  • 选择"清洁解决方案"

成功完成后,我不再收到错误,我不必关闭并重新打开任何内容.


小智 9

去做就对了:

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


use*_*031 6

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

这解决了我的问题.

  • 而不是我. (4认同)
  • 只需在管理模式下打开Visual Studio(以管理员身份运行)就可以解决问题. (3认同)
  • 只需以管理模式(以管理员身份运行)打开 Visual Studio 就解决了我的问题。 (2认同)

小智 6

我已经完成了上述所有操作,但我的问题没有解决(尝试通过 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')" />
Run Code Online (Sandbox Code Playgroud)

这样 :

<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')" />
Run Code Online (Sandbox Code Playgroud)

这一切都与 DotNetCompilerPlatform 的版本有关。

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


/sf/users/1096721/提供的其他相关信息(因为答案已锁定)

对我来说(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')" />
Run Code Online (Sandbox Code Playgroud)

工作项目只有

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

行,所以我删除了前 2 个,并且 intelisense / go todefinition 等再次开始工作。

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

最后,总体有效的解决方案是更新项目的 Nuget 包Microsoft.CodeDom.Providers.DotNetCompilerPlatformMicrosoft.Net.Compilers


小智 5

上面的答案是正确的,但路径稍微偏离,请尝试这样做:

%AppData%\..\Local\Temp\TFSTemp
Run Code Online (Sandbox Code Playgroud)


wut*_*cel 5

更新visual studio后我遇到了同样的问题,所以这是我解决问题的方法。

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

希望这对遇到此问题的任何人都有帮助。


小智 5

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