Visual Studio c# 编译器不会注意到方法名称已更改

本文关键字:方法 注意到 Studio 编译器 Visual | 更新日期: 2023-09-27 18:36:53

我在c#程序中遇到了一个非常奇怪的问题:

我有一个声明方法和实现此接口的类的接口。当我更改方法名称(在接口和实现中)时,Visual Studio 会编译代码,但如果我运行代码,则会出现method not found异常。如果我手动删除目标dll并重新编译项目/解决方案,一切正常。

但是,还有很多其他方法和属性,也在同一接口中声明并在同一类中实现。如果我更改其中一个的名称,一切正常!

有没有人知道,这是什么?

 public interface INode{
    //...
    IEnumerable<INode> Ancestors();
    //...
 }
 public abstract class NodeBase : INode{
    // ...
    public IEnumerable<INode> Ancestors(){
    }
    // ...
 }

Visual Studio c# 编译器不会注意到方法名称已更改

在尝试解决问题时,我已从UI项目中删除了对问题程序集的引用,然后重新添加。从这个时候开始,这个问题就消失了

可悲的是,我不能说这个非常奇怪的问题的原因是什么,现在我没有机会再看这个问题了。它一定是项目中损坏了什么,但是我无法想象这可能是什么,因为实际上只涉及一个方法签名(与代码中的位置和方法的名称无关)。

感谢到目前为止发布答案(+1)的任何人,引导我找到解决方案。我希望我再也不会看到这种奇怪的行为了!对于那些有相同问题的人:尝试重新创建对发布项目的引用

您是否尝试过构建>干净的解决方案/项目?

我一直遇到这个问题...

通常我会保存,关闭VS,打开解决方案备份,然后构建。这个过程暂时解决了这个问题。

当您"清理"解决方案时,它会删除与解决方案关联的所有已编译文件和临时文件。它确保下一个构建将从头开始。

我相信问题在于VS没有正确构建解决方案并且某些东西被"卡住了"。我也相信VS的扩展可以帮助解决这个问题。

这篇文章对于你需要的东西来说可能有点极端,但你可能会发现它很有用:http://www.neovolve.com/post/2010/08/02/Cleaning-a-VS2010-solution-with-a-sledgehammer.aspx