Ответ 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