Using multiple versions of Entity framework by different projects within the same solution.
I had to develop a pilot project to use Entity framework (EF) 6.0 inside the solution that already has other projects that refers to EF 4.4.
While debugging I received this error:
Could not load file or assembly ‘EntityFramework, Version=22.214.171.124, Culture=neutral, PublicKeyToken=b77a5c561934e089’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
This can be solved by adding following configuration to the web.config file.
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-126.96.36.199" newVersion="188.8.131.52" /> <codeBase version="184.108.40.206" href="binef44EntityFramework.dll"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" /> <bindingRedirect oldVersion="220.127.116.11-18.104.22.168" newVersion="22.214.171.124" /> </dependentAssembly> </assemblyBinding> </runtime>
The Dependent Assembly entries inform the Run Time to use version for 126.96.36.199 for any project that require a version between 0.0.0.0 to 188.8.131.52 and use the version 184.108.40.206 for any project that require EF between 220.127.116.11 to 18.104.22.168.
The code base entry under the first dependent assembly advises the run time to locate the 22.214.171.124 version of entity framework (EntityFramework.dll) under binef44 folder.
The other version of EntityFramework.dll will be located in the usual bin folder.
Note: this article explains how you can find the publicKeyToken for any dll file or assembly.