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

时间:2015-10-09 02:53:15

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

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

enter image description here

我通过NuGet安装Costura.Fody后第一次注意到了。我已经卸载它,但问题仍然存在。我已经多次清理并重建了解决方案。没有" Fody"或" Costura"我的git提交历史中的任何地方,在这个开始发生的时间点之前或之后,所以我认为我的.gitignore文件之一处于不良状态。

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

我使用的是Visual Studio 2015.这个问题似乎不会出现在2013版本中。

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

30 个答案:

答案 0 :(得分:84)

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

答案 1 :(得分:60)

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

  • 关闭Visual
  • 打开控制台并导航到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的布局(例如我有标签),什么不是   似乎回来了。

答案 2 :(得分:43)

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

我是如何解决的?

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

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

答案 3 :(得分:34)

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

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

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

修改

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

答案 4 :(得分:17)

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

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

成功完成后,我不再收到错误,我也没有关闭并重新打开任何内容。

答案 5 :(得分:9)

就这样做:

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

答案 6 :(得分:6)

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

这解决了我的问题。

答案 7 :(得分:5)

上面的答案是正确的,但路径略有偏差,请尝试相反:

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

答案 8 :(得分:4)

我已完成上述所有事情,但我的问题没有解决(试图通过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 /去定义等再次开始工作。

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

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

答案 9 :(得分:3)

使用 F12 尝试转到方法定义时遇到此问题。

所有提及的项目(/resetuserdata除外 - 我没有尝试,因为从中恢复会很痛苦)不起作用。

对我有用的是什么:

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

    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文件一起放置。这样可以以后轻松运行!

答案 10 :(得分:2)

关闭visual studio,然后删除该项目上的隐藏文件名.vs,然后再打开visual studio,然后构建项目。繁荣!一切都好!

答案 11 :(得分:2)

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

  1. 删除符号缓存
  2. 删除我的.vs文件夹。
  3. 重建解决方案。
  4. 运行devenv / resetuserdata
  5. 可悲的是,这些都没有奏效。我注意到这只发生在一些项目而不是其他项目上。在它失败的项目中,我最终将所有框架版本切换到4.7.1,进行了清理/重建,并且我的“Go to Definition”再次开始工作。

答案 12 :(得分:2)

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

  1. 关闭视觉工作室。
  2. 从我的项目中删除所有.vs文件夹。
  3. 打开视觉工作室。
  4. 打开我的项目。
  5. 希望这对遇到此问题的人有所帮助。

答案 13 :(得分:1)

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

清空此文件夹:

%localappdata%\Temp\TFSTemp

这对我有用。

答案 14 :(得分:1)

我认为这是由于新的Roslyn C#编译器,在其github问题跟踪器中,您可以找到许多实际开发人员遇到此问题并尝试修复它,但目前它仍处于打开状态:{{3} }

我也花了一些时间在这周围,我输掉了战斗。但是我发现以下解决方法对我来说很有效。

解决方法

  1. 更改键盘快捷键 F12 - &gt; Edit.FindAllReferences (对于TextEditor)。 这将找到定义和所有引用,并将根节点(定义)集中在“查找符号结果”中。
  2. 现在按 F12,ENTER 将与之前的F12相同。
  3. 对我而言,它似乎比GoToDefinition更好,因为:

    • 点击F12后,您可以按UP或DOWN
    • 选择参考而不是定义
    • 您只需使用这几个键(F12,ENTER,UP,DOWN)在参考和定义之间循环,便于记忆。

答案 15 :(得分:0)

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

答案 16 :(得分:0)

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

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

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

代码的着色(在“转到定义”功能被破坏时无效)也立即返回。

答案 17 :(得分:0)

对我而言,导航仅适用于XAMARIN解决方案。 这里的建议没有工作。 :( Devenv.exe / resetuserdata不适用于我。

我的解决方案是: 重新创建解决方案,项目,文件夹和工作。 没有进口。 细节:我的项目在VS 2015上,错误发生在VS 2017上。

答案 18 :(得分:0)

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

答案 19 :(得分:0)

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

我先排除掉它们,然后将它们重新包含到我的项目中,然后go to definition命令再次起作用。

答案 20 :(得分:0)

我的问题是我(半意外地)将有问题的.cs文件的属性Build action更改为Content。将它改回Compile就可以了,这很有意义。

答案 21 :(得分:0)

执行&#34; devenv.exe / resetuserdata&#34;后,我的VAssistX失败了,所以,实际上,这让我想起 VAssistX可以通过Goto Implementation解决问题(Alt + G)

答案 22 :(得分:0)

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

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

答案 23 :(得分:0)

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

答案 24 :(得分:0)

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

答案 25 :(得分:0)

我也遇到过这个问题。 VS 2015中的TFS有问题。

我按照这些步骤操作了

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

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

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

    1. 清空符号缓存

      工具&gt;选项&gt;调试&gt;符号&gt; EmptySymbolCache

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

    3. 这适合我。:)

答案 26 :(得分:0)

我也面临同样的问题,所选类的“查找所有引用”已经解决了这个问题。

答案 27 :(得分:0)

如果您最近安装了加载项,请考虑卸载它。这对我有用。

答案 28 :(得分:0)

  1. 检查两个类的名称空间。
  2. 如果要在类库中添加类 - 请确保使用正确的项目类型。 有两种类库类型。类库(包)和类库。 (在创建.dll文件时选择后一个),然后在其他解决方案中根据需要添加。

答案 29 :(得分:-1)

看来你需要至少构建一次项目才能让插入符号浏览变得可用。如果您在尚未构建的项目中遇到此问题,请尝试构建它。

控制 + +