Retarget .NET Framework 4.5.2 to 4.6
OpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.UpgradeToNetFramework46ArtifactOpenRewrite.Recipes.CSharp.Migration.DotnetRetargets a .NET Framework 4.5.2 project to 4.6. Updates <TargetFrameworkVersion> to v4.6, <TargetFramework> to net46, the app.config <supportedRuntime sku>, and the web.config targetFramework. Includes all earlier steps (4.0 -> 4.5.2). 4.6 is where <AppContextSwitchOverrides> is introduced. Notable retargeting changes: TLS now restricts to 1.0/1.1/1.2 and drops SSL3/RC4 (opt out via Switch.System.Net.DontEnableSchUseStrongCrypto=true); certificate EKU validation is added; CurrentCulture/CurrentUICulture flow across async tasks (Switch.System.Globalization.NoAsyncCurrentCulture=true); the 64-bit RyuJIT replaces the legacy JIT (<useLegacyJit enabled="1"/> to revert); XmlWriter throws on invalid surrogate pairs. The accompanying Find recipe flags ServicePointManager/TLS code for review. See https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/retargeting/4.6.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.UpgradeToNetFramework46If 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.5.1 to 4.5.2
OpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.UpgradeToNetFramework452 - 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
ServicePointManagerTLS configurationOpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.FindServicePointManagerSecurityProtocol - Find
XmlWriterinvalid-surrogate-pair changeOpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.FindXmlWriterInvalidSurrogate - Find
CurrentCulture/CurrentUICultureasync flow changeOpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.FindAsyncCurrentCultureFlow - Find
Icon.ToBitmapusage (PNG-frame behavior change)OpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.FindIconToBitmapPngFrames