Skip to content

[Breaking change]: rollForwardOnNoCandidateFx and applyPatches no longer supported #56350

Open

Description

@elinor-fung

Description

Support for rollForwardOnNoCandidateFx and applyPatches runtime config options has been removed. The equivalent command line and environment variable options for rollForwardOnNoCandidateFx - --roll-forward-on-no-candidate-fx and DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX - are also removed (applyPatches is runtime config only).

Issue: dotnet/runtime#131611
PR: dotnet/runtime#135233

Version

.NET 12 Preview 1

Previous behavior

rollForwardOnNoCandidateFx controlled roll-forward behaviour, allowing values of 0 (latest patch), 1 (minor version), or 2 (major version), with a default setting of 1 (minor version). applyPatches set whether the latest patch was used with a default setting of using the latest patch (true). When set to false, it would use the closest patch version (equal or lowest higher).

New behavior

rollForwardOnNoCandidateFx and applyPatches settings are no longer recognized and have no effect. The default behaviour with nothing set remains the same (allow roll forward on minor version, use latest patch).

Type of breaking change

  • Binary incompatible: Existing binaries might encounter a breaking change in behavior, such as failure to load or execute, and if so, require recompilation.
  • Source incompatible: When recompiled using the new SDK or component or to target the new runtime, existing source code might require source changes to compile successfully.
  • Behavioral change: Existing binaries might behave differently at run time.

Reason for change

rollForwardOnNoCandidateFx and applyPatches have not been the recommended way to configure framework resolution since .NET 3.0. We kept them for a transition period of backwards compatibility.

Recommended action

rollForwardOnNoCandidateFx values directly map to rollForward:

  • 0 -> LatestPatch
  • 1 -> Minor
  • 2 -> Major

applyPatches has no direct equivalent, but the default (true) remains the default behaviour - using latest patches is recommended. If an exact version is desired, use rollForward value Disable.

Feature area

Deployment

Affected APIs

No response


Associated WorkItem - 638745

Activity

  1. added
    breaking-changeIndicates a .NET Core breaking change
    and removed
    breaking-changeIndicates a .NET Core breaking change
    on Oct 13, 2026
  2. moved this from 🔖 Ready to 🏗 In progress in dotnet/docs October 2026 Sprint projecton Oct 13, 2026
  3. added
    📌 seQUESTeredIdentifies that an issue has been imported into Quest.
    and removed
    🗺️ reQUESTTriggers an issue to be imported into Quest.
    on Oct 14, 2026
  4. removed their assignment
    on Oct 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

📌 seQUESTeredIdentifies that an issue has been imported into Quest.breaking-changeIndicates a .NET Core breaking change

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions