Visual Studio中的"转到定义"仅显示元数据

pfu*_*unk 116 visual-studio

我在Visual Studio 2008中的Web项目中工作.当我点击F12(或右键单击并选择Go To Definition)时,Visual Studio始终会转到Meta数据文件而不是转到源.

一些要点:

  • 所有的源代码都是C#,没有VB.Net
  • 所有项目都在同一个解决方案中
  • 是的,一切都是项目参考(检查和双重检查)
  • 我已经尝试过Clean/Rebuild Solution方法(甚至可以清除Temp目录,Temporary ASP.NET Files目录等).

有没有其他人看到这种行为和/或知道如何解决它?

pfu*_*unk 55

好吧,另一位开发人员找到了答案.我们遇到问题的具体项目最初是作为文件引用添加的,然后删除并添加为项目参考.但是Visual Studio保存在网站的csproj文件中,导致问题.他进去并手动编辑了csproj文件以删除对问题项目的文件引用,现在所有内容都已修复

  • 如果ProjectReference中的GUID与引用项目中的ProjectGuid值不匹配,也会发生这种情况 (3认同)

Vad*_*dim 42

当您不将引用添加为项目但使用"添加引用"对话框中的"浏览"选项卡指向dll或exe时,会发生这种情况.如果使用"项目"选项卡添加引用,则应在选择"转到定义"时直接转到源代码.

但是,如果安装ReSharper,即使使用"浏览"选项卡添加了对dll/exe的引用,也会转到源代码.


Jes*_*aya 36

看起来它也需要在Resharper中设置.在我在Resharper中启用它之前,我的Visual Studio不会导航到.NET Framework源代码.

Resharper设置允许导航到外部源

  • 嗨,它对我有用。它解决了这个问题。使用 VS2015 更新 3,ReSharper 2016.1.2 (2认同)

Ali*_*dri 19

1.关闭你的解决方案.

2.删除<name of the solution>解决方案的<name of the solution>.sln文件所在文件夹中的隐藏.sou文件.

3.打开你的解决方案.

4.重建你的解决方案.

  • 这是对我有用的选择。但是,我使用的是VS2019 RC(16.0.0),必须删除.vs \ {ProjectName} \ v16中的.sou文件。 (5认同)

BCA*_*BCA 12

对于使用VS 2017的用户(目前我的版本为15.3.4),以下是简单的步骤:

  1. 在Windows资源管理器中打开您的解决方案,然后关闭Visual Studio
  2. 在资源管理器菜单中,选择查看,并确保已选中“隐藏的项目”复选框
  3. 导航到子文件夹 .vs\[your solution name]\v15
  4. 删除.suo档案
  5. 重新启动VS并构建您的解决方案

那对我来说已经解决了:F12打开了实际的源文件,而不是“ from metadata”版本。

  • vs 2022 -&gt; .vs\v17 (2认同)

小智 8

如果您将位置转移到正在构建项目的位置,Visual Studio通常会遇到转到元数据而不是项目的问题,即您可能有多个版本来测试.

只需删除引用并立即将其添加回来,所有内容都将被整理出来.


小智 8

标记的解决方案并不总是有效.您必须确保项目文件中引用的项目GUID是您要引用的项目的正确GUID.Visual Studio确实允许它们在某些情况下不同步.您可以使用文本编辑器从项目文件中获取项目GUID.因此,如果项目A参考项目B.在文本编辑器中打开项目B.csproj,从标记中复制项目GUID.然后在文本编辑器中打开项目A.csproj,并确保使用正确的GUID.在这种情况下搜索项目名称"B".它应该在.用正确的GUID替换标记中的GUID.保存并重新加载.当然还要确保删除基于文件的项目引用.您只需要项目引用.


cle*_*ent 6

我已杀死所有VS实例,删除了SUO,启动了sln并且它对我有用...


Ale*_*lex 5

#1

检查“视图 - 对象浏览器”,如果您看到多个具有相同名称的程序集 - 这就是您收到此错误的原因。

对于我们来说,这是 VS 2019 中的一个错误:

如果文件夹中有 ASP.NET“Razor helpers”,App_CodeVisual Studio 2019 会将其解释为不同的程序集但具有相同的名称,从而隐藏实际的程序集。

除了将这些帮助程序重写为部分视图或 HTML 帮助程序之外,没有其他解决方案(如果您计划迁移到 .NET Core,则无论如何都必须这样做)。

请在 MS 的网站上查看此解决方法,并请在那里投票支持该错误,以便 MS 修复它

https://developercommunity.visualstudio.com/solutions/1008795/view.html(请投票)

#2

同一程序集可以在对象浏览器中加载两次的另一个原因是,如果您有一个启动 iis-express 进程并且从不正确终止它的单元测试项目。