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

Что означают параметры TargetFramework в web.config в ASP.NET MVC?

Один из наших веб-приложений ASP.NET MVC 5 имеет следующие настройки web.config:

<system.web>
  <compilation debug="true" targetFramework="4.6" />
  <httpRuntime targetFramework="4.5" />
  <!--... many other things -->
</system.web>

Непонятно, почему существуют два параметра targetFramework, и, похоже, неправильно компилировать таргетинг 4.6, а затем пытаться запустить под 4.5...

Очевидно, что мне что-то не хватает, но что?

4b9b3361

Ответ 1

Причиной существования targetFramework в web.config является проблема совместимости между изменениями для каждой версии .NET Framework. Разница между targetFramework на compilation и httpRuntime относится к каждой среде разработки и развертывания.

Согласно блог MSDN:

<compilation targetFramework="4.6" />

Выбирает, какая версия сборки ссылок .NET Frameworks используется при выполнении компиляции. (Примечание. Visual Studio требует, чтобы этот элемент присутствует в Web.config, даже если мы его автоматически определяем.)

Этот элемент определяет версию сборки, используемую во время компиляции, для создания зависимостей и связанных сборок из текущего проекта.

<httpRuntime targetFramework="4.5" /> означает, что текущий проект предназначен для использования сборок сборки .NET 4.5 без повторной компиляции существующих сборок проекта на машине развертывания перед загрузкой в ​​память.

Следовательно, мы можем заключить, что номер версии, определенный в элементе targetFramework в httpRuntime, предназначенном для поддержания совместимости между скомпилированным проектом и доступными сборками во время использования, в зависимости от того, какая версия файлов времени выполнения используется на целевой машине.

Таким образом, в вашем случае это неправильное поведение, создатели проекта просто хотят сохранить совместимость во время выполнения с самой низкой версией исполнения, доступной на целевой машине со схожими характеристиками (например, версия 4.5), даже проект, составленный с помощью более новая версия сборков .NET. Разница между версиями 4.5 и 4.6 относительно невелика, таким образом, сохранение версии исполнения до 4.5 все еще приемлемо в этом контексте.

Ссылки по теме:

https://msdn.microsoft.com/en-us/library/dn833123(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx