System.MissingMethodException:找不到方法?

曾经在我的asp.net webforms应用程序工作,现在抛出这个错误:

System.MissingMethodException:未find方法

DoThis方法是在同一个类,它应该工作。

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

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

这是一个问题,当一个旧版本的DLL仍然徘徊在某处时可能会发生。 确保部署了最新的程序集,并且没有重复的旧程序集隐藏在某些文件夹中。 最好的办法是删除每个构build的项目并重build/重新部署整个解决scheme。

我通过在服务器上安装正确的.NET Framework版本解决了此问题。 该网站在4.0版本下运行,它所调用的程序集编译为4.5。 安装.NET Framework 4.5并将网站升级到4.5后,一切正常。

重新启动视觉工作室实际上为我修复了它。 我想这是由于旧的程序集文件仍然在使用,并执行“清洁生成”或重新启动VS应该修复它。

错误的Nuget包版本

我有一个unit testing项目,在我们公司的EF Nuget数据访问软件包拉,这个版本是远远落后于当前版本。

上述软件包的Nuget设置使用的是其他软件包least version ,这些软件包是第二级依赖软件包。

因此,它默默地得到了一个相关大会的错误版本

通过在Nuget中设置/更新包来获取最新的固定问题。

我有这种情况发生在同一个程序集引用的文件,而不是一个单独的DLL。 一旦我从项目中排除文件,然后再包括它,一切正常。

我刚刚在.NET MVC项目中遇到了这个问题。 根本原因是NuGet软件包的冲突版本。 我有几个项目的解决scheme。 每个项目都有一些NuGet包。 在一个项目中,我有一个版本的企业库语义logging软件包,在另外两个项目(引用第一个)中,我使用了相同软件包的旧版本。 它全部编译没有错误,但是当我试图使用这个包的时候,它给了一个神秘的“Method not found”错误。

解决方法是从两个项目中删除旧的NuGet包,以便只包含在实际需要的项目中。 (我也做了整个解决scheme的重build。)

如果使用您自己的NuGet服务器进行开发,请确保程序集版本完全相同:

 [assembly: AssemblyVersion("0.2.6")] [assembly: AssemblyFileVersion("0.2.6")] [assembly: AssemblyInformationalVersion("0.2.6")] 

也试图“清理”您的项目或解决scheme,并重新重build!

你试过转了,如果closures和再次? 笑话不谈,重新启动我的电脑是什么对我来说实际上是伎俩,并没有提到任何其他答案。

我刚刚有这个问题,事实certificate,这是因为我从我的UI项目引用了以前版本的DLL。 所以编译的时候很开心。 但是运行时使用的是以前版本的DLL。

在假设您需要重build/清理/重新部署您的解决scheme之前,检查所有其他项目的参考。

我有一个类似的情况下,我得到这个相同的exception被抛出。 我的Web应用程序解决scheme中有两个项目,例如DAL和DAL.CustSpec。 DAL项目有一个名为Method1的方法,但是DAL.CustSpec没有。 我的主要项目有一个DAL项目的引用,也是另一个名为AnotherProj的项目的引用。 我的主项目调用了Method1。 AnotherProj项目引用了DAL.CustSpec项目,而不是DAL项目。 生成configuration同时configuration了DAL和DAL.CustSpec项目。 一切build成之后,我的Web应用程序项目的Bin文件夹中有AnotherProj和DAL程序集。 但是,当我运行网站时,出于某种原因,网站的Temporary ASP.NET文件夹在其文件中有DAL.CustSpec程序集,而不是DAL程序集。 当然,当我运行名为Method1的部分时,我收到了“Method not found”错误。

我需要做的是修复这个错误,将AnotherProj项目中的引用从DAL.CustSpec改为DAL,删除Temporary ASP.NET Files文件夹中的所有文件,然后重新连接网站。 之后,一切开始工作。 我还确保DAL.CustSpec项目不是通过在构buildconfiguration中取消选中来构build的。

