错误“类不包含方法的定义”但该方法存在

时间:2011-07-25 19:49:51

标签: c# visual-studio

我收到以下错误:

  

'MyNamespace.MyBaseClass'不包含'MyMethod'的定义   并且没有扩展方法'MyMethod'接受类型的第一个参数   可以找到`MyMamespace.MyBaseClass'(你是否错过了使用   指令或程序集引用?)

当我在调用者行中选择方法并执行[Go to Definition]时,Visual Studio会在预期的位置找到方法声明。

当方法名称更改为MyMethod_ABC并选择[生成方法存根]时,方法MyMethod_ABC将创建在具有相同签名的MyMethod旁边,只有参数名称不同。< / p>

项目无法建立。有人可以看错吗?

8 个答案:

答案 0 :(得分:4)

对于那些正在寻找解决方案的人,就像我一样:

我刚刚遇到这个问题,但事实证明在引用的项目中有一个小的编译错误,其中包含我试图使用的方法,因为该项目没有用新方法成功编译,使用它在另一个项目中无效。修正了错误,我不再收到此错误。

答案 1 :(得分:3)

我最近遇到了完全相同的问题。解决方案是删除对有问题的proyect的引用,并再次添加相同的...谁知道,像魅力一样工作:)

答案 2 :(得分:2)

引用该方法和“转到定义”成功的能力不是100%链接的。虽然他们使用大量相同的基础设施,但他们在几个关键领域有所不同。一般而言,“转到定义”将在比编译更多的情况下成功。

它们不具有相同结果的最常见原因是

  • 缺少DLL /项目参考
  • 重载分辨率错误

鉴于您遇到的特定错误,我将从缺少DLL /项目引用开始

答案 3 :(得分:2)

我以为我已经修好了一次,但后来又回来了。他们永久修复它的方式是:

首先,我在AssemblyInfo.cs中更新了程序集的版本号,可以在Visual Studio的解决方案资源管理器中的违规程序集属性部分找到该版本号。

我将它递增1.接下来我删除了我的主项目中的引用并重新添加它。最后,我执行了干净的构建违规项目并查找了任何错误。我看不到错误,但是有一个与未使用的Exception变量相关的警告。我删除了这个并完成了整个解决方案的重建,问题得到解决。

答案 4 :(得分:0)

如果您的代码涉及跨项目引用,请验证是否包含项目引用,并验证构建顺序。

答案 5 :(得分:0)

今天,当打开机器并打开visual studio时,问题消失,其他类有错误,但在正确的代码上没有红色下划线错误指示。现在解决方案正常。感谢所有为我着想的人。它是一个视觉工作室的bug? 再见。

答案 6 :(得分:0)

在开始编辑代码后,将class.cs从HtmlHelpers目录移动到带有VS接口的Filters目录后,我得到了同样的错误。构建,重建,清理没有帮助。

但是,如果你不开始编辑代码怎么办?从HtmlHelper目录中拖动class.cs并在我的情况下删除到Filters目录。然后按F5,不会出现任何错误。 然后关闭VS,删除带有dll,cache,tmp,DEBUG ...的obj目录。运行VS.按F5键再没有错误。

关闭VS,删除Obj目录并重启windows。 Filters目录中的Class.cs指向代码中错误的HtmlHelpers目录。按F5键再没有错误。

答案 7 :(得分:0)

我也遇到了这个问题。方法就在那里,可以通过“转到定义”找到。我更改了定义名称(和引用),并使用新名称获得了相同的错误。 我重新输入了它上面的参考线,然后删除了旧的参考线,瞧 - 它工作了。不知道为什么,但由于某种原因很少VS挂在一行代码上,唯一的解决方案是重新键入行并删除原始行。奇。 好吧,同样的问题又回来了。我注意到“缺失”方法不会出现在匹配我开始键入的方法列表中。来自同一类的其他方法。即使我重命名该方法,此行为也不会更改。所以我认为“盲点”与特定方法的外在形式有关 - 而不仅仅是名称。所以我从IDE“看到”的同一个类中复制了另一个方法。我重命名了它,删除了内部代码,然后在“看不见”的方法中粘贴在内部代码中。现在它始终如一。一个真正的“瞧”。