Visual Studio中的“转到定义”仅调出元数据
我正在Visual Studio 2008中的Web项目中工作。当我点击F12(或右键单击并select“转到定义”)时,Visual Studio始终转到元数据文件,而不是转到源代码。
几点:
- 所有的源代码都是C#,没有VB.Net
- 所有的项目都在相同的解决scheme
- 是的,一切都是一个项目的参考(检查和双重检查)
- 我已经尝试了清理/重build解决scheme的方法(甚至清除Temp目录,临时ASP.NET文件目录等)。
有没有其他人看到这种行为和/或知道如何解决它?
那么另外一个开发者find了答案。 我们遇到的具体项目最初是作为文件引用添加的,然后作为项目引用删除并添加。 但是Visual Studio保存在网站的csproj文件中,导致了这个问题。 他走进去,手动编辑csproj文件,删除问题项目的文件引用,现在都已经修复了
它发生在你不添加引用作为项目,但指向添加引用对话框中的浏览选项卡的DLL或EXE。 如果您使用“项目”选项卡添加参考,则应在select“转到定义”时直接转到源代码。
但是,如果您安装了ReSharper ,即使您使用“浏览”选项卡添加了对dll / exe的引用,也会转到源代码。
看起来它需要在Resharper中设置。 我的Visual Studio不导航到.NET Framework源代码,直到我在Resharper中启用它。
视觉工作室经常遇到元数据问题,而不是你的项目,如果你转移你正在build立的项目的位置,即你可能有几个版本来testing的东西。
简单地删除引用,并立即添加回来,一切都将被整理出来。
标记的解决scheme并不总是工作。 您必须确保项目文件中引用的项目GUID是正在尝试引用的项目的正确的GUID。 在某些情况下,Visual Studio允许它们脱离同步。 您可以使用文本编辑器从项目文件中获取项目GUID。 因此,如果项目A引用项目B.在文本编辑器中打开项目B.csproj,从标签复制项目GUID。 然后在文本编辑器中打开项目A.csproj,并确保您使用的是正确的GUID。 在这种情况下search项目名称“B”。 应该是在。 用正确的标签replace标签中的GUID。 保存并重新加载。 当然,也要确保删除基于文件的项目引用。 你只需要项目引用。
我想通过这篇文章解决我的问题,也许它也适用于你们中的一些人。
我遵循这些步骤:
- closures解决scheme。
- 删除解决scheme的智能感知数据库文件:.ncb
- 打开解决scheme。
- 重build解决scheme。
(我相信第3步或第4步缺less时会重新生成intellisense数据库文件)
智能感知,“去定义”和“find所有参考”应该再次工作。
删除引用的DLL,生成(将得到错误),添加引用(你删除),然后再次构build… F12在你的函数应该工作(为我工作)。
我杀了所有的VS实例,删除了SUO,启动sln,它为我工作…
症状:
当使用“转到定义”或“转到声明”或“查找所有引用”function时,Visual Studio 2010 Ultimate反复无法find对函数,#定义,包含等的引用 – 奇怪的是智能感知工作正常。
固定:
- closuresVisual Studio
- 删除(如果你想保守,重命名)解决scheme.sdf文件
- 重新打开Visual Studio
.sdf文件将通过parsing解决scheme中的包含文件自动重build
对于我来说,GUID解决scheme不起作用,我无法find我的.ncb文件。 (或者也许我很懒,看起来不够努力,但这并不重要。)重build和重新启动visual studio也无济于事。
我所做的是closures视觉工作室,并删除在元数据文件的顶部引用我的智能感知保持链接的.dll和.pdb。 在我的情况下,这意味着我删除了我的.dll,它是来自Utilities / bin / Release的.pdb文件。 (实用程序是我遇到问题的.dll项目的名称。)然后,我重新启动了visual studio,然后重新构build.dll,然后是整个解决scheme。 没有更多的问题!
刚刚find另一个原因。 我升级了我的web项目到4.0,但离开类库2.0。 那时,我的解决scheme中的所有类库都被视为我的Web项目的文件引用。 可能帮助别人…
1.closures你的解决scheme。
2.删除您的解决scheme的<name of the solution>
解决scheme<name of the solution>
.sln文件所在的文件夹中隐藏的<name of the solution>
.sou文件。
3.打开你的解决scheme。
4.重build您的解决scheme。
- 点击VS的网站菜单。
- 添加参考…
- 从对话框中点击项目选项卡
- selectddl
- 点击确定button
就我而言,我刚刚变了
<mvcBuildViews>
到我的网站的.csproj文件“真实”(在我的剃刀视图文件中find编译错误: http ://forums.asp.net/t/1991111.aspx?How+to+have+Visual+Studio+2012+returned +编译+错误+在+剃刀+语法+错误+在+ ASP + NET +网页+页+ 2 + ),当我然后build立我得到我的网站的/ OBJ /debugging/目录中的错误。 从任何这些文件(这是过时的),右键单击并select“转到定义”会给我的[元数据]版本。
所以对我来说,这里没有任何解决办法,因为我不是从我的项目中实际存在的文件开始的。 删除了整个/ OBJ /debugging/目录,错误消失,从任何正常的文件,我可以正确使用转到定义。
我刚刚在VS 2013上遇到了这个问题。我可以做的事情(做?)不隔离是改变CSPROJ文件中的GUID。 由于CSPROJ文件被检入SVN,所以我不能简单的改变我的本地开发者的GUID。 相反,我一直在不断的SVN恢复本地的变化,每次发生。
首先,我必须解决不断变化的GUID问题。
- 将CSPROJ恢复到签入的版本。
- 通过文本编辑器打开CSPROJ,而不是VS.
-
从原始CSPROJ文件中提取值。
{B1234567-5123-4AAE-FE43-8465767788ED}
-
通过文本编辑器打开SLN文件,而不是VS.
-
在解决scheme中find项目引用。
Project(“{FAE12345-3210-1357-B3EB-00CA4F396F7C}”)=“Some.Project”,“…. \ assemblies \ Some.Project \ Some.Project.csproj”,“{B7654321-5321-4AAE- FE3D-ED20900088ED}“EndProject
-
列出的第一个GUID是解决schemeGUID。 对于SLN中引用的每个项目,您应该在第一个参数中看到重复的值。 .csproj后面的GUID是您要用原始GUIDreplace的GUID。
这应该解决第一个问题,但是元数据中的“去定义”登陆并没有解决。 在我们的SLN文件中,有一个主项目(我们的网站),所以它在SLN文件中的条目应该包含具有多个GUID值的ProjectSection条目。 这里是一个例子:
ProjectSection(ProjectDependencies) = postProject {AC50D230-24C4-4DCA-BAAD-355E6AF5EFBD} = {AC50D230-24C4-4DCA-BAAD-355E6AF5EFBD} EndProjectSection
注意这个集合中缺less的GUID是我原始项目中的GUID。
- 添加缺less的GUID作为ProjectSection和EndProjectSection之间的最后一项。 格式显示为每行,它是{GUID} = {GUID}。
- 保存文件。
- 打开你的解决scheme
- 在新添加的项目中右键单击引用,然后单击“转到定义”。
我在两个项目之间有一个循环参考 (这是一个禁止)。 为了解决这个问题,不得不调整我的代码,因为两个项目都是真正相互依赖的。 删除其中一个参考解决了intellisense问题。 这是逻辑上的缺陷,我可能不会注意到没有这个错误!
这个为我工作:
- 右键单击解决scheme资源pipe理器中参考文件夹中的dll
- 删除dll文件
- 然后右键单击Reference文件夹
- 再次引用该dll文件
我面临同样的问题,其中一位同事给了我下面的解决scheme,它的工作! 如果以上都不适合你,
- 删除所有的引用,并将其添加回来(确保path是正确的)
- 转到解决scheme属性,并重新检查所有项目的项目依赖关系。 确保您正在使用的项目作为从属项目添加到您正在处理的项目中。
我做了所有build议的步骤,但没有任何改变
最后右键单击并添加参考菜单,项目选项卡
- 只需取消select参考项目。
- 保存解决scheme。
- select相同的项目。
- 重build解决scheme。
问题sorting。 希望这对一些人有帮助。
在我的情况下(使用Visual Studio Professional 2015),当我禁用XAMLdevise器时,F12停止工作。 只要我恢复更改,并重新启动Visual Studio,F12再次工作。
检查模式多次确认,然后张贴。 希望它可以帮助别人。
对于那些使用VS 2017(我现在在15.3.4版本)这里是简单的步骤:
- 在Windows资源pipe理器中打开您的解决scheme并closuresVisual Studio
- 在资源pipe理器菜单中,select查看,并确保“隐藏项目”checkbox被标记
- 导航到子文件夹
.vs\[your solution name]\v15
- 删除
.suo
文件 - 重新启动VS并构build您的解决scheme
这对我来说是固定的:F12打开了实际的源文件,而不是“从元数据”版本。
最好的猜测是你没有debugging信息。 也许你在磁盘上有多个你的程序集的副本,它没有.pdb文件。
从您的项目中search您的程序集名称,并将其全部删除并重build。