Visual Studio c#编译器没有注意到更改的方法名称

Visual Studio c#编译器没有注意到更改的方法名称,c#,visual-studio-2010,C#,Visual Studio 2010,我在c程序中遇到了一个非常奇怪的问题: 我有一个接口,它声明了一个方法和一个实现这个接口的类。当我更改方法名称(在接口和实现中)时,VisualStudio编译代码,但是如果我运行代码,我会得到一个未找到方法异常。如果我手动删除目标dll并重新编译项目/解决方案,一切正常 但是,还有许多其他方法和属性,它们也在同一个接口中声明,并在同一个类中实现。如果我更改其中一个的名称,一切正常 有人知道这是什么吗 public interface INode{ //... IEnumera

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

我有一个接口,它声明了一个方法和一个实现这个接口的类。当我更改方法名称(在接口和实现中)时,VisualStudio编译代码,但是如果我运行代码,我会得到一个
未找到方法
异常。如果我手动删除目标dll并重新编译项目/解决方案,一切正常

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

有人知道这是什么吗

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

    }
    // ...
 }
公共接口INode{
//...
i数不清的祖先();
//...
}
公共抽象类节点库:INode{
// ...
公共IEnumerable祖先(){
}
// ...
}

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

我一直遇到这个问题

通常我得到保存,关闭VS,打开解决方案备份,然后构建。这一过程让这个问题在一段时间内保持不受影响

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

我相信问题在于VS没有正确构建解决方案,有些东西被“卡住”。我还相信VS有一些扩展可以帮助解决这个问题


这篇文章对于您的需求可能有点极端,但您可能会发现它很有用:

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

遗憾的是,我说不出这个真正奇怪的问题的原因是什么,现在我再也没有机会研究这个问题了。 它一定是在项目中被破坏了,但是我无法想象这会是什么,因为实际上只涉及一个方法签名(与代码中的位置和方法的名称无关)


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

是否获得详细msbuild输出的一些信息?程序集是否在其他项目中?如果是这样,你是手动添加引用,还是使用“项目”选项卡添加引用?@Adriano:我已经激活了,但没有看到什么特别的东西。然而,这是我第一次看到它,它真的有很多信息。你能给我一个提示我应该注意什么吗?@asawyer:接口和类在同一个程序集中,但解决方案由多个项目组成,其中大多数项目引用问题程序集(这是一个库项目)。@HCL我不知道!“无法将依赖项dll复制到输出文件夹,请自行删除”应该是msbuild的一个很好的提示!LOL(说真的:我认为项目依赖关系是可以的,复制本地是正确的)。是的,解决方案也是这样。没有变化。但谢谢您的回答。如果引用不是通过“项目”选项卡添加为dll,则可能会发生这种情况,这可能会非常混乱。@asawyer:引用是通过“项目”选项卡添加的。有趣的是,只有一个方法签名产生了问题。相同文件中的所有其他更改都已正确编译!真奇怪。自从.net的第一个版本以来,我从未见过这样的东西!疯子我喜欢这个,以防我在办公室看到它发生。