以前工作的asp.net webforms应用程序现在抛出这个错误:

系统。MissingMethodException:方法未找到

DoThis方法在同一个类上,它应该可以工作。

我有一个通用的处理程序,这样:

public class MyHandler: IHttpHandler
{
    public void Processrequest(HttpContext context)
    {
      // throws error now System.MissingMethodException: 
      // Method not found.
      this.DoThis(); 
    }

    public void DoThis(){ ... }
}

当前回答

我也有同样的事情发生,当我有许多MSBuild进程在后台运行时,它们实际上已经崩溃了(它们引用了旧版本的代码)。我关闭VS并在进程资源管理器中杀死所有MSBuild进程,然后重新编译。

其他回答

重新启动Visual Studio实际上为我解决了这个问题。我认为这是由于旧的程序集文件仍然在使用造成的,执行“清洁构建”或重新启动VS应该会修复它。

在更新各种Nuget包后遇到这个错误。检查Visual Studio错误列表(或构建输出),查看类似以下的警告:

发现同一依赖项的不同版本之间存在冲突 组装。在Visual Studio中,双击此警告(或选择它) 并按Enter)来修复冲突;否则,添加如下内容 绑定重定向到应用程序中的“运行时”节点 配置文件: ...

在Visual Studio中双击此警告会自动调整我的web中的各种bindingRedirect包版本。配置并解决了错误。

可能的情况是

不匹配的nuget组件版本

问题详解

我们有一个解决方案生成了多个nuget包。

packageA 1.0中的类A

packageB 1.0中的B类

A参考B

所以当A和B都有更新时,我们必须更新packageA和packagb,但问题是我的团队成员之一没有更新packagb

现在PackageA 1.1仍然依赖于PackageB 1.0,但PackageB没有B类的更新版本

因此,它无法找到方法

解决方案

移动两个包到+1版本 在这种情况下,我移动了

PackageA 1.1 -> PackageA 1.2 .

包装0 . 1.1

但为了使事情更加对称,可以将两者移动到相同的版本

PackageA 1.1 -> PackageA 1.2 .

PackageB 1.0 -> PackageB 1.2

我在同一个程序集中引用了一个文件,而不是一个单独的dll,就发生了这种情况。一旦我从项目中排除了该文件,然后又将其包含进来,一切都工作得很好。

这发生在我使用MVC4时,我在阅读这个线程后决定重命名抛出错误的对象。

我做了一个清理和重建,并注意到它跳过了两个项目。当我重新构建其中一个时,有一个错误,我启动了一个函数而没有完成它。

所以VS引用了一个我重写的模型,而没有问我是否想这样做。