我在Visual Studio 2008中的Web项目中工作。当我点击F12(或右键单击并选择Go To Definition)时,Visual Studio始终会转到Meta数据文件而不是转到源。
一些要点:
有没有其他人看过这种行为和/或知道如何修复它?
答案 0 :(得分:52)
嗯,另一位开发者找到了答案。我们遇到问题的具体项目最初是作为文件引用添加的,然后删除并添加为项目参考。但是Visual Studio保存在网站的csproj文件中,导致问题。他进去并手动编辑了csproj文件以删除对问题项目的文件引用,现在所有内容都已修复
答案 1 :(得分:41)
当您不将引用添加为项目但使用“添加引用”对话框中的“浏览”选项卡指向dll或exe时,会发生这种情况。如果使用“项目”选项卡添加引用,则应在选择“转到定义”时直接转到源代码。
但是,如果您安装ReSharper,即使您使用“浏览”标签添加了对dll / exe的引用,也会转到源代码。
答案 2 :(得分:34)
答案 3 :(得分:11)
1。关闭您的解决方案。
2。在您的解决方案的<name of the solution>
。sln文件存在的文件夹中删除隐藏的DoTasks
。sou文件。
3. 打开您的解决方案。
4. 重建您的解决方案。
答案 4 :(得分:8)
如果您将位置转移到构建项目的位置,Visual Studio经常会遇到元数据而非项目的问题,即您可能有多个版本来测试。
只需删除引用并立即将其添加回来,所有内容都将被整理出来。
答案 5 :(得分:8)
标记的解决方案并不总是有效。您必须确保项目文件中引用的项目GUID是您要引用的项目的正确GUID。 Visual Studio确实允许它们在某些情况下不同步。您可以使用文本编辑器从项目文件中获取项目GUID。 因此,如果项目A参考项目B.在文本编辑器中打开项目B.csproj,从标记中复制项目GUID。然后在文本编辑器中打开项目A.csproj,并确保使用正确的GUID。在这种情况下搜索项目名称“B”。它应该在。用正确的GUID替换标记中的GUID。保存并重新加载。 当然还要确保删除基于文件的项目引用。您只需要项目参考。
答案 6 :(得分:6)
对于那些使用VS 2017的人(我现在的版本是15.3.4),这里有一些简单的步骤:
.vs\[your solution name]\v15
.suo
文件为我修复了它:F12打开了实际的源文件,而不是“from metadata”版本。
答案 7 :(得分:6)
我已杀死所有VS实例,删除了SUO,启动了sln并且它对我有用......
答案 8 :(得分:2)
我想出了如何解决我的问题from this post,也许它对你们中的一些人也有用。
我按照以下步骤操作:
(我相信步骤3或4会在缺少intellisense数据库文件时重新生成)
Intellisense,“去定义”和“找到所有引用”应该再次工作。
答案 9 :(得分:2)
删除引用dll,Build(会得到错误),添加引用(你删除了)然后重新构建......你的函数上的F12应该可以工作(为我工作)。
答案 10 :(得分:2)
就我而言,(使用Visual Studio Professional 2015),当我禁用XAML设计器时,F12停止工作。 只要我还原更改并重新启动Visual Studio,F12就会再次运行。
多次检查模式以确认然后发布。希望它可以帮到某人。
答案 11 :(得分:1)
VS2017 VB.Net Windows 10 Pro - 我使用程序集名称“SharedCollection”,其中包括一个名为 MyGlobals 的 VB 模块。全局变量之一是 FileVersion。引用显示元数据和引用它的 Windows 服务具有过时的设置。我尝试了上面的一些 SUO 补救措施,但都没有奏效。
这行得通
我在 References 中删除并重新创建了 ShareCollection 的项目引用。
答案 12 :(得分:1)
选中“视图-对象浏览器”,如果看到多个具有相同名称的程序集,这就是为什么出现此错误的原因。
对我们来说,这是VS 2019中的错误:
如果App_Code
文件夹中有ASP.NET“剃刀助手”,Visual Studio 2019会将其解释为不同的程序集,但具有相同的名称,这将隐藏实际的程序集。
除了将那些帮助程序重写为部分视图或HTML帮助程序之外,没有其他解决方法(如果计划迁移到.NET Core,则必须这样做)。
请在MS网站上查看此变通办法,请在此处修正该错误,以便MS对其进行修复
https://developercommunity.visualstudio.com/solutions/1008795/view.html(请投票)
在对象浏览器中可以将相同的程序集加载两次的另一个原因是,如果您有一个单元测试项目启动了iis-express进程,却从不将其杀死。
答案 13 :(得分:1)
首先从Visual Studio中删除dll文件,然后从解决方案资源管理器->网站->添加->参考手动添加它们,并在IIS中启用32位应用程序后,为我修复了该问题。
答案 14 :(得分:1)
以下步骤适合我。
<Reference Include="">
删除行
<SpecificVersion>False</SpecificVersion>
or
<SpecificVersion>True</SpecificVersion>
答案 15 :(得分:1)
我做了所有建议的步骤,但没有任何改变,然后是 最后 右键单击并添加参考菜单,项目选项卡
问题排序。希望这对某些人有所帮助。
答案 16 :(得分:1)
刚发现另一个原因。我将我的web项目升级到4.0,但是将类库保留为2.0。此时,我的解决方案中的所有类库都被视为来自我的Web项目的文件引用。可能会帮助别人......
答案 17 :(得分:1)
对我来说,GUID解决方案不起作用,我找不到我的.ncb文件。 (或者我可能很懒,看起来不够用,但这并不重要。)重建和重新启动visual studio也无济于事。
我做的是关闭visual studio并删除我的intellisense保持链接到的Meta Data文件顶部引用的.dll和.pdb。就我而言,这意味着我从Utilities / bin / Release中删除了我的.dll和它的.pdb文件。 (Utilities是我遇到问题的.dll项目的名称。)然后我重新启动了visual studio并重建了.dll然后整个解决方案。没有更多的问题!
答案 18 :(得分:1)
症状:
当使用“转到定义”或“转到声明”或“查找所有引用”功能时,Visual Studio 2010 Ultimate一再未能找到函数,#define,includes等的引用 - 奇怪的是Intellisense正在工作。 / p>
修正:
通过解析解决方案中的包含文件,将自动重建.sdf文件
答案 19 :(得分:0)
这个对我有用:
答案 20 :(得分:0)
我遇到了同样的问题,其中一位同事给了我以下解决方案,它有效! 如果以上都不适合您,
答案 21 :(得分:0)
我在所涉及的两个项目之间有一个循环引用(这是禁止的)。不得不重新构建我的代码以解决它,因为两个项目都真正依赖于彼此。删除其中一个引用解决了intellisense问题。这在逻辑上是有缺陷的,如果没有这个错误,我可能不会注意到它!
答案 22 :(得分:0)
我刚刚在VS 2013上遇到了这个问题。我能做的事情(确实?)没有孤立正在改变CSPROJ文件中的GUID。由于CSPROJ文件被检入SVN,我不能简单地更改本地开发的GUID。相反,我经常SVN每次发生时都会恢复本地更改。
首先,我必须解决不断变化的GUID问题。
从原始CSPROJ文件中提取值。
{B1234567-5123-4AAE-FE43-8465767788ED}
通过文本编辑器打开SLN文件,而不是VS.
在解决方案中找到Project参考。
项目(&#34; {FAE12345-3210-1357-B3EB-00CA4F396F7C}&#34;)=&#34; Some.Project&#34;,&#34; .... \ assemblies \ Some。 Project \ Some.Project.csproj&#34;,&#34; {B7654321-5321-4AAE-FE3D-ED20900088ED}&#34; EndProject
列出的第一个GUID是解决方案GUID。对于SLN中引用的每个项目,您应该在第一个参数处看到此值重复。 .csproj之后的GUID是您要用pristine GUID替换的GUID。
这应该解决第一个问题,但是&#34;转到定义&#34;登陆元数据并没有解决。在我们的SLN文件中,有一个主项目(我们的网站),因此它在SLN文件中的条目应包含具有多个GUID值的ProjectSection条目。这是一个例子:
ProjectSection(ProjectDependencies) = postProject
{AC50D230-24C4-4DCA-BAAD-355E6AF5EFBD} = {AC50D230-24C4-4DCA-BAAD-355E6AF5EFBD}
EndProjectSection
请注意,此集合中缺少的GUID是我的pristine项目中的GUID。
答案 23 :(得分:0)
就我而言,我刚刚改变了
<mvcBuildViews>
在我的网站的.csproj文件中到“true”(在我的Razor视图文件中找到编译错误:http://forums.asp.net/t/1909113.aspx?How+to+have+Visual+Studio+2012+returned+compile+errors+on+razor+syntax+error+in+asp+net+web+page+2+),然后当我构建时,我的网站内部出现错误/ obj / Debug /目录。从任何这些文件(过时的)中,右键单击并选择“转到定义”将为我提供[元数据]版本。
所以对我来说,这里没有一个解决方案有效,因为我没有从我项目中实际存在的文件开始。删除了整个/ obj / Debug /目录,错误消失了,从任何普通文件中我都可以正确使用Go To Definition。
答案 24 :(得分:0)
如果您尝试跳转到已卸载项目(不可用)中的定义,则可能会发生这种情况。右键单击已卸载的项目,然后选择“重新加载项目”。
答案 25 :(得分:0)
答案 26 :(得分:0)
我修改了$months=@(
[PSCustomObject]@{Month='January';Days=31}
[PSCustomObject]@{Month='February';Days=28}
[PSCustomObject]@{Month='March';Days=31}
[PSCustomObject]@{Month='April';Days=30}
[PSCustomObject]@{Month='May';Days=31}
[PSCustomObject]@{Month='June';Days=30}
[PSCustomObject]@{Month='July';Days=31}
[PSCustomObject]@{Month='August';Days=31}
[PSCustomObject]@{Month='September';Days=30}
[PSCustomObject]@{Month='October';Days=31}
[PSCustomObject]@{Month='November';Days=30}
[PSCustomObject]@{Month='December';Days=31}
)
function BlackFriday {
param(
[Parameter(ValueFromPipeline=$true, Mandatory=$true, Position=0)] [int64] $start,
[Parameter(ValueFromPipeline=$true, Mandatory=$true, Position=1)] [int64] $end
)
$years=$start..$end
$blackfriday=@()
foreach ($year in $years) {
$array=1..12
foreach ($arra in $array) {
$month=0
for ($i=0;$i -lt $arra-1;$i++) {
$month+=$months[$i].Days
}
[int]$ye=$year
if ($arra -le 2) { $ye-=1}
if ($ye % 4 -eq 0) {$leap=$ye/4}
else {while ($ye % 4 -ne 0) {$ye-=1}
$leap=$ye/4}
if ($ye % 100 -eq 0) {$century=$ye/100}
else {while ($ye % 100 -ne 0) {$ye-=4}
$century=$ye/100}
if ($ye % 400 -eq 0) {$cycle=$ye/400}
else {while ($ye % 400 -ne 0) {$ye-=100}
$cycle=$ye/400}
$leap=$leap-$century+$cycle
$date=[int64](($year-1)*365+$month+13+$leap)
if ($date % 7 -eq 5) {
$name=$months[$arra-1].Month
$blackfriday+=[string]"$year, $name 13, Friday"
}
}
}
$blackfriday
}
$start=Read-Host "Input start year"
$end=Read-Host "Input end year"
BlackFriday $start $end
文件,然后在参考-> HinPath中将obj更改为bin并解决了问题。
答案 27 :(得分:-1)
最好的猜测是你没有调试信息。也许您在磁盘上有多个程序集副本,并且它没有.pdb文件。
从项目中搜索程序集名称并将其全部删除并重建。