Причина targetFramework
існування в web.config
тому, щоб уникнути проблем сумісності між порушеннями змін для кожної версії .NET Framework. Різниця між targetFramework
на compilation
і httpRuntime
належить кожному середовища розробки і розгортання.
Згідно з блогом MSDN :
<compilation targetFramework="4.6" />
Вибирає, яка версія посилальних збірок .NET Framework використовується під час компіляції. (Примітка: 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