I was getting this error after upgrading from 2.3 to 2.4 and I am posting this for future reference as to the various causes and fixes. There are a few posts already on this site but the info is buried amongst numerous posts. So hopefully this is a definitive list..

1) If you installed MVC4, System.Web.WebPages v2.0, or Visual Studio 2011 Beta uninstall them completely. Visual studio 2010 was automatically upgrading my assembly references to use the latest installed versions which caused the above error and some other odd ones.

2) If you are using Nuget to setup references then check the web.config for the runtime/assemblyBinding section to see if a nuget package has messed around with that section and is possibly fubaring your desired references.

3) Right click the solution and choose Manage Nuget packages. This shows you all installed packages from all projects and allows you to quickly change which project uses which version and it also lets you visualize which references are installed multiple times but with different version numbers.

4) The assembly \packages\Facebook\Facebook.dll uses Newtonsoft.Json.dll version 4.0 and I had added a newer version (4.5) to nop.web which also causes the above exception. Since there is no source code for facebook.dll nor any indication of where/who it came from I had to add the following to my web.config under runtime/assemblyBinding so that Facebook.dll would be forced to use the 4.5 version during runtime:

      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
      </dependentAssembly>

5) In 2.4 you'll probably be best off with this in your web.config to ensure all assemblies use the 4.2 EntityFramework assembly. You should really spend the time to update the references in each project though. If you follow step 3) then this is fairly painless.

      <dependentAssembly>
        <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
      </dependentAssembly>

6) My biggest issue was #4 and I had to write my own .Net dependency walker to track it down but it was worth the 2 hour investment and saved me thousands of clicks and going blind looking at assemblies in reflector.net one by one.