Der Grund für die targetFrameworkExistenz in web.configbesteht darin, Kompatibilitätsprobleme zwischen Änderungen für jede Version von .NET Framework zu vermeiden. Der Unterschied zwischen targetFrameworkon compilationund httpRuntimegehört zu jeder Entwicklungs- und Bereitstellungsumgebung.
Laut MSDN-Blog :
<compilation targetFramework="4.6" />
Wählt aus, welche Version der .NET Framework-Referenzassemblys beim Kompilieren verwendet wird. (Hinweis: Für Visual Studio muss dieses Element in Web.config vorhanden sein, obwohl wir es automatisch ableiten.)
Dieses Element bestimmt die Assemblyversion, die während der Kompilierung zum Erstellen von Abhängigkeiten und zugehörigen Assemblys aus dem aktuellen Projekt verwendet wird.
<httpRuntime targetFramework="4.5" /> bedeutet, dass das aktuelle Projekt zur Verwendung von .NET 4.5-Laufzeitassemblys konzipiert ist, ohne vorhandene Projektassemblys auf dem Bereitstellungscomputer neu zu kompilieren, bevor es in den Speicher geladen wird.
Daher können wir daraus schließen, dass die targetFrameworkin httpRuntimeelement definierte Versionsnummer die Kompatibilität zwischen kompiliertem Projekt und verfügbaren Assemblys bei der Laufzeitnutzung gewährleistet, abhängig davon, welche Version von Laufzeitdateien auf dem Zielcomputer verwendet wird.
In Ihrem Fall ist dies also kein falsches Verhalten. Die Projektersteller möchten lediglich die Laufzeitkompatibilität mit der niedrigsten auf dem Zielcomputer verfügbaren Laufzeitversion mit ähnlichen Merkmalen (dh Version 4.5) beibehalten, selbst wenn das Projekt mit einer neueren Version von kompiliert wurde .NET-Assemblys. Der Unterschied zwischen Version 4.5 und 4.6 ist relativ gering, sodass die Laufzeitversion auf 4.5 in diesem Kontext immer noch akzeptabel bleibt.
Verwandte Referenzen:
https://msdn.microsoft.com/en-us/library/dn833123(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx