Wcf 无法加载文件或程序集';EntityFramework,版本=4.1.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089';或者它的一个依赖项

Wcf 无法加载文件或程序集';EntityFramework,版本=4.1.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089';或者它的一个依赖项,wcf,entity-framework,entity-framework-4,entity-framework-4.1,wcf-data-services,Wcf,Entity Framework,Entity Framework 4,Entity Framework 4.1,Wcf Data Services,当程序试图使用使用实体框架的方法时,我在WCF web服务中遇到了这个错误。但是,我们知道服务器安装了entity framework(正确版本),因为它正在托管另一个WCF web服务和一个成功使用它的intranet站点 我尝试将copy local设置为true,但是这只是将实体框架dll编译到使用它的项目的debug/release文件夹中,而不是部署的web服务项目(部署的项目包含引用实体框架的项目) 以前是否有人遇到过此类问题,并且知道使用或不使用copy local的解决方法 检查

当程序试图使用使用实体框架的方法时,我在WCF web服务中遇到了这个错误。但是,我们知道服务器安装了entity framework(正确版本),因为它正在托管另一个WCF web服务和一个成功使用它的intranet站点

我尝试将
copy local
设置为
true
,但是这只是将实体框架dll编译到使用它的项目的debug/release文件夹中,而不是部署的web服务项目(部署的项目包含引用实体框架的项目)


以前是否有人遇到过此类问题,并且知道使用或不使用
copy local
的解决方法

检查相关IIS站点的应用程序池是否设置为用于更正.NET Framework版本。在EF4.1的情况下,应用程序池应该运行在.NETFramework版本4或更高版本上


要标识站点正在使用的.NET版本,请首先查找正在使用的应用程序池(在IIS中,单击站点的基本设置),然后在“应用程序池”节点下标识相应的池。应列出.NET Framework版本。

检查实体框架和服务器之间的bit版本是否兼容。如果服务器是64位的,而您使用的是32位实体框架dll,则可能会出现此错误。然后更改应用程序池设置以启用32位应用程序。

此问题的解决方案是简单地将EntityFramework.dll和.xml文件放置在使用实体框架的项目的bin中,并将其放置在正在部署的服务项目的bin中

在我们知道问题是什么之前,我们检查了大约两次/三次/四次。已验证为.NET 4+Hmm-您不需要以任何方式复制本地,因为此DLL应已在GAC中…EntityFramework.DLL不应在GAC中。只有System.Data.Entity.dll应为GAC'ed。EntityFramework.dll应为bin可部署。他们可能没有将EntityFramework.dll及其应用程序复制到服务器。@Pawel:现在我们正在测试使用EntityFramework的项目上设置
copy local
,并将.dll/.xml文件复制到我们部署的项目的bin中。有比这更好的方法吗?@NealR我认为,如果您在项目中有对EntityFramework.dll的引用,则dll应该与您正在构建的所有其他dll一起自动复制到输出目录。我不知道如何部署应用程序,但基本上你需要确保EF.dll与所有其他dll一起复制。部署应用程序时,你还需要部署EntityFramework.dll。EntityFramework.dll将被部署到bin。在EF6之前,它需要核心EF组件System.Data.Entity.dll,它确实存在于GAC中。对于EF4.x和EF5 EntityFramework.dll,只包含DbContext API、CodeFirst(以及更新版本也包括迁移),其余的在System.Data.Entity.dll(位于计算机上)中。EntityFramework.dll是纯IL/AnyCPU,应可在32位和64位进程中正常工作。