In summary if you get the "Could not load file or assembly error", this means that either your projects or their references were built with a reference to a specific version of an assembly which is missing from your bin directory or GAC.
The located assembly's manifest definition does not match the assembly reference. As stated, this is caused when the version of a . dll file in the /bin directory (assembly reference), is not the same as specified in the web. config (assembly manifest).
The Newtonsoft. JSON namespace provides classes that are used to implement the core services of the framework. It provides methods for converting between . NET types and JSON types.
To solve this, I ensured all my projects used the same version by running the following command and checking the results:
update-package Newtonsoft.Json -reinstall
And, lastly I removed the following from my web.config:
<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>
If you want to ensure all your Newtonsoft.Json packages are the same version, you can specify the version like so:
update-package Newtonsoft.Json -version 6.0.0 -reinstall
I am using Newtonsoft.Json v6.0.3, but this is what I had to do in my Web.config file:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
Note that even though I am using 6.0.3, I had to put in newVersion="6.0.0.0"
In my packages.config file I have:
<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
I tried the following after having already ensured that my computer had the same version in all locations and that my projects were all pointing to the same reference path. I had also made sure that the binding of the old version was their and bound to the current version of dll that I had.
I work in an environment with a strict framework and the framework team often upset the versioning with the different dll's.
How I fixed this issue was to run the package manager console within visual studio (2013). From there I ran the following command:
update-package Newtonsoft.Json -reinstall
followed by
update-package Newtonsoft.Json
This went through and updated all of my config files and relevant project files. Forcing them all to the same version of the dll. Which was initially version 4.5 before updating again to get the latest.
I had the same error message and, like you mentioned, it was due to different versions of the Newtonsoft.Json.dll being referenced.
Some projects in my MVC solution used the NuGet package for version 4 of that dll.
I then added a NuGet package (for Salesforce in my case) that brought Newtonsoft.Json version 6 with it as a dependency to one of the projects. That was what triggered the problem for me.
To clean things up, I used the Updates section in the NuGet Package Manager for the solution (off Tools menu or solution right-click) to update the Json.Net package throughout the solution so it was the same version for all projects.
After that I just checked the App Config files to ensure any binding redirect lines were going to my chosen version as below.
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
Ok, I think I got it to work now. I deleted every Newtonsoft.Json.dll on my machine that wasn't the latest version that I could find, made sure I had the latest version in NuGet, and build it and made sure that was the latest one in the bin folder, and I left the changes in the web.config and the .csproj. Now I'm on to another error, so it must be working..
By commenting it out this part on my web.config solved my problem:
<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>
But of course you need to make sure you have updated or you have the right version by doing this in your package manager console:
update-package Newtonsoft.Json -reinstall
After hours struggling with this... I did the following:
web.config
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
</dependentAssembly>
<!-- other assemblies... -->
</assemblyBinding>
</runtime>
The key to enter the correct newVersion and oldVersion number is open the project's References
find the package go to its properties or click alt + enter
You'll find a section Version
which in my case was 12.0.0.0
while its actually 12.0.3
when exploring with Manage NuGet.
So you need to pick the package's version from the reference properties (in my case
12.0.0.0
)
Finally, clean
and rebuild
the project (you might want to delete the bin
and obj
folders before).
You might face other packages dependencies issues, i did that for all and they worked.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With