Qual é o significado / motivo das entradas geradas em web.config> configuration> runtime> assemblyBinding?

Eu notei esta seção em meus arquivos web.config por um tempo e agora estou tentando descobrir o que exatamente é o objetivo:

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

Então, a primeira entrada parece dizer:

System.Web.Helpers é o nome de um assembly dependente com um token de chave pública de31bf3856ad364e35. Redirecionar a versão 1.0.0.0 a 2.0.0.0 para a versão 2.0.0.0.

Meu melhor palpite é que isso significa que qualquer código em execução no contexto do tempo de execução do ASP.NET que depende de um assembly com o nome especificado que também tem uma versão no intervalo especificado é executado como se fosse compilado com a versão especificada com o chave pública especificada.

Isso significa que se eu tenho um projeto da web que depende de uma biblioteca de classes e essa biblioteca de classes tem uma referência a uma versão mais antiga do assembly que possui um bindingRedirect, que o código será executado como se fosse compilado na versão mais recente?

questionAnswers(1)

yourAnswerToTheQuestion