C# 同一解决方案中的不同EntityFramework版本
我有一个使用EF5的旧Silverlight应用程序,无法升级到EF6。我有另一个使用EF6的项目,但我得到: 无法加载文件或程序集的EntityFramework,版本=6.0.0.0, 区域性=中性,PublicKeyToken=b77a5c561934e089'或其 依赖关系。定位程序集的清单定义不正确 匹配程序集引用。(来自HRESULT的异常:0x8013100) 我假设这是因为EF5已经加载(它在主项目中,不要问我为什么),并且它仍然指向C# 同一解决方案中的不同EntityFramework版本,c#,.net,entity-framework,assemblies,C#,.net,Entity Framework,Assemblies,我有一个使用EF5的旧Silverlight应用程序,无法升级到EF6。我有另一个使用EF6的项目,但我得到: 无法加载文件或程序集的EntityFramework,版本=6.0.0.0, 区域性=中性,PublicKeyToken=b77a5c561934e089'或其 依赖关系。定位程序集的清单定义不正确 匹配程序集引用。(来自HRESULT的异常:0x8013100) 我假设这是因为EF5已经加载(它在主项目中,不要问我为什么),并且它仍然指向dll,而不是EF6。我怎样才能让它工作 我补
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的建议访问我的主web.config,但现在我收到:
{“[A]System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection无法强制转换为[B]System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection。类型A源自“EntityFramework,版本=5.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089”上下文中的“默认值”,位于位置“C:\Windows\Microsoft.NET\Framework\v4.0.30319\临时ASP.NET文件\project211ef\97babe28\e7ea3fa9\assembly\dl3\01275099\706486F08\U DECF01\EntityFramework.dll”。类型B源于“C:\Projects\project\2.1.1EF2\packages\EntityFramework.6.1.0\lib\net45\EntityFramework.dll”位置的上下文“Default”中的“EntityFramework,Version=6.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”
看起来它仍然在尝试使用EF5,尽管它正在访问EF6实体部分
我通过添加绑定重定向修复了这个问题。在主
web.config
中,我重定向到新版本,然后在子web.config
中重定向到旧版本。通过在配置文件中定义程序集绑定,可以在同一应用程序中使用两个不同版本的程序集。我想这会对你有所帮助。你能不能再详细阐述一下你文章的最后一句话?我解决了DLL的问题,但我仍然坚持[A]不能被转换为[B]错误。@JakeWood这一切都会失去内存,但是iirc我用新版本重定向了我的主web.config,然后在silverlight项目所在的文件夹中,我用另一个重定向了另一个web.config。