¿Cuál es el significado / razón de las entradas generadas en web.config> configuración> tiempo de ejecución> ensamblaje de enlace?

He notado esta sección en mis archivos web.config por un tiempo y ahora estoy tratando de razonar cuál es exactamente el propósito:

  <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>

Entonces, la primera entrada parece decir:

System.Web.Helpers es el nombre de un ensamblado dependiente con un token de clave pública de31bf3856ad364e35. Redirigir la versión 1.0.0.0 a 2.0.0.0 a la versión 2.0.0.0.

Mi mejor conjetura es que significa que cualquier código que se ejecute en el contexto del tiempo de ejecución de ASP.NET que depende de un ensamblaje con el nombre especificado que también tiene una versión en el rango especificado se ejecuta como si se compilara con la versión especificada con el Clave pública especificada.

¿Significa esto que si tengo un proyecto web que depende de una biblioteca de clases y esa biblioteca de clases tiene una referencia a una versión anterior del ensamblaje que tiene un bindingRedirect, que el código se ejecutará como si se compilara contra la versión más reciente?

Respuestas a la pregunta(1)

Su respuesta a la pregunta