This is a very common mishap. Nuget packages are the most likely troublemakers, log4net and NewtonSoft.Json are on the top of that list. Modern versions of MSBuild know how to resolve that. Something you can see when you use Tools > Options > Projects and Solutions > Build and Run > MSBuild project build output verbosity = Detailed.
I'll show what it looks like on VS2015, reproducing your exact problem scenario. It starts to get interesting at the ResolveAssemblyReference task:
1>Task "ResolveAssemblyReference"
...
1> Primary reference "B, Version=1.1.32.0, Culture=neutral, PublicKeyToken=null".
1> Resolved file path is "c:\projects2\BCopy\bin\Debug\B.dll".
1> Reference found at search path location "{HintPathFromItem}".
1> Found related file "c:\projects2\BCopy\bin\Debug\B.pdb".
1> The ImageRuntimeVersion for this reference is "v4.0.30319".
1> Primary reference "A, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null".
1> Resolved file path is "c:\projects2\A\bin\Debug\A.dll".
1> Reference found at search path location "{HintPathFromItem}".
1> Found related file "c:\projects2\A\bin\Debug\A.pdb".
1> The ImageRuntimeVersion for this reference is "v4.0.30319".
And a bunch more for .NET Framework assemblies. Towards the end of the task it notices that A has a dependency on a new version of B:
1> Dependency "B, Version=1.1.39.0, Culture=neutral, PublicKeyToken=null".
1> Resolved file path is "c:\projects2\B\bin\Debug\B.dll".
1> Reference found at search path location "c:\projects2\B\bin\Debug".
1> For SearchPath "c:\projects2\B\bin\Debug".
1> Considered "c:\projects2\B\bin\Debug\B.winmd", but it didn't exist.
1> Required by "A, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL".
1> Found related file "c:\projects2\B\bin\Debug\B.pdb".
1> This reference is not "CopyLocal" because it conflicted with another reference with the same name and lost the conflict.
1> The ImageRuntimeVersion for this reference is "v4.0.30319".
1> There was a conflict between "B, Version=1.1.32.0, Culture=neutral, PublicKeyToken=null" and "B, Version=1.1.39.0, Culture=neutral, PublicKeyToken=null".
1> "B, Version=1.1.32.0, Culture=neutral, PublicKeyToken=null" was chosen because it was primary and "B, Version=1.1.39.0, Culture=neutral, PublicKeyToken=null" was not.
1> References which depend on "B, Version=1.1.32.0, Culture=neutral, PublicKeyToken=null" [c:\projects2\BCopy\bin\Debug\B.dll].
1> c:\projects2\BCopy\bin\Debug\B.dll
1> Project file item includes which caused reference "c:\projects2\BCopy\bin\Debug\B.dll".
1> B, Version=1.1.39.0, Culture=neutral, processorArchitecture=MSIL
1> References which depend on "B, Version=1.1.39.0, Culture=neutral, PublicKeyToken=null" [c:\projects2\B\bin\Debug\B.dll].
1> c:\projects2\A\bin\Debug\A.dll
1> Project file item includes which caused reference "c:\projects2\A\bin\Debug\A.dll".
1> A, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL
1>Done executing task "ResolveAssemblyReference".
Note how it tries to decide whether to use version 1.1.32.0 or 1.1.39.0. It likes the old version better since it is the "primary reference". In other words, your project references it and the 1.1.39.0 is less important because it is an indirect reference from A.
The project builds clean, no complaint whatsoever. Why this doesn't work for you is entirely unclear, pretty important to name your VS version. I can't remember exactly when this feature was added, it was a while ago. Somewhere around VS2010 or VS2012.
So try to get ahead by comparing the build trace you get on your machine with what I posted. If it is just a plain old VS version problem then you'll be of course be much ahead by updating it.