In a previous blog post I explored the solution recommended by Microsoft to resolve MSB3247 warnings, but it proved to be a little bit too tedious.
While converting the Lydia solution to .NET Standard instead of the plain old PCLs, I came again across the annoying compilation warning:
No Way to Resolve Conflict Between “Foo.Bar, Version=1.0.0.0” and “Foo.Bar, Version=1.2.0.0”…
My project was referencing version 1.2.0.0, but somehow one of the other references required version 1.0.0.0. I was clueless.
I considered inspecting manually every referenced assembly with Reflector to identify the culprit, but since I have several dozens of references, I decided that I needed a tool…
AsmSpy to the rescue
Once more, StackOverflow provided a solution
(note that this is the same question as the one I referred to in
my previous post).
Reading again the replies, I discovered AsmSpy, a tool written
by Mike Hadlow which does exactly what I needed: analyze all
assemblies found in a folder (such as bin/Debug
) and dump the
list of all references.
You’ll find AsmSpy on GitHub and some details in Mike’s blog.
Here is a typical dump from AsmSpy bin\Debug
command:
Reference: Foo.Bar
1.0.0.0 by Shared.Blah
1.2.0.0 by Foo.Consumer
So the culprit was Shared.Blah
which was still referencing an old
version of Foo.Bar
. Since I was the author of Shared.Blah
, I
could simply update it.
Otherwise, I would have had to define a
<bindingRedirect>
as explained here.