Retarget .NET Framework 4.5.2 to 4.6

Proprietary

Retargets 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.

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

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.5.1 to 4.5.2
  2. Change .NET Framework version
  3. Change .NET target framework
  4. Change web.config target framework
  5. Ensure csproj attestation
  6. Find ServicePointManager TLS configuration
  7. Find XmlWriter invalid-surrogate-pair change
  8. Find CurrentCulture/CurrentUICulture async flow change
  9. Find Icon.ToBitmap usage (PNG-frame behavior change)