I am trying to unit test a project that has dependencies on Json.Net and SignalR. For some reason, I cannot run many of these unit tests. Since I upgraded Json.Net to version 9.0.0, I get an exception that says:
An exception like "System.IO.FileLoadException" occurred in mscorlib.dll but was not handled in the user code
Additional information: Failed to load the file or assembly "Newtonsoft.Json, Version = 6.0.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed" or one of its dependencies. The located assembly manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
I can reproduce this behavior with a clean project. Here are the steps to play:
- Use Visual Studio 2015 Update 3
- Go to File-> New-> Project
- Choose Templates-> Visual C # β Test β unit test Project
- Right-click the project, select properties and change the structure to .NET Framework 4.6.1
- create a new file in the root of the project named project.json
- Set the contents of project.json as follows:
.
{ "dependencies": { "Microsoft.AspNet.SignalR.Client": "2.2.1", "Microsoft.AspNet.SignalR.Core": "2.2.1", "Newtonsoft.Json": "9.0.1" }, "frameworks": { "net451": {}, "net461": {} }, "runtimes": { "win": {}, "win-x86": {}, "win-x64": {} } }
- Change UnitTest1.cs (provided via scaffolding) to the following:
.
using Microsoft.VisualStudio.TestTools.UnitTesting; namespace UnitTestProject1 { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { var conman = Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager; } } }
- Close and reopen visual studio (this is necessary to load dependencies using project.json)
- Restore project
- select a testing method and press CTRL + R + T
An error should appear.
I have no idea how to fix this. I tried playing with bindingRedirects and nothing made the error go away. Reinstalling the package makes no sense, because I can reproduce this with a clean project.
My fear is that I will have to revert to an earlier version of Json.Net
source share