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

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

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

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

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

总结一下:

  • 引用的项目是一个DLL
  • 我有PDB信息
  • 调试模式中的单步执行使我获得源代码
  • F12带我到元数据
  • 我希望F12能像调试一样把我带到源代码。

编辑:添加为“项目”不是一个选项,因为它会产生额外的复杂性,因为我们的解决方案文件引用了大约五个其他项目,这些项目都在不同的源控制存储库下。

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

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

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

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

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

在此处输入图像描述

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

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

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

当我遇到这个问题时,这通常就是我所做的

希望这可以帮助!

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

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

http://www.reflector.net/

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

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

这解决了我的问题

我还使用添加引用作为项目,我的问题已经解决,它工作得很好。 实际上我从很长一段时间就陷入困境,最后我解决了这个问题。

参考 – >添加参考 – >解决方案 – >项目 – >选择参考

在此处输入图像描述