Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 同一解决方案中的不同EntityFramework版本_C#_.net_Entity Framework_Assemblies - Fatal编程技术网

C# 同一解决方案中的不同EntityFramework版本

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。我怎样才能让它工作 我补

我有一个使用EF5的旧Silverlight应用程序,无法升级到EF6。我有另一个使用EF6的项目,但我得到:

无法加载文件或程序集的EntityFramework,版本=6.0.0.0, 区域性=中性,PublicKeyToken=b77a5c561934e089'或其 依赖关系。定位程序集的清单定义不正确 匹配程序集引用。(来自HRESULT的异常:0x8013100)

我假设这是因为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的建议访问我的主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。