Каково значение / причина созданных записей в 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, которая зависит от сборки с указанным именем, которая также имеет версию в указанном диапазоне, выполняется так, как если бы она была скомпилирована с указанной версией с указанный открытый ключ.

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам