Поделиться через


dotnet add package

Эта статья относится к: ✔️ пакету SDK для .NET Core 3.1 и более поздних версий

Имя.

dotnet add package — добавляет или обновляет ссылку на пакет в файле проекта.

Краткие сведения

dotnet add [<PROJECT>] package <PACKAGE_NAME>
    [-f|--framework <FRAMEWORK>] [--interactive]
    [-n|--no-restore] [--package-directory <PACKAGE_DIRECTORY>]
    [--prerelease] [-s|--source <SOURCE>] [-v|--version <VERSION>]

dotnet add package -h|--help

Description

Команда dotnet add package предоставляет удобный вариант для добавления или обновления ссылки на пакет в файле проекта. При выполнении команды выполняется проверка совместимости, чтобы убедиться, что пакет совместим с платформами в проекте. Если проверка проходит и пакет не ссылается в файле проекта, <PackageReference> элемент добавляется в файл проекта. Если проверка проходит и пакет уже ссылается в файле проекта, <PackageReference> элемент обновляется до последней совместимой версии. После обновления файла проекта выполняется восстановление dotnet .

Например, при добавлении Microsoft.EntityFrameworkCore в ToDo.csproj создаются выходные данные примерно следующего вида:

  Determining projects to restore...
  Writing C:\Users\username\AppData\Local\Temp\tmp24A8.tmp
info : Adding PackageReference for package 'Microsoft.EntityFrameworkCore' into project 'C:\ToDo\ToDo.csproj'.
info :   CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/index.json
info :   GET https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/516521bf-6417-457e-9a9c-0a4bdfde03e7/nuget/v3/registrations2-semver2/microsoft.entityframeworkcore/index.json
info :   CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/0.0.1-alpha/3.1.3.json
info :   CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/3.1.4/7.0.0-preview.2.22153.1.json
info :   CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/7.0.0-preview.3.22175.1/7.0.0-preview.3.22175.1.json
info :   NotFound https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/516521bf-6417-457e-9a9c-0a4bdfde03e7/nuget/v3/registrations2-semver2/microsoft.entityframeworkcore/index.json 257ms
info : Restoring packages for C:\ToDo\ToDo.csproj...
info : Package 'Microsoft.EntityFrameworkCore' is compatible with all the specified frameworks in project 'C:\ToDo\ToDo.csproj'.
info : PackageReference for package 'Microsoft.EntityFrameworkCore' version '6.0.4' added to file 'C:\ToDo\ToDo.csproj'.
info : Writing assets file to disk. Path: C:\ToDo\obj\project.assets.json
log  : Restored C:\ToDo\ToDo.csproj (in 171 ms).

Файл ToDo.csproj теперь содержит элемент <PackageReference> для пакета, на который указывает ссылка.

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />

Если проект подключен к центральному управлению пакетами (CPM), <PackageVersion> элемент в Directory.Packages.props file файле проекта добавляется или обновляется, а <PackageReference> элемент добавляется в файл проекта.

В настоящее время поддерживаются следующие сценарии. В этих примерах предполагается, что последняя версия Microsoft.EntityFrameworkCore 6.0.4. Дополнительные сценарии, связанные с CPM, описаны в этой спецификации разработки.

Сценарий 1. <PackageReference> Не существует в файле проекта, элемент не существует в Directory.Packages.props fileфайле проекта, <PackageVersion> а аргумент версии не передается из командной строки.

Команда CLI, выполняемая: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore

Элемент <PackageVersion> добавляется в Directory.Packages.props fileэлемент .

<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />

Элемент <PackageReference> добавляется в файл проекта.

<PackageReference Include="Microsoft.EntityFrameworkCore" />

Сценарий 2. <PackageReference> Не существует в файле проекта, <PackageVersion> элемент не существует в Directory.Packages.props fileфайле проекта, а аргумент версии передается из командной строки.

Команда CLI, выполняемая: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore --version 5.0.4

Элемент <PackageVersion> добавляется в Directory.Packages.props fileэлемент .

<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="5.0.4" />

Элемент <PackageReference> добавляется в файл проекта.

<PackageReference Include="Microsoft.EntityFrameworkCore" />

Сценарий 3. <PackageReference> Не существует в файле проекта, элемент существует в Directory.Packages.props fileфайле проекта, <PackageVersion> а аргумент версии не передается из командной строки.

Команда CLI, выполняемая: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore

Элемент <PackageVersion> добавляется в Directory.Packages.props fileэлемент .

<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />

Элемент <PackageReference> добавляется в файл проекта.

<PackageReference Include="Microsoft.EntityFrameworkCore" />

Сценарий 4. <PackageReference> Не существует в файле проекта, элемент существует в Directory.Packages.props fileфайле проекта, <PackageVersion> а аргумент версии передается из командной строки.

Команда CLI, выполняемая: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore --version 5.0.4

Элемент <PackageVersion> добавляется в Directory.Packages.props fileэлемент .

<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="5.0.4" />

Элемент <PackageReference> добавляется в файл проекта.

<PackageReference Include="Microsoft.EntityFrameworkCore" />

Неявное восстановление

Вам не нужно выполнять команду dotnet restore, так как она выполняется неявно всеми командами, которые требуют восстановления, например dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish и dotnet pack. Чтобы отключить неявное восстановление, используйте параметр --no-restore.

Команду dotnet restore по-прежнему удобно использовать в некоторых сценариях, где необходимо явное восстановление, например в сборках с использованием непрерывной интеграции в Azure DevOps Services или системах сборки, где требуется явно контролировать время восстановления.

Сведения об управлении веб-каналами NuGet см. в документации по dotnet restore.

Аргументы

  • PROJECT

    Указывает файл проекта. Если он не указан, команда ищет текущий каталог для него.

  • PACKAGE_NAME

    Добавляемая ссылка на пакет.

Параметры

  • -f|--framework <FRAMEWORK>

    Добавляет ссылку на пакет только при ориентации на конкретную платформу.

  • -?|-h|--help

    Выводит описание использования команды.

  • --interactive

    Позволяет команде остановиться и дождаться, пока пользователь выполнит действие или введет данные. Например, чтобы завершить проверку подлинности.

  • -n|--no-restore

    Добавляет ссылку на пакет без предварительного просмотра восстановления и проверки совместимости.

  • --package-directory <PACKAGE_DIRECTORY>

    Каталог, в который нужно восстановить пакеты. Расположение по умолчанию для восстановления пакетов — %userprofile%\.nuget\packages в Windows и ~/.nuget/packages в macOS и Linux. Дополнительные сведения см. в статье Управление папкой установки глобальных пакетов, кэшем и временными папками.

  • --prerelease

    Разрешает установку пакетов предварительного выпуска. Доступно, начиная с пакета SDK для .NET Core 5

  • -s|--source <SOURCE>

    URI источника пакета NuGet для использования во время операции восстановления.

  • -v|--version <VERSION>

    Версия пакета. См. статью Package versioning (Управление версиями пакета).

Примеры

  • Добавление пакета NuGet Microsoft.EntityFrameworkCore в проект:

    dotnet add package Microsoft.EntityFrameworkCore
    
  • Добавление определенной версии пакета в проект:

    dotnet add ToDo.csproj package Microsoft.Azure.DocumentDB.Core -v 1.0.0
    
  • Добавление пакета с помощью определенного источника NuGet:

    dotnet add package Microsoft.AspNetCore.StaticFiles -s https://dotnet.myget.org/F/dotnet-core/api/v3/index.json
    

См. также