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