The first thing the CLR does when binding to a shared named
assembly is to determine which version of the assembly to bind to. The process
starts by reading the version number of the desired assembly that was recorded
in the manifest of the assembly making the reference. Policy is then evaluated
to determine if any of the policy levels contain a redirection to a different
version. The policy levels are evaluated in order starting with application
policy, followed by publisher and finally administrator.