.NET Framework 4.7 (.NET 4.7)

Eintrag zuletzt aktualisiert am: 24.05.2022

Wieder In-Place-Update für .NET 4.x
Enthalten im Windows 10 Creators Update (RS2) 6.4.2017

Für ältere OS erst etwas später am 2.5.2017 erschienen:

Wichtige neue Funktionen

  • System.ValueTuple nun enthalten
  • High DPI for Windows Forms (nur in Windows 10)
  • WPF Touch/Stylus support in Windows 10
  • Verbessertes Drucken bei WPF in Windows 10
  • Click-Once-Verbesserungen: Unterstützt für Hardware Security Module (HSM)
  • Azure SQL Database-Connections verwenden immer TCP
  • Verbesserungen für Elliptic Curve Cryptography (ECC)
  • SSL/TLS-Standard in WCF wählbar
  • ASP.NET Cache austauschbar

Installation

Wie schon die Vorgängerversionen .NET 4.5 bis 4.6.2 ist auch die Version 4.7 ein "In-Place-Update", das vorherige Installationen von .NET 4.x überschreibt. Windows 10 bringt .NET 4.7 automatisch im "Creators Update" (alias Redstone 2) mit. Für ältere Betriebssysteme gibt es ein manuell installierbares Update [https://www.microsoft.com/en-US/download/details.aspx?id=55167, wobei Betriebssysteme vor Windows 7 bzw. Windows Server 2008 R2 nicht mehr unterstützt werden. Dass das .NET 4.7 installiert ist, erkennt an den Registry-Einträgen HKEYLOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Version und HKEY_LOCALMACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Release (vgl. [https://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx]). Laut Microsoft ist .NET 4.7 "hochkompatibel" [https://www.microsoft.com/de-de/download/details.aspx?id=55167] zu den Vorgängerversionen. Unter der Überschrift "Retargeting Changes for Migration from .NET Framework 4.6.2 to 4.7" [https://docs.microsoft.com/de-de/dotnet/framework/migration-guide/retargeting/4.6.2-4.7]
gibt es dennoch eine Liste von Änderungen, die verhindern können, dass ältere .NET-Anwendungen unter .NET 4.7 korrekt laufen.

Ein Problem in der Praxis könnte verwenden, dass .NET Framework 4.7 unter Windows 7, Windows 2008 R2 und Windows Server 2012 für WPF-Anwendungen die vorherige Installation der DirectX-DLL D3DCompiler_47.dll
erfordert (vgl. [https://support.microsoft.com/de-de/help/4020302/the-net-framework-4-7-installation-is-blocked-on-windows-7-windows-ser]). Neuere Betriebssystem enthalten diese DLL schon. Microsoft begründet in [https://blogs.msdn.microsoft.com/dotnet/2017/05/02/announcing-the-net-framework-4-7-general-availability/] ausführlich, warum die DLL nicht im .NET Framework 4.7-Setup enthalten ist.

Neuigkeiten in .NET 4.7

Die neue Version bringt neben der im Haupttext erwähnten Klasse System.ValueTuple einige Verbesserungen für ASP.NET, ADO.NET, Windows Communication Foundation (WCF), Windows Presentation Foundation (WPF), und sogar Windows Forms. In ASP.NET lässt sich der eingebaute Hauptspeicher-Cache durch eigene Implementierungen ersetzen. Für Datenbankverbindungen zu SQL Azure verwendet .NET 4.7 jetzt automatisch TCP. In früheren Versionen hat der Datenbankprovider auch Protokolle wie Shared Memory und Named Pipes beim Verbindungsaufbau versucht, die in der Cloud-Variante des Microsoft SQL Servers nicht verfügbar sind. In WCF kann der Entwickler TLS 1.1 und 1.2 statt SSL 3.0 zum Standard für die Verschlüsselung machen. Zudem hat Microsoft die Zuverlässigkeit der Objektserialisierung verbessert.

Für Desktop-Anwendungen mit WPF verwendet Microsoft beim Drucken unter Windows 10 nun das neue Print Document Package API statt des alten XPS Print API. Der seit langen auf dem Abstellgleis stehenden Oberflächentechnik Windows Forms spendiert Microsoft erhebliche Verbesserungen der Darstellung auf Windows 10-High-DPI-Geräten, da auch heute noch viele .NET-Anwendungen Windows Forms einsetzen. Der Entwickler kann in drei neue Ereignisse Control.DpiChangedAfterParent(), Control.DpiChangedBeforeParent(), Form.DpiChanged() auf Änderungen der DPI-Anzahl reagieren und dabei Hilfsroutinen wie Control.LogicalToDeviceUnits(), Control.ScaleBitmapLogicalToDevice() und Control.DeviceDpi() verwenden.

Für das Click-Once-Deployment von .NET-Desktop-Anwendungen kann der Entwickler die Manifeste nun auch mit einem Hardware Security Module (HSM) signieren.