.NET SDK 工作负荷集

工作负荷集功能提供表示一组 .NET SDK 工作负荷的版本号。 installupdaterestore 命令在工作负荷集更新模式下使用此编号来提供以下优势:

  • 你可控制已安装工作负荷版本的更改节奏。 不使用工作负荷集的替代操作模式称为松散清单更新模式。 在此模式下,随着将各个工作负荷的新版本发布到任何配置的 NuGet 源上,系统会自动更新工作负荷。 在 workload-set 更新模式下,工作负荷将保留在特定的工作负荷集版本,直到你显式更改该版本。
  • 你可以安装并更新同时交付的工作负荷版本的组合,并且已知你可以协同工作。
  • 你可以确保团队中的每个人都始终利用相同的工作负荷版本工作。
  • 你务必使用回滚文件来指定要打开的工作负荷版本。

下面是工作负荷集的一些使用方式:

  • install 命令“固定”到特定的工作负荷集版本。
  • 将安装的工作负荷更新到最新的可用工作负荷集版本。
  • 更新到指定的工作负荷集版本。
  • 在 global.json 中指定工作负荷集版本。
  • 检查当前的更新模式和工作负荷集版本。

你仍然可以选择安装、更新或还原到每个单个工作负荷的最新版本,从而忽略工作负荷集。

先决条件

  • .NET 8.0.400 SDK 或更高版本。

    在 8.0.400 SDK 中,dotnet workload 命令仅在显式选择时才处于工作负荷集更新模式。

“固定”install 命令

采用 --version 选项的 dotnet workload install 命令时,将使用指定的工作负荷集版本以 workload-set 更新模式“固定”install 命令。 该命令不再根据松散清单自动安装最新工作负荷。

若要“固定”命令 install

  1. 选择工作负荷集版本。 例如,9.0.100-preview.7.24414.1

  2. 选择工作负荷。 例如,aspire

  3. dotnet workload install aspire --version 9.0.100-preview.7.24414.1
    

    当此命令运行时:

    • 它会选择 workload-set 更新模式(如果尚未选择)。
    • 它会获取具有指定版本的工作负荷集。
    • 从工作负荷集中,它可获取指定工作负荷的清单版本。
    • 它会安装工作负荷的清单版本。
    • 完成后,它会保持 workload-set 更新模式。
  4. 选择要安装的另一个工作负荷,例如 maui-ios

  5. dotnet workload install maui-ios
    

    此命令使用工作负荷集版本 9.0.100-preview.7.24414.1 中的工作负荷版本安装 maui-ios 工作负荷,因为前面的 install 命令示例固定了该工作负荷集。

--versioninstallupdate 结合使用时,可将 install 固定到指定版本,但仅将 update 配置为 workload-set 更新模式,而不是针对特定的工作负荷集版本。 如果随后在没有使用 --version 选项的情况下运行 dotnet workload update,则 update 命令:

  • 将工作负荷更新到最新的可用工作负荷集版本。
  • “取消固定”install 命令。
  • 保持 workload-set 更新模式。

使用最新的工作负荷集进行更新

若要将安装的工作负荷更新到所配置源上可用的最新工作负荷集版本,请运行以下命令:

  1. dotnet workload config --update-mode workload-set
    

    仅当你当前处于清单更新模式时,才需要上述命令。 如果不知道,请检查当前更新模式

  2. dotnet workload update
    

    workload-set 更新模式下,除非已在 global.json 中指定了工作负荷集版本,否则此命令会将工作负荷更新到最新的工作负荷集版本。

更新到工作负荷集版本

若要指定要在 global.json 中未指定时要更新到的工作负荷集版本,请使用 update 命令的 --version 选项:

  1. 选择工作负荷集版本。 例如,8.0.400

  2. dotnet workload update --version 8.0.400
    

如果未选择更新模式,则将选择 workload-set 更新模式。

将 global.json 用于工作负荷集版本

若要使用 global.json 文件为存储库指定工作负荷集版本,请执行以下操作:

  1. 选择工作负荷集版本。 例如,9.0.100-preview.7.24414.1

  2. 创建一个类似于以下示例的 global.json 文件:

    {
      "sdk": {
        "workloadVersion": "9.0.100-preview.7.24414.1"
      }
    }
    

在同一存储库中的当前目录和 workload-set 更新模式下的 CLI 中,installupdaterestore 命令会为指定的工作负荷集版本安装工作负荷。 如果你没有 global.json 文件,并且处于 workload-set 更新模式,restore 命令将安装你从清单更新模式切换到 workload-set 更新模式时建立的工作负荷集版本。

如果 global.json 文件中有工作负荷集版本,则即使尚未运行 workload-set 命令或使用了 config,工作负荷命令也会处于 --version 模式。 global.json 文件将覆盖这些。 若要在该种情况下使用 --version 选项,请在包含 global.json 文件的路径外部运行命令。

如果你未在 global.json 中指定工作负荷集版本,则可以将 --version 选项与 restore 命令结合使用。 在这种情况下,在将工作负荷还原到指定的工作负荷集版本之前,restore 命令会选择 workload-set 更新模式。

在清单更新模式下,restore 会将工作负荷安装或更新到每个单个工作负荷的最新版本。

检查更新模式和版本

若要查看当前更新模式,请在不使用参数的情况下利用 --update-mode 选项运行 config 命令。 模式为工作负荷集or清单。 例如:

dotnet workload config --update-mode
workload-set

若要查看当前的工作负荷集版本,请运行 dotnet workload --version。 如果安装了工作负荷集,则会看到版本(如 9.0.100-preview.7.24414.1 或 8.0.402)。 例如:

dotnet workload --version
9.0.100-preview.7.24414.1

在清单模式下,或者在切换到 workload-set 更新模式后尚未建立工作负荷集版本,则会看到 <feature band>-manifests.<hash> 形式的版本。 例如:

dotnet workload --version
9.0.100-manifests.cf958b56

选择工作负荷集版本

在包 ID Microsoft.NET.Workloads.<feature band> 下,工作负荷集随 .NET SDK 的每个版本一起发布到 nuget.org。 对于 SDK 的稳定版本,我们计划始终具有匹配的工作负荷集版本。 因此,8.0.400 SDK 可以安装 8.0.400 工作负荷集,401 可以安装 401 集。 一般情况下,我们建议为稳定 SDK 安装匹配的工作负荷集。

对于预览版本,请在包的自述文件选项卡中找到对应的工作负荷集版本。例如,请参阅 .NET 9 预览版 7 包的自述文件选项卡

这是预览版。 将来,我们将为你提供列出工作负荷集版本的各种方法,以查看可用的版本及其包含的内容。

忽略工作负荷集

若要安装或更新到所配置源上可用的每个单个工作负荷的最新版本,请通过运行工作负荷 config 命令选择和使用清单更新模式:

dotnet workload config --update-mode manifests

在 .NET 8.0.4xx SDK 中,清单模式是默认值。 仅当之前显式选择了 workload-set 更新模式时,才需要显式选择清单模式。