我正在Visual Studio 2008中的Web项目中工作。当我按F12键(或右键单击并选择“转到定义”时),Visual Studio始终在转到元数据文件,而不是转到源文件。
一些要点:
- 所有的源代码都是C#,没有VB.Net
- 所有项目都在同一个解决方案中
- 一切都是项目参考,而不是文件参考(选中和再次选中)
- 我尝试了“清理/重建解决方案”方法(甚至清除了Temp目录,Temporary ASP.NET Files目录等)。
有没有其他人看到过此行为和/或知道如何解决此问题?
我正在Visual Studio 2008中的Web项目中工作。当我按F12键(或右键单击并选择“转到定义”时),Visual Studio始终在转到元数据文件,而不是转到源文件。
一些要点:
有没有其他人看到过此行为和/或知道如何解决此问题?
Answers:
好吧,另一个开发人员找到了答案。我们遇到问题的特定项目最初是作为文件引用添加的,然后被删除并添加为项目引用。但是,Visual Studio将两者都保留在该网站的csproj文件中,从而引起了问题。他进入并手动编辑了csproj文件,以删除对该问题项目的文件引用,现在所有问题都已修复。
1.关闭解决方案。
2.删除<name of the solution>
解决方案的<name of the solution>
.sln文件所在的文件夹中的隐藏.suo文件。
3.打开您的解决方案。
4.重建您的解决方案。
症状:
当使用“转到定义”或“转到声明”或“查找所有引用”功能时,Visual Studio 2010 Ultimate反复未能找到对函数,#define,包含等的引用-奇怪的是Intellisense在起作用。
固定:
解析解决方案中的包含文件,将自动重建.sdf文件
以下步骤对我有用。
<Reference Include="">
删除行
<SpecificVersion>False</SpecificVersion>
or
<SpecificVersion>True</SpecificVersion>
首先从Visual Studio中删除dll文件,然后从解决方案资源管理器->网站->添加->参考手动添加它们,并在IIS中启用32位应用程序后,为我修复了它。
选中“视图-对象浏览器”,如果看到多个具有相同名称的程序集,这就是为什么出现此错误的原因。
对我们来说,这是VS 2019中的错误:
如果App_Code
文件夹中有ASP.NET“剃刀助手”,Visual Studio 2019会将其解释为不同的程序集,但具有相同的名称,这将隐藏实际的程序集。
除了将那些帮助程序重写为部分视图或HTML帮助程序之外,没有其他解决方法(如果计划迁移到.NET Core,则必须这样做)。
请在MS网站上查看此变通办法,请在此处修正错误,以便MS对其进行修复
https://developercommunity.visualstudio.com/solutions/1008795/view.html(请投票)
可以在对象浏览器中两次加载同一程序集的另一个原因是,如果您有一个单元测试项目启动iis-express进程,并且从不对其进行正常终止。
就我而言,我最近才改变
<mvcBuildViews>
设置为我网站的.csproj文件中的“ true”(以在Razor视图文件中查找编译错误:http://forums.asp.net/t/1909113.aspx?How + to + have + Visual + Studio + 2012 +返回+ compile + errors + on + razor + syntax + error + in + asp + net + web + page + 2 +),然后在构建时,我从站点的/ obj / Debug /目录中获取错误。从任何这些文件(已过期)中,右键单击并选择“转到定义”将为我提供[元数据]版本。
因此,对我而言,这里的解决方案均无效,因为我不是从项目中实际存在的文件开始的。删除了整个/ obj / Debug /目录,错误消失了,并且从任何普通文件中,我都可以正确使用“转到定义”。
我只是在VS 2013上遇到了这个问题。我无法(无法解决)的某件事正在更改CSPROJ文件中的GUID。由于CSPROJ文件已签入SVN,因此我无法简单地在本地开发人员上更改GUID。相反,我一直在SVN每次发生时都还原本地更改。
首先,我必须解决不断变化的GUID问题。
从原始CSPROJ文件中提取值。
{B1234567-5123-4AAE-FE43-8465767788ED}
通过文本编辑器NOT VS打开SLN文件。
在解决方案中找到项目参考。
Project(“ {FAE12345-3210-1357-B3EB-00CA4F396F7C}”)=“ Some.Project”,“ .... \ assemblies \ Some.Project \ Some.Project.csproj”,“ {B7654321-5321-4AAE- FE3D-ED20900088ED}“结束项目
列出的第一个GUID是解决方案GUID。对于SLN中引用的每个项目,应该在第一个参数处看到重复的该值。.csproj之后的GUID是您要替换为原始GUID的GUID。
这应该可以解决第一个问题,但是无法解决元数据中的“转到定义”问题。在我们的SLN文件中,有一个主项目(我们的网站),因此它在SLN文件中的条目应包含具有多个GUID值的ProjectSection条目。这是一个例子:
ProjectSection(ProjectDependencies) = postProject
{AC50D230-24C4-4DCA-BAAD-355E6AF5EFBD} = {AC50D230-24C4-4DCA-BAAD-355E6AF5EFBD}
EndProjectSection
请注意,此集合中缺少的GUID是我原始项目中的GUID。
如果您试图跳转到已卸载项目(不可用)中的定义,则可能会发生这种情况。右键单击已卸载的项目,然后选择“重新加载项目”。