Retarget .NET Framework 4.6.2 to 4.7

Proprietary

Retargets a .NET Framework 4.6.2 project to 4.7. Updates <TargetFrameworkVersion> to v4.7, <TargetFramework> to net47, the app.config <supportedRuntime sku>, and the web.config targetFramework. Includes all earlier steps (4.0 -> 4.6.2). Notable retargeting changes at 4.7: ServicePointManager.SecurityProtocol defaults to SystemDefault, inheriting the OS TLS configuration (Switch.System.Net.DontEnableSystemDefaultTlsVersions=true to revert); SslStream surfaces TLS alerts as IOException/Win32Exception instead of timing out (Switch.System.Net.DontEnableTlsAlerts=true); the WPF Grid star-column allocation algorithm is replaced (Switch.System.Windows.Controls.Grid.StarDefinitionsCanExceedAvailableSpace=true); DataContractJsonSerializer control-character escaping becomes ECMAScript-compatible. See https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/retargeting/4.7.x.

OpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.UpgradeToNetFramework47
mod run . --recipe=OpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.UpgradeToNetFramework47

Install it once, then run it on every repository under the current directory. New to the Moderne CLI? Set it up.

Recipe list

It runs these recipes, in this order.

  1. Retarget .NET Framework 4.6.1 to 4.6.2
  2. Change .NET Framework version
  3. Change .NET target framework
  4. Change web.config target framework
  5. Ensure csproj attestation
  6. Find SslStream usage (TLS alert behavior change)
  7. Find DataContractJsonSerializer usage (control-char escaping change)
  8. Find WPF Grid usage (star-column allocation change)