无法加载文件或程序集EntityFramework

Spl*_*dor 17 c# asp.net-mvc entity-framework

我已经部署了一个ASP.NET MVC 4应用程序并且主页加载正常,但是当我尝试访问任何其他页面(都尝试连接到SQL数据库)时,我收到此错误:

无法加载文件或程序集'EntityFramework,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(来自HRESULT的异常:0x80131040)描述:在执行当前Web请求期间发生了未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.IO.FileLoadException:无法加载文件或程序集'EntityFramework,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)

我检查了Web.config文件,它有以下相关条目:

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
...
<compilation targetFramework="4.0" />
Run Code Online (Sandbox Code Playgroud)

我已经阅读了我可以通过Google找到的所有内容,但到目前为止还没有任何帮助.我知道不同的是,我构建应用程序的EF版本与部署机器上的版本不同,但我可以在如何纠正这种差异方面使用一些方向.

Paw*_*wel 15

您似乎在.NET Framework 4上使用EF5(因此在您的配置文件中使用版本4.4.0.0),但您获得的异常是谈论EF 4.1(版本是4.1.0.0).看起来你正在使用的一些程序集仍尝试使用4.1而另一个EF5(4.4.0.0).确保在任何地方引用相同的组件.因此,您需要更新所有引用以使用EF5并重建项目.顺便说一句.配置文件中的条目只是将.NET Framework指向一个知道如何读取配置部分的类型,因此仅更新它以使应用程序对EF5起作用是不够的


Dav*_*ras 5

您可以尝试以下操作:

在解决方案资源管理器中,转到参考节点并找到EntityFramework参考节点,然后在其属性中将其设置为False属性Specific Version

然后从中删除版本标识符web.config,替换为:

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
Run Code Online (Sandbox Code Playgroud)

简单地:

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework" requirePermission="false" />
Run Code Online (Sandbox Code Playgroud)

这样,应该解决与版本不匹配有关的错误。

仍然像其他评论中所说的那样,如果您从NuGet获取所有引用并检入源代码控制系统中的所有内容,则是很好的。

这种方法对我来说多次组装都是有效的,以后再升级到新版本的EF时,不需要对web.config进行任何更改。


小智 5

在体验更新所有引用的乐趣之前,请尝试重新启动 Visual Studio。这为我解决了这个问题。