我有一个使用EF5的旧Silverlight应用程序,无法升级到EF6。我有另一个项目使用EF6与不同的上下文,但我得到:
无法加载文件或程序集' EntityFramework,Version = 6.0.0.0, Culture = neutral,PublicKeyToken = b77a5c561934e089'或其中一个 依赖。定位程序集的清单定义没有 匹配程序集引用。 (HRESULT异常:0x80131040)
我假设这是因为EF5已经加载了(它在主项目中,不要问我原因)并且它仍然指向{{1}而不是EF6。我怎样才能让它发挥作用?
我补充说:
dll
到lgos建议后的主web.config,但现在我收到了:
{" [A] System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection无法强制转换为[B] System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection。类型A源自' EntityFramework,Version = 5.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'在上下文中'默认'在位置' C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ project211ef \ _97babe28 \ e7ea3fa9 \ assembly \ dl3 \ 01275099 \ 70646f08_d86ecf01 \ EntityFramework.dll'。类型B源自' EntityFramework,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'在上下文中'默认'在位置' C:\ Projects \ project \ 2.1.1EF2 \ packages \ EntityFramework.6.1.0 \ lib \ net45 \ EntityFramework.dll'。"}
看起来它仍在尝试使用EF5,尽管它访问了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>
中,我重定向到新版本,然后在子web.config
中重定向到旧版本。