Search code examples
asp.net-mvcjson.netnugetvisual-studio-2013asp.net-mvc-5.1

How can I fix assembly version conflicts with JSON.NET after updating NuGet package references in a new ASP.NET MVC 5 project?


I created a new ASP.NET MVC 5 web project in VS 2013 (Update 1) then updated all NuGet packages. When I build the project, I get the following warning:

warning MSB3243: No way to resolve conflict between "Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" and "Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed".

When I check the web.config, however, I see that a binding redirect is in place:

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

Which is exactly what the warning advises.

How can I fix this warning?


Solution

  • Here the steps I used to fix the warning:

    • Unload project in VS
    • Edit .csproj file
    • Search for all references to Newtonsoft.Json assembly
      • Found two, one to v6 and one to v5
      • Replace the reference to v5 with v6
    • Reload project
    • Build and notice assembly reference failure
    • View References and see that there are now two to Newtonsoft.Json. Remove the one that's failing to resolve.
    • Rebuild - no warnings