Retarget .NET Framework 4.6.2 to 4.7
OpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.UpgradeToNetFramework47ArtifactOpenRewrite.Recipes.CSharp.Migration.DotnetRetargets 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.
Usage
This recipe has no required configuration options. You’ll need the Moderne CLI configured before running the command below.
mod run . --recipe OpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.UpgradeToNetFramework47If the recipe isn’t available locally, install it with:
mod config recipes nuget install OpenRewrite.Recipes.CSharp.Migration.DotnetDefinition
This recipe runs the following recipes in order.
- Retarget .NET Framework 4.6.1 to 4.6.2
OpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.UpgradeToNetFramework462 - Change .NET Framework version
OpenRewrite.CSharp.Recipes.ChangeDotNetFrameworkVersion - Change .NET target framework
OpenRewrite.CSharp.Recipes.ChangeDotNetTargetFramework - Change web.config target framework
OpenRewrite.CSharp.Recipes.ChangeWebConfigTargetFramework - Ensure csproj attestation
OpenRewrite.CSharp.Recipes.EnsureCsprojAttestation - Find
SslStreamusage (TLS alert behavior change)OpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.FindSslStreamTlsAlerts - Find
DataContractJsonSerializerusage (control-char escaping change)OpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.FindDataContractJsonSerializerEscaping - Find WPF
Gridusage (star-column allocation change)OpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.FindWpfGridStarAllocation