Retarget .NET Framework 4.0 to 4.5
OpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.UpgradeToNetFramework45ArtifactOpenRewrite.Recipes.CSharp.Migration.DotnetRetargets a .NET Framework 4.0 project to 4.5. Updates <TargetFrameworkVersion> to v4.5 (legacy csproj), <TargetFramework> to net45 (SDK-style csproj), the <supportedRuntime sku> in app.config, and the targetFramework attribute in web.config. Retargeting to 4.5 enables RFC 3987 System.Uri parsing (stricter normalization/validation), C# 5 per-iteration foreach variable scoping, and obsoletes MachineKey.Encode/Decode (use MachineKey.Protect/Unprotect) and the System.Workflow.* (WF 3.x) types (use System.Activities.*). See https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/retargeting/4.5.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.UpgradeToNetFramework45If 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.
- 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 obsolete
MachineKey.Encode/DecodeOpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.FindObsoleteMachineKeyEncryption - Find obsolete
System.Workflow.*(WF 3.x) usageOpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.FindObsoleteWorkflowTypes - Find obsolete 5-argument
EncoderParameterconstructorOpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.FindObsoleteEncoderParameterCtor - Find
System.Uriconstruction (RFC 3986/3987 parsing change)OpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.FindUriParsingChange - Find
List<T>.ForEachmodification-during-enumeration changeOpenRewrite.Recipes.CSharp.Migration.Dotnet.NetFramework.FindListForEachDuringMutation