我想我会分享这个,以防将来帮助别人。

我在我的ASP.NET网站遇到了相同的情况。 我删除了发布的文件,重新启动VS,清理并重新生成项目。 下次发布后,错误消失了…

我解决了这个问题,通过在我的工作区( https://visualstudiogallery.msdn.microsoft.com/f017b10c-02b4-4d6d-9845-58a06545627f )中使用我的更改并运行TFS Power Tools的“焦化”来解决此问题。 然后,我搁置了这个变化,重新编译了这个项目。 这样,您将清理可能在您的工作空间中的任何“悬挂派对”,并将以新的方式启动。 这当然要求你使用TFS。

检查您的参考!

确保您的解决scheme项目始终指向相同的第三方库(不要只信任版本,查看path)。

例如,如果您在一个项目中使用iTextSharp v.1.00.101,并且您在其他位置使用NuGet或引用iTextSharp v1.00.102,则会获得这些types的运行时错误,这些错误会以某种方式渗入您的代码中。

我将所有3个项目中对iTextSharp的引用都改为指向相同的DLL,并且一切正常。

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

我做了一个清理和重build,并指出它正在跳过两个项目。 当我重build其中的一个时,发生了一个错误,我开始了一个function,并没有完成它。

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

以防万一,尽pipe这是一个老问题,但我的问题有点奇怪。

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

最终发现系统date被手动设置为将来的date,这导致dll与未来的date编译。 当date设置恢复正​​常时,MSBuild解释该文件较新,并且不需要重新编译该项目。

我遇到了这个问题,对我来说是一个项目使用了Example.Sensors命名空间中的List,而另一个types实现了ISensorInfo接口。 类Type1SensorInfo,但此类在Example.Sensors.Type1的名称空间中更深一层。 当试图将Type1SensorInfo反序列化到列表中时,抛出exception。 当我使用Example.Sensors.Type1添加到ISensorInfo接口时,没有更多的exception!

 namespace Example { public class ConfigFile { public ConfigFile() { Sensors = new List<ISensorInfo<Int32>>(); } public List<ISensorInfo<Int32>> Sensors { get; set; } } } } **using Example.Sensors.Type1; // Added this to not throw the exception** using System; namespace Example.Sensors { public interface ISensorInfo<T> { String SensorName { get; } } } using Example.Sensors; namespace Example.Sensors.Type1 { public class Type1SensorInfo<T> : ISensorInfo<T> { public Type1SensorInfo() } } 

当我有一些MSBuild进程在后台运行时,发生了相同的事情,这些进程已经崩溃了(它们引用了旧版本的代码)。 我closures了VS并杀死了进程pipe理器中的所有MSBuild进程,然后重新编译。

我有一个testing项目引用其他项目,每个引用不同的版本(在不同的位置)的相同的DLL。 这使编译器感到困惑。

在我的情况下,spotify.exe使用的是我的web api项目想要在开发机器上使用的相同端口。 端口号是4381。

我退出Spotify和一切运作良好:)

也有可能是问题是报告缺less方法的参数或返回types ,并且“缺less”方法本身是好的。

这就是我的情况,这个误导性的信息让我们花费更长的时间来解决这个问题。 事实certificate,参数types的程序集在GAC中具有较旧的版本,但由于版本编号scheme的更改,旧版本实际上具有较高的版本号。 从GAC中删除较旧/较高版本可以解决问题。

在我的情况下,这是一个复制/粘贴问题。 我以某种方式结束了我的映射configuration文件的PRIVATE构造函数:

 using AutoMapper; namespace Your.Namespace { public class MappingProfile : Profile { MappingProfile() { CreateMap<Animal, AnimalDto>(); } } } 

(注意在CTC面前失踪的“公众”)

它编译得非常好,但是当AutoMapper尝试实例化configuration文件时,它不能(当然!)find构造函数!