C# 获取System.MissingMethodException,用于对泛型列表进行排序的扩展方法 System.MissingMethodException:未找到方法: 'System.Collections.Generic.List'1 BusinessEntities.Helper.Sort(System.Func`2)'

C# 获取System.MissingMethodException,用于对泛型列表进行排序的扩展方法 System.MissingMethodException:未找到方法: 'System.Collections.Generic.List'1 BusinessEntities.Helper.Sort(System.Func`2)',c#,asp.net,.net,generics,web-deployment-project,C#,Asp.net,.net,Generics,Web Deployment Project,我在网站的一个页面上发现此错误。网站构建是使用visual studio web部署项目准备的。当我在IIS中部署构建并运行该页面时,我得到了上述错误。当网站在VisualStudio中以调试模式运行时,它会正常执行 背景: 我有一个asp.NET4.0网站,它引用了BusinessEntities项目,这是一个.NET3.5类库项目。该项目包含一个公共静态帮助器类,该类的扩展方法Sort用于对对象的通用列表进行排序。助手类位于BusinessEntities命名空间中 如果我将Business

我在网站的一个页面上发现此错误。网站构建是使用visual studio web部署项目准备的。当我在IIS中部署构建并运行该页面时,我得到了上述错误。当网站在VisualStudio中以调试模式运行时,它会正常执行

背景: 我有一个asp.NET4.0网站,它引用了BusinessEntities项目,这是一个.NET3.5类库项目。该项目包含一个公共静态帮助器类,该类的扩展方法Sort用于对对象的通用列表进行排序。助手类位于BusinessEntities命名空间中

如果我将BusinessEntites项目的版本更改为.Net 4.0,然后构建网站,则不会出现此错误。由于某些操作限制,无法将项目升级到4.0


奇怪的是,通用扩展方法以及网站和项目结构自一年多以来一直没有出现任何问题。我无法理解为什么会突然出现此错误。

a
MissingMethodException
表示您正在加载的dll版本与您在构建过程中引用的版本不同,并且您正在加载的实际dll(在运行时)没有编译器找到的方法(在编译时)


检查您的项目中是否引用了相同dll的不同版本。可能是在调试模式下运行时,其他一些代码会首先加载正确的dll,但在版本中运行时,由于引用不匹配,会加载不同的dll,或者可能在某个地方有多个版本。

我遇到了相同的问题,我已使用以下步骤修复了此问题。。。 1.清洁你的解决方案 2.手动清理bin文件夹 3.删除临时文件夹
4.重建解决方案。

该网站有一个对BusinessEntities项目的项目引用。我检查了BusinessEntities.dll的日期时间戳,它与项目的当前时间戳匹配。我甚至尝试将最新的dll从项目版本替换为网站版本。还是不行。生成中没有具有相同名称的其他DLL。如果我在页面上注释了sort方法,它就可以正常工作。这意味着BusinessEntites项目中的其他类可以在构建中访问。另外,我想知道为什么当我将项目目标框架更改为4.0时,这个问题没有出现。您是否尝试删除所有引用、DLL和重新编译?DLL可能在GAC中吗?是的,您尝试过删除、清理解决方案和重建。我还没有将项目DLL添加到GAC。但是在GAC登记只是为了确定它不在那里。我甚至尝试删除临时asp.net文件。我对解决方案进行了完整重建,错误消失了。
System.MissingMethodException: Method not found: 
  'System.Collections.Generic.List`1<!!0> 
  BusinessEntities.Helper.Sort(System.Func`2<!!0,!!0>)'