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=220.127.116.11, 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-18.104.22.168" newVersion="22.214.171.124" /> <codeBase version="126.96.36.199" href="bin\ef44\EntityFramework.dll"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" /> <bindingRedirect oldVersion="188.8.131.52-184.108.40.206" newVersion="220.127.116.11" /> </dependentAssembly> </assemblyBinding> </runtime>
The Dependent Assembly entries inform the Run Time to use version for 18.104.22.168 for any project that require a version between 0.0.0.0 to 22.214.171.124 and use the version 126.96.36.199 for any project that require EF between 188.8.131.52 to 184.108.40.206.
The code base entry under the first dependent assembly advises the run time to locate the 220.127.116.11 version of entity framework (EntityFramework.dll) under bin\ef44 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.