global.json 概述global.json overview

本文内容

本文适用于:✓ .NET Core 1.x SDK ✓ .NET Core 2.x SDK

通过 global.json 文件,可定义在运行 .NET Core CLI 命令时使用的 .NET Core SDK 版本 。选择 .NET Core SDK 与指定项目所面向的运行时无关。.NET Core SDK 版本指示使用哪个版本的 .NET Core CLI 工具。通常会使用最新版本的工具,因此不需要 global.json 文件 。

有关指定运行时的详细信息,请参阅目标框架

.NET Core SDK 在当前工作目录(不必与项目目录相同)或其某个父目录中查找 global.json 文件 。

global.json 架构global.json schema

SDKsdk

类型:对象

指定要选择的 .NET Core SDK 的相关信息。

versionversion

类型:String

要使用的 .NET Core SDK 版本。

请注意,此字段:

  • 不具备通配支持,也就是说,必须指定完整版本号。
  • 不支持版本范围。下面的示例展示 global.json 文件的内容 :
  1. {
  2. "sdk": {
  3. "version": "2.2.100"
  4. }
  5. }

global.json 和 .NET Core CLIglobal.json and the .NET Core CLI

最好能知道哪些版本可用,以便在 global.json 文件中设置相应版本 。可在 .NET Core 下载页面中找到支持的可用 SDK 的完整列表。从 .NET Core 2.1 SDK 开始,可运行以下命令来验证计算机上已安装的 SDK 版本:

  1. dotnet --list-sdks

若要在计算机上安装其他 .NET Core SDK 版本,请访问 .NET Core 下载页面。

可执行 dotnet new 命令在当前目录中创建一个新的 global.json 文件,类似于以下示例 :

  1. dotnet new globaljson --sdk-version 2.2.100

匹配规则Matching rules

备注

匹配规则由 apphost 掌管,apphost 是.NET Core 运行时的一部分。如果并行安装了多个运行时,则使用最新版本的主机。

从 .NET Core 2.0 开始,在确定要使用的 SDK 版本时,适用以下规则:

  • 如果未找到 global.json 文件或 global.json 未指定 SDK 版本,则使用最新安装的 SDK 版本 。最新 SDK 版本可能是发布版本或预发布版本 - 以版本号更高的为准。
  • 如果 global.json 指定了 SDK 版本 :
    • 如果计算机上安装了该指定的 SDK 版本,则使用该版本。
    • 如果计算机上未安装指定的 SDK 版本,则使用最新安装的该版本的 SDK 修补程序版本 。最新安装的 SDK 修补程序版本可能是发布版本或预发布版本 - 以版本号更高的为准 。在 .NET Core 2.1 及更高版本中,在选择 SDK 版本时将忽略低于指定修补程序版本的修补程序版本 。
    • 如果找不到指定的 SDK 版本和相应的 SDK 修补程序版本,会引发错误 。SDK 版本目前由以下部分组成:

[.NET Core major version].[.NET Core minor version].[xyz][-optional preview name]

.NET Core SDK 的功能版本由 SDK 版本 2.1.100 及更高版本所采用的版本号的最后一部分 (xyz) 的第一个数字 (x) 表示 。通常,.NET Core SDK 的发布周期比 .NET Core 快。

修补程序版本由 SDK 版本 2.1.100 及更高版本所采用的版本号的最后一部分 (xyz) 的后两位数字 (yz) 表示 。例如,如果将 2.1.300 指定为 SDK 版本,则可选的 SDK 版本号最多到 2.1.399,但 2.1.400 不视为 2.1.300 的一个修补程序版本。

版本号架构过渡期间发布了 .NET Core SDK 版本 2.1.1002.1.201,但未正确使用 xyz 表示法。强烈建议如果在 global.json 文件中指定了这些版本,请确保目标计算机上安装了指定版本 。

如果使用 .NET Core SDK 1.x,在指定了版本但未找到完全匹配项的情况下,则使用最新安装的 SDK 版本。最新 SDK 版本可能是发布版本或预发布版本 - 以版本号更高的为准。

针对生成警告的疑难解答Troubleshooting build warnings

警告

使用的是 .NET Core SDK 的预览版本,可通过当前项目中的 global.json 文件定义 SDK 版本。有关详细信息,请访问 https://go.microsoft.com/fwlink/?linkid=869452

此警告指示正在使用 .NET Core SDK 预览版本编译项目,如匹配规则部分所述。.NET Core SDK 的各种版本均品质优良稳定,在业内口碑良好。但如果不想使用预览版本,可将 global.json 文件添加到项目层次结构中以指定要使用的 SDK 版本,并使用 dotnet —list-sdks 来确认计算机上已安装该版本 。发布新版本时,若要使用新版本,可删除 global.json 文件或将其更新以使用较新版本 。

警告

启动项目 '{startupProject}' 面向框架 '.NETCoreApp' 的版本 '{targetFrameworkVersion}'。此版本的 Entity Framework Core .NET 命令行工具仅支持 2.0 或更高版本。有关使用旧版工具的信息,请参阅 https://go.microsoft.com/fwlink/?linkid=871254

从 .NET Core 2.1 SDK(版本 2.1.300)开始,SDK 中包含 dotnet ef 命令。此警告指示项目面向 EF Core 1.0 或 1.1,后者与 .NET Core 2.1 SDK 及更高版本不兼容。若要编译项目,请在计算机上安装 .NET Core 2.0 SDK(版本 2.1.201)及更早版本,并使用 global.json 文件定义所需 SDK 版本。有关 dotnet ef 命令的详细信息,请参阅 EF Core .NET 命令行工具

请参阅See also