相同解决方案中的不同EntityFramework版本
本文关键字:EntityFramework 版本 解决方案 | 更新日期: 2023-09-27 18:05:38
我有一个旧的Silverlight应用程序,使用EF5,不能升级到EF6。我有另一个项目,使用EF6与不同的上下文,但我得到:
无法加载文件或程序集" EntityFramework, Version=6.0.0.0 "Culture=neutral, PublicKeyToken=b77a5c561934e089'或其中一个依赖关系。定位的程序集的清单定义不会匹配程序集引用。(Exception from HRESULT: 0x80131040)
我假设这是因为EF5已经加载(它在主项目中,不要问我为什么),它仍然指向dll
而不是EF6。我怎样才能让它工作?
我补充说:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
<codeBase version="5.0.0.0" href="C:'Projects'project'2.1.1EF2'packages'EntityFramework.5.0.0'lib'net45'EntityFramework.dll"/>
<codeBase version="6.0.0.0" href="C:'Projects'project'2.1.1EF2'packages'EntityFramework.6.1.0'lib'net45'EntityFramework.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
到我的主网页。配置以下lgos的建议,但现在我收到:
{"System.Data.Entity.Internal.ConfigFile。EntityFrameworkSection不能强制转换为[B]System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection。类型A源自"EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"上下文中的"Default",位于位置"C:'Windows' microt.net 'Framework'v4.0.30319'Temporary ASP"。净babe28 97文件' project211ef ' ' e7ea3fa9 '会议' dl3 ' 01275099 ' 01275099 f08_d86ecf01 ' EntityFramework.dll"。类型B源自"EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"上下文中的"Default",位于位置"C:'Projects'project'2.1.1EF2'packages'EntityFramework.6.1.0'lib'net45'EntityFramework.dll"。"}
它看起来仍然试图使用EF5,尽管它访问EF6实体部分。
我通过添加绑定重定向修复了这个问题。在主web.config
中我重定向到新版本,然后在子web.config
中重定向到旧版本。
通过在配置文件中定义程序集绑定,可以在同一个应用程序中使用两个不同版本的程序集。我想这个答案应该对你有所帮助。