Обзор global.jsonglobal.json overview

Эта статья применима к: ✓ пакету SDK для .NET Core 1.x пакету SDK для .NET Core 2.xThis topic applies to: ✓ .NET Core SDK 1.x .NET Core SDK 2.x

С помощью файла global.json можно определить, какая версия пакета SDK для .NET Core используется при выполнении команд .NET Core CLI.The global.json file allows you to define which .NET Core SDK version is used when you run .NET Core CLI commands. Выбор пакета SDK для .NET Core не зависит от указания целевой среды выполнения проекта.Selecting the .NET Core SDK is independent from specifying the runtime your project targets. Версия пакета SDK для .NET Core указывает, какие версии средств .NET Core CLI используются.The .NET Core SDK version indicates which versions of the .NET Core CLI tools are used. Как правило, необходимо использовать последнюю версию средств, поэтому вам нужен файл global.json.In general, you want to use the latest version of the tools, so no global.json file is needed.

Дополнительные сведения о том, как вместо этого указать среду выполнения, см. в разделе Целевые платформы.For more information about specifying the runtime instead, see Target frameworks.

Пакет SDK для .NET Core ищет файл global.json в текущем рабочем каталоге (который не обязательно совпадает с каталогом проекта) или в одном из его родительских каталогов..NET Core SDK looks for a global.json file in the current working directory (which isn't necessarily the same as the project directory) or one of its parent directories.

Схема файла global.jsonglobal.json schema

sdksdk

Тип: ObjectType: Object

Указывает сведения о пакете SDK для .NET Core для выбора.Specifies information about the .NET Core SDK to select.

versionversion

Тип: StringType: String

Версия пакета SDK для .NET Core для использования.The version of the .NET Core SDK to use.

Обратите внимание, что это поле:Note that this field:

  • Не поддерживает глобализацию, то есть необходимо указать полный номер версии.Doesn't have globbing support, that is, the full version number has to be specified.
  • Не поддерживает диапазон версий.Doesn't support version ranges.

В следующем примере показано содержимое файла global.json.The following example shows the contents of a global.json file:

{
  "sdk": {
    "version": "2.2.100"
  }
}

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

Полезно знать, какие версии доступны, чтобы задать нужную в файле global.json.It's helpful to know which versions are available in order to set one in the global.json file. Полный список поддерживаемых доступных пакетов SDK вы найдете на сайте Загрузки .NET.You can find the full list of supported available SDKs at the .NET Downloads site. Начиная с пакета SDK для .NET Core 2.1 можно выполнить следующую команду, чтобы проверить, какие версии пакета SDK уже установлены на вашем компьютере:Starting with .NET Core 2.1 SDK, you can run the following command to verify which SDK versions are already installed on your machine:

dotnet --list-sdks

Чтобы установить дополнительные версии пакета SDK для .NET Core на компьютере, посетите сайт Загрузки .NET.To install additional .NET Core SDK versions on your machine, visit the .NET Downloads site.

Вы можете создать новый файл global.json в текущем каталоге, выполнив команду dotnet new, как в следующем примере:You can create a new the global.json file in the current directory by executing the dotnet new command, similar to the following example:

dotnet new globaljson --sdk-version 2.2.100

Правила сопоставленияMatching rules

Примечание

Правила сопоставления регулируются apphost, который является частью среды выполнения .NET Core.The matching rules are governed by the apphost, which is part of the .NET Core runtime. Если у вас параллельно установлено несколько сред выполнения, используется последняя версия узла.The latest version of the host is used when you have multiple runtimes installed side-by-side.

Начиная с .NET Core 2.0 при определении версии пакета SDK для использования применяются следующие правила:Starting with .NET Core 2.0, the following rules apply when determining which version of the SDK to use:

  • Если файл global.json не найден или в файле global.json не указана версия пакета SDK, используется последняя установленная версия пакета SDK.If no global.json file is found or global.json doesn't specify an SDK version, the latest installed SDK version is used. Последняя версия пакета SDK может быть обычным или предварительным выпуском — выбирается самый большой номер версии.Latest SDK version can be either release or pre-release - the highest version number wins.
  • Если в файле global.json указана версия пакета SDK:If global.json does specify an SDK version:
    • Если указанная версия пакета SDK найдена на компьютере, используется именно эта версия.If the specified SDK version is found on the machine, that exact version is used.
    • Если указанная версия пакета SDK не найдена на компьютере, используется последняя установленная версия исправления этой версии пакета SDK.If the specified SDK version can't be found on the machine, the latest installed SDK patch version of that version is used. Последняя установленная версия исправления пакета SDK может быть обычным или предварительным выпуском — используется самый большой номер версии.Latest installed SDK patch version can be either release or pre-release - the highest version number wins. В .NET Core 2.1 и более поздних версиях версии исправления ниже указанной версии исправления не учитываются при выборе пакета SDK.In .NET Core 2.1 and higher, the patch versions lower than the patch version specified are ignored in the SDK selection.
    • Если указанная версия пакета SDK и соответствующая версия исправления пакета SDK не найдена, выдается ошибка.If the specified SDK version and an appropriate SDK patch version can't be found, an error is thrown.

В настоящее время версия пакета SDK состоит из следующих частей:The SDK version is currently composed of the following parts:

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

Главный выпуск пакета SDK для .NET Core обозначен первой цифрой (x) в последней части номера (xyz) для версии пакета SDK 2.1.100 и более поздних версий.The feature release of the .NET Core SDK is represented by the first digit (x) in the last portion of the number (xyz) for SDK versions 2.1.100 and higher. Как правило, пакет SDK для .NET Core имеет более короткий цикл выпуска, чем .NET Core.In general, the .NET Core SDK has a faster release cycle than .NET Core.

Версия исправления обозначена двумя последними цифрами (yz) в последней части номера (xyz) для версии пакета SDK 2.1.100 и более поздних версий.The patch version is defined by the last two digits (yz) in the last portion of the number (xyz) for SDK versions 2.1.100 and higher. Например, если вы указываете 2.1.300 в качестве версии пакета SDK, ищется пакет SDK до версии 2.1.399, но 2.1.400 не считается версией исправления для 2.1.300.For example, if you specify 2.1.300 as the SDK version, SDK selection finds up to 2.1.399 but 2.1.400 isn't considered a patch version for 2.1.300.

Версии пакета SDK для .NET Core с 2.1.100 по 2.1.201 были выпущены во время перехода между схемами номеров версий и некорректно обрабатывают нотацию xyz..NET Core SDK versions 2.1.100 through 2.1.201 were released during the transition between version number schemes and don't correctly handle the xyz notation. Если вы указываете эти версии в файле global.json, мы рекомендуем убедиться, что указанные версии установлены на целевых компьютерах.We highly recommend if you specify these versions in the global.json file, that you ensure the specified versions are on the target machines.

С пакетом SDK для .NET Core 1.x, когда вы указывали версию и точное соответствие не находилось, использовалась последняя установленная версия пакета SDK.With .NET Core SDK 1.x, if you specified a version and no exact match was found, the latest installed SDK version was used. Последняя версия пакета SDK может быть обычным или предварительным выпуском — выбирается самый большой номер версии.Latest SDK version can be either release or pre-release - the highest version number wins.

Устранение неполадок с оповещениями сборкиTroubleshooting build warnings

Предупреждение

Вы работаете с предварительной версией пакета SDK для .NET Core.You are working with a preview version of the .NET Core SDK. Версию пакета SDK можно указать в файле global.json в текущем проекте.You can define the SDK version via a global.json file in the current project. Дополнительные сведения см. на странице https://go.microsoft.com/fwlink/?linkid=869452More at https://go.microsoft.com/fwlink/?linkid=869452

Это предупреждение означает, что проект компилируется с помощью предварительной версии пакета SDK для .NET Core, как описано в разделе Правила сопоставления.This warning indicates that your project is being compiled using a preview version of the .NET Core SDK, as explained in the Matching rules section. Версии пакета SDK для .NET Core имеют гарантированное качество..NET Core SDK versions have a history and commitment of being high quality. Но если вы не хотите использовать предварительную версию, добавьте файл global.json в структуру иерархии проекта, чтобы указать нужную версию пакета SDK, и с помощью dotnet --list-sdks убедитесь, что эта версия установлена на вашем компьютере.However, if you don't want to use a preview version, add a global.json file to your project hierarchy structure to specify which SDK version to use, and use dotnet --list-sdks to confirm that the version is installed on your machine. Чтобы использовать новую версию после ее выпуска, удалите файл global.json или внесите в него изменения.When a new version is released, to use the new version, either remove the global.json file or update it to use the newer version.

Предупреждение

Запускаемый проект '{startupProject}' нацелен на версию платформы '.NETCoreApp' '{targetFrameworkVersion}'.Startup project '{startupProject}' targets framework '.NETCoreApp' version '{targetFrameworkVersion}'. Эта версия средств командной строки .NET Entity Framework Core поддерживает только версию 2.0 или более позднюю.This version of the Entity Framework Core .NET Command-line Tools only supports version 2.0 or higher. Сведения об использовании более старой версии средств см. в разделе https://go.microsoft.com/fwlink/?linkid=871254For information on using older versions of the tools, see https://go.microsoft.com/fwlink/?linkid=871254

Начиная с пакета SDK для .NET Core 2.1 (версия 2.1.300) поддерживается команда dotnet ef.Starting with .NET Core 2.1 SDK (version 2.1.300), the dotnet ef command comes included in the SDK. Это предупреждение означает, что проект предназначен для EF Core 1.0 или 1.1, которые несовместимы с пакетом SDK для .NET Core 2.1 и более поздних версий.This warning indicates that your project targets EF Core 1.0 or 1.1, which isn't compatible with .NET Core 2.1 SDK and later versions. Чтобы скомпилировать проект, установите пакет SDK для .NET Core 2.0 (версия 2.1.201) или более ранней версии на своем компьютере и определите необходимую версию пакета SDK с помощью файла global.json.To compile your project, install .NET Core 2.0 SDK (version 2.1.201) and earlier on your machine and define the desired SDK version using the global.json file. Дополнительные сведения о команде dotnet ef см. в разделе Утилиты командной строки для EF Core .NET.For more information about the dotnet ef command, see EF Core .NET Command-line Tools.

См. такжеSee also