Why are binding redirects needed at all? Suppose you have application A that references library B, and also library C of version 18.104.22.168. Library B in turn also references library C, but of version 22.214.171.124. Now we have a conflict, because you cannot load different versions of the same assembly at runtime. To resolve this conflict you might use binding redirect, usually to the new version (but can be to the old too). You do that by adding the following to app.config file of application A, under
configuration > runtime > assemblyBinding section (see here for an example of full config file):
You can also specify a range of versions to map:
Now library B, which was compiled with reference to C of version 126.96.36.199 will use C of version 188.8.131.52 at runtime. Of course, you better ensure that library C is backwards compatible or this might lead to unexpected results.
You can redirect any versions of libraries, not just major ones.