Visual Studio中的“转到定义”仅显示非项目引用的元数据

时间:2012-11-02 21:34:04

标签: c# visual-studio-2010

我有一个C#项目,其中包含对DLL格式的程序集的引用。我有这些DLL文件的PDB信息,包含在同一个文件夹中。当我在引用的成员上按F12时,我想转到该成员的定义。相反,它给了我元数据,当然我不想要。

当VS正在调试时,如果我单步进入该方法,它会转到源代码。但是,如果我在该方法上按F12,它仍会将我带到元数据中。

这里有一个类似的问题,但它只适用于项目引用,并且接受的解决方案与我的问题无关。

"Go To Definition" in Visual Studio only brings up the Metadata

总结:

  • 引用的项目是DLL
  • 我有PDB信息
  • 在调试模式下单步执行使我获得源代码
  • F12带我到元数据
  • 我希望F12能够像调试一样将我带到源代码。
编辑:添加为“项目”不是一种选择,因为它会产生额外的复杂性,因为我们的解决方案文件会引用其他五个项目,这些项目都位于不同的源控制存储库中。

7 个答案:

答案 0 :(得分:10)

在Visual Studio中展开“引用”部分,选择对相关项目的引用(包含要转换为F12的源代码的项目),右键单击它并选择“删除”。

然后通过右键单击“引用”并选择“添加引用”,在“项目”选项卡下(如果使用VS 2012)选择(或浏览)要添加引用的项目,然后单击,将引用添加回项目。确定按钮。

这将重建引用,您将能够将F12引入引用的项目源代码中。您需要对解决方案中存在此问题的所有项目执行此操作。

我不知道为什么会这样,但至少解决问题的方法很简单

答案 1 :(得分:7)

如果安装了ReSharper,则应调出ReSharper选项,并查找External Sources。在那里,您可以指定相关选项:

enter image description here

答案 2 :(得分:3)

在Visual Studio 2013中已经解决了这个问题。当我使用Go To Definition时,将PDB信息放在与DLL相同的文件夹中时会显示源代码。我没有安装Reflector扩展程序。

答案 3 :(得分:2)

引用的DLL是否是解决方案中的项目?我发现当我拥有项目的源代码时,它就在我的解决方案中,Visual Studio能够更轻松地链接到这个代码。 (没有向我显示元数据)。

此外,请务必在“参考”弹出窗口中添加“项目”引用。

这通常是我遇到此问题时所做的事情

希望这有帮助!

PS。 PDB文件通常仅用于调试(本地和远程),并且不会以您尝试使用它的方式用于源代码读取。 (“转到定义”)

答案 4 :(得分:1)

此问题的一个解决方案是使用.NET Reflector,VS或VSPro版本。该程序将修改Visual Studio以提供所需的功能。

http://www.reflector.net/

不幸的是,它的成本为135美元到195美元,这对所有人来说都不是一个选择。

答案 5 :(得分:-1)

将引用添加为项目而不是.. \ bin \ Debug \ referenceFile.dll

这解决了我的问题

答案 6 :(得分:-1)

我还使用了add reference作为项目,我的问题已经解决,而且效果很好。实际上我从很长一段时间就陷入困境,最后我解决了这个问题。

参考文献 - >添加参考文献 - >解决方案 - >项目 - >选择参考

enter image description here