我有一个C#项目,其中包含对DLL格式的程序集的引用。我有这些DLL文件的PDB信息,包含在同一个文件夹中。当我在引用的成员上按F12时,我想转到该成员的定义。相反,它给了我元数据,当然我不想要。
当VS正在调试时,如果我单步进入该方法,它会转到源代码。但是,如果我在该方法上按F12,它仍会将我带到元数据中。
这里有一个类似的问题,但它只适用于项目引用,并且接受的解决方案与我的问题无关。
"Go To Definition" in Visual Studio only brings up the Metadata
总结:
答案 0 :(得分:10)
在Visual Studio中展开“引用”部分,选择对相关项目的引用(包含要转换为F12的源代码的项目),右键单击它并选择“删除”。
然后通过右键单击“引用”并选择“添加引用”,在“项目”选项卡下(如果使用VS 2012)选择(或浏览)要添加引用的项目,然后单击,将引用添加回项目。确定按钮。
这将重建引用,您将能够将F12引入引用的项目源代码中。您需要对解决方案中存在此问题的所有项目执行此操作。
我不知道为什么会这样,但至少解决问题的方法很简单
答案 1 :(得分:7)
如果安装了ReSharper,则应调出ReSharper选项,并查找External Sources
。在那里,您可以指定相关选项:
答案 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以提供所需的功能。
不幸的是,它的成本为135美元到195美元,这对所有人来说都不是一个选择。
答案 5 :(得分:-1)
将引用添加为项目而不是.. \ bin \ Debug \ referenceFile.dll
这解决了我的问题
答案 6 :(得分:-1)