Подтвердить что ты не робот

В чем смысл/причина сгенерированных записей в web.config> configuration> runtime> assemblyBinding?

Я заметил этот раздел в моих файлах web.config некоторое время, и теперь я пытаюсь понять, в чем именно заключается цель:

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

Итак, первая запись, кажется, говорит:

System.Web.Helpers - это имя зависимой сборки с общедоступной ключевой токен 31bf3856ad364e35. Перенаправление версии 1.0.0.0 через 2.0.0.0 до версии 2.0.0.0.

Мое лучшее предположение заключается в том, что это означает, что любой код, выполняемый в контексте времени выполнения ASP.NET, который зависит от сборки с указанным именем, которая также имеет версию в указанном диапазоне, выполняется, как если бы она была скомпилирована с указанным версии с указанным открытым ключом.

Означает ли это, если у меня есть веб-проект, который зависит от библиотеки классов, и эта библиотека классов ссылается на более старую версию сборки, которая имеет привязку к RRirectirect, что код будет выполняться, как если бы он был скомпилирован против более новой версии версия?

4b9b3361

Ответ 1

Означает ли это, если у меня есть веб-проект, который зависит от библиотеки классов и эта библиотека классов ссылается на более раннюю версию сборка, которая имеет bindingRedirect, что код будет выполняться как если он был скомпилирован против более новой версии?

У вас все правильно (я бы сказал: "... код будет выполняться как если это ссылка на более новую версию "), см. http://msdn.microsoft.com/en-us/library/7wd6ex19%28v=vs.110%29.aspx

"Когда вы создаете приложение .NET Framework против определенного версия сильной именной сборки, приложение использует эту версию сборки во время выполнения. Однако иногда вам может понадобиться приложение для работы с более новой версией сборки".