Sha*_*awn 6 .net c# assemblies entity-framework
我有一个使用EF5的旧Silverlight应用程序,无法升级到EF6.我有另一个项目使用EF6与不同的上下文,但我得到:
无法加载文件或程序集'EntityFramework,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(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>
Run Code Online (Sandbox Code Playgroud)
到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 =中性,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实体部分.
我通过添加绑定重定向来修复此问题.在主要web.config我重定向到新版本然后在子web.config重定向到旧版本.