Skip to content

[Breaking change]: Change default workload configuration from 'loose manifests' to 'workload sets' mode #45000

@baronfel

Description

@baronfel

Description

In 10.0.100-preview.2, the default workload update mode changed from "manifests" to "workload-set". This change means that users will use a single, coherent set of workload versions that do not individually float - which is easier to ensure consistency of behavior against and easier to manage.

This work was done in dotnet/sdk#45936.

Version

.NET 10 Preview 2

Previous behavior

Previously, workloads operated in 'loose manifest' mode by default - so errant dotnet workload update commands could install new versions that may not work well together. It was hard for users to keep a consistent set of workload versions aligned.

New behavior

Workloads will never float unless the user

  • updates their SDK
  • performs an explicit update command

And when a user does perform an update, all workloads will use known-matching versions from the workload set that is used.

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

Users asked us for more control and predictability in workload management, so we've made a system that allows for pinning and coherent updates.

Recommended action

There shouldn't be any need for any corrective action. If users experience issues, they can convert back from workload set mode to loose manifest mode by running the following command:

dotnet workload config --update-mode manifests

Feature area

SDK

Affected APIs

No response


Associated WorkItem - 402699

Metadata

Metadata

Assignees

Labels

🏁 Release: .NET 10Work items for the .NET 10 release📌 seQUESTeredIdentifies that an issue has been imported into Quest.breaking-changeIndicates a .NET Core breaking changein-prThis issue will be closed (fixed) by an active pull request.

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions