dotnet-add-package - Man Page
Adds or updates a package reference in a project file.
Examples (TL;DR)
- Add a package to the project in the current directory:
dotnet add package package
- Add a package to a specific project:
dotnet add path/to/file.csproj package package
- Add a specific version of a package to the project:
dotnet add package package --version 1.0.0
- Add a package using a specific NuGet source:
dotnet add package package --source https://api.nuget.org/v3/index.json
- Add a package only when targeting a specific framework:
dotnet add package package --framework net7.0
- Add and specify the directory where to restore packages (
~/.nuget/packages
by default):dotnet add package package --package-directory path/to/directory
dotnet add package
This article applies to: ✔️ .NET Core 3.1 SDK and later versions
Synopsis
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
The dotnet add package
command provides a convenient option to add or update a package reference in a project file. When you run the command, there’s a compatibility check to ensure the package is compatible with the frameworks in the project. If the check passes and the package isn’t referenced in the project file, a <PackageReference>
element is added to the project file. If the check passes and the package is already referenced in the project file, the <PackageReference>
element is updated to the latest compatible version. After the project file is updated, dotnet restore is run.
For example, adding Microsoft.EntityFrameworkCore
to ToDo.csproj produces output similar to the following example:
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).
The ToDo.csproj file now contains a <PackageReference>
element for the referenced package.
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
Implicit restore
You don’t have to run dotnet restore
because it’s run implicitly by all commands that require a restore to occur, such as dotnet new
, dotnet build
, dotnet run
, dotnet test
, dotnet publish
, and dotnet pack
. To disable implicit restore, use the --no-restore
option.
The dotnet restore
command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.
For information about how to manage NuGet feeds, see the dotnet restore
documentation.
Arguments
PROJECT
Specifies the project file. If not specified, the command searches the current directory for one.
PACKAGE_NAME
The package reference to add.
Options
-f|--framework <FRAMEWORK>
Adds a package reference only when targeting a specific framework.
-?|-h|--help
Prints out a description of how to use the command.
--interactive
Allows the command to stop and wait for user input or action. For example, to complete authentication.
-n|--no-restore
Adds a package reference without performing a restore preview and compatibility check.
--package-directory <PACKAGE_DIRECTORY>
The directory where to restore the packages. The default package restore location is
%userprofile%\.nuget\packages
on Windows and~/.nuget/packages
on macOS and Linux. For more information, see Managing the global packages, cache, and temp folders in NuGet.--prerelease
Allows prerelease packages to be installed. Available since .NET Core 5 SDK
-s|--source <SOURCE>
The URI of the NuGet package source to use during the restore operation.
-v|--version <VERSION>
Version of the package. See NuGet package versioning.
Examples
Add
Microsoft.EntityFrameworkCore
NuGet package to a project:dotnet add package Microsoft.EntityFrameworkCore
Add a specific version of a package to a project:
dotnet add ToDo.csproj package Microsoft.Azure.DocumentDB.Core -v 1.0.0
Add a package using a specific NuGet source:
dotnet add package Microsoft.AspNetCore.StaticFiles -s https://dotnet.myget.org/F/dotnet-core/api/v3/index.json
See Also
- Managing the global packages, cache, and temp folders in NuGet
- NuGet package versioning