The dotnetaddpackage 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 compati‐
ble 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 lat‐
est 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" />
Implicitrestore
You don’t have to run dotnetrestore because it’s run implicitly by all commands that require a restore
to occur, such as dotnetnew, dotnetbuild, dotnetrun, dotnettest, dotnetpublish, and dotnetpack. To
disable implicit restore, use the --no-restore option.
The dotnetrestore 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 explicit‐
ly control when the restore occurs.
For information about how to manage NuGet feeds, see the dotnetrestore documentation.