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

时间:2012-06-12 19:48:54

标签: c# visual-studio-2010

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

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

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

有谁有想法,这可能是什么?

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

    }
    // ...
 }

3 个答案:

答案 0 :(得分:2)

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

可悲的是,我不能说这个真正奇怪的问题是什么原因,现在我没有机会看到这个问题了。 它必定是在项目中被破坏的东西,但我无法想象这可能是什么,因为实际上只涉及一个方法签名(独立于代码中的位置和方法的名称)。

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

答案 1 :(得分:1)

您是否尝试过构建&gt;清洁解决方案/项目?

答案 2 :(得分:1)

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

通常我得到保存,关闭VS,打开解决方案,然后构建。这个过程让问题暂时停滞不前。

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

我认为问题在于VS没有正确构建解决方案而且某些东西会“卡住”。我也相信有VS的扩展可以帮助解决这个问题。

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