我正在使用Visual Studio 2008开发一个Web项目。当我按F12(或右键单击并选择跳转到定义)时,Visual Studio总是跳转到元数据文件而不是源代码。
一些要点:
- 所有的源码都是C#,没有VB.Net。
- 所有项目都在同一个解决方案中。
- 所有引用都是项目引用,而不是文件引用(已经检查和重复检查)。
- 我尝试了清理/重新生成解决方案的方法(甚至清空Temp目录、Temporary ASP.NET Files目录等)。
有其他人遇到过这种情况或者知道如何解决吗?
我正在使用Visual Studio 2008开发一个Web项目。当我按F12(或右键单击并选择跳转到定义)时,Visual Studio总是跳转到元数据文件而不是源代码。
一些要点:
有其他人遇到过这种情况或者知道如何解决吗?
另一位开发者找到了答案。我们遇到问题的具体项目最初是以文件引用的方式添加的,然后被删除并作为项目引用添加。但是,Visual Studio在网站的csproj文件中保留了这两个引用,导致出现了问题。他手动编辑了csproj文件,删除了有问题项目的文件引用,现在所有问题都已解决。
如果在“添加引用”对话框中使用“浏览”选项卡指向 DLL 或 EXE 文件,而不是将其作为项目添加引用,则会发生此问题。如果您使用“项目”选项卡添加引用,则在选择“转到定义”时应直接跳转到源代码。
但是,如果安装了ReSharper,即使使用“浏览”选项卡将引用添加到 DLL/EXE,也可以直接跳转到源代码。
1. 关闭你的解决方案。
2. 在你的解决方案的<name of the solution>
.sln文件所在的文件夹中删除隐藏的<name of the solution>
.suo文件。
3. 打开你的解决方案。
4. 重新构建你的解决方案。
对于那些使用VS 2017(我目前使用的是15.3.4版本)的人,以下是简单的步骤:
.vs\[你的解决方案名称]\v15
.suo
文件这个方法对我很有效:F12会打开实际的源文件,而不是元数据版本。
Visual Studio经常存在一个问题,就是如果你在构建项目时更改了位置,它会转到元数据而不是你的项目,也就是说你可能有多个版本以进行测试。
只需删除引用,然后立即将其添加回来,一切都会得到解决。
我关闭了所有的VS实例,删除了.suo文件,然后打开sln文件,这样就可以正常工作了…
移除引用的dll,进行构建(会出现错误),重新添加之前移除的引用,再次进行构建……然后在您的函数上按F12键应该可以工作(对我起作用了)。
检查"视图-对象浏览器",如果您看到有多个同名程序集 - 这就是您遇到此错误的原因。
对我们来说,这是VS 2019中的一个错误:
如果你在App_Code
文件夹中有ASP.NET "Razor helpers",Visual Studio 2019会将其解释为另一个同名程序集,从而隐藏了实际的程序集。
目前还没有其他修复方法,除非重写那些helper为部分视图或HTML辅助工具(无论如何,如果打算迁移到.NET Core,您都必须这样做)。
请参阅MS站点上的此解决方法,并在那里升级该错误,以便MS修复它。
https://developercommunity.visualstudio.com/solutions/1008795/view.html (请升级)
同一程序集被加载两次到对象浏览器中还有另一个原因,就是如果您有一个单元测试项目,该项目启动iis-express进程并且没有正确终止。