以前工作的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(){ ... }
}

当前回答

只是为了帮助任何人,虽然这是一个老问题,我的问题有点奇怪。

我在使用Jenkins时遇到了这个错误。

最终发现系统日期被手动设置为未来日期,这导致dll使用该未来日期编译。当日期被设置回正常时,MSBuild解释为文件更新,不需要重新编译项目。

其他回答

在我的情况下,它是一个具有相同名称的旧dll的文件夹,这些dll在我的.csproj文件中被引用,尽管路径显式地给出了它们,但它们以某种方式被包括在内,因此相同dll的几个版本存在冲突。

使用Costura。Fody 1.6 & 2.0: 在浪费了大量时间寻找所有其他潜在解决方案都不起作用的类似错误之后,我发现我嵌入的一个旧版本的DLL位于我运行新编译的.exe的同一目录中。显然,它首先在同一目录中查找本地文件,然后向内查找其嵌入式库。删除旧的DLL起作用了。

需要明确的是,我的引用并不是指向一个旧的DLL,而是旧DLL的副本位于我测试应用程序的目录中,该目录与编译应用程序的系统不同。

I had a similar scenario where I was getting this same exception being thrown. I had two projects in my web application solution, named, for sake of example, DAL and DAL.CustSpec. The DAL project had a method named Method1, but DAL.CustSpec did not. My main project had a reference to the DAL project and also a reference to another project named AnotherProj. My main project made a call to Method1. The AnotherProj project had a reference to the DAL.CustSpec project, and not the DAL project. The Build configuration had both the DAL and DAL.CustSpec projects configured to be built. After everything was built, my web application project had the AnotherProj and DAL assemblies in its Bin folder. However, when I ran the website, the Temporary ASP.NET folder for the website had the DAL.CustSpec assembly in its files and not the DAL assembly, for some reason. Of course, when I ran the part that called Method1, I received a "Method not found" error.

为了修复这个错误,我必须从DAL更改AnotherProj项目中的引用。CustSpec到只是DAL,删除了临时ASP中的所有文件。NET Files文件夹,然后重新运行网站。从那以后,一切都开始运转了。我还确保了DAL。在“生成配置”中取消选中CustSpec项目后,没有生成该项目。

我想我要分享这个,也许它能在未来帮助到其他人。

可能的情况是

不匹配的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

我刚刚在一个。net MVC项目中遇到了这个问题。根本原因是NuGet包的版本冲突。我有几个项目的解决方案。每个项目都有一些NuGet包。在一个项目中,我使用了企业库语义日志包的一个版本,而在另外两个项目(引用了第一个项目)中,我使用了同一包的旧版本。它编译时没有错误,但是当我尝试使用这个包时,它给出了一个神秘的“Method not found”错误。

解决办法是从两个项目中删除旧的NuGet包,这样它就只包含在真正需要它的一个项目中。(我也对整个解决方案做了一个干净的重建。)