dotnet-restore - Man Page

Restores the dependencies and tools of a project.

Examples (TL;DR)

dotnet restore

This article applies to: ✔️ .NET Core 3.1 SDK and later versions


dotnet restore [<ROOT>] [--configfile <FILE>] [--disable-parallel]
    [-f|--force] [--force-evaluate] [--ignore-failed-sources]
    [--interactive] [--lock-file-path <LOCK_FILE_PATH>] [--locked-mode]
    [--no-cache] [--no-dependencies] [--packages <PACKAGES_DIRECTORY>]
    [-r|--runtime <RUNTIME_IDENTIFIER>] [-s|--source <SOURCE>]
    [--use-lock-file] [-v|--verbosity <LEVEL>]

dotnet restore -h|--help


The dotnet restore command uses NuGet to restore dependencies as well as project-specific tools that are specified in the project file. In most cases, you don’t need to explicitly use the dotnet restore command, since a NuGet restore is run implicitly if necessary when you run the following commands:

Sometimes, it might be inconvenient to run the implicit NuGet restore with these commands. For example, some automated systems, such as build systems, need to call dotnet restore explicitly to control when the restore occurs so that they can control network usage. To prevent the implicit NuGet restore, you can use the --no-restore flag with any of these commands to disable implicit restore.

Signed package verification during restore operations requires a certificate root store that is valid for both code signing and timestamping. See NuGet signed package verification for details.

Specify feeds

To restore the dependencies, NuGet needs the feeds where the packages are located. Feeds are usually provided via the nuget.config configuration file. A default configuration file is provided when the .NET SDK is installed. To specify additional feeds, do one of the following:

  • Create your own nuget.config file in the project directory. For more information, see Common NuGet configurations and nuget.config differences later in this article.
  • Use dotnet nuget commands such as dotnet nuget add source.

You can override the nuget.config feeds with the -s option.

For information about how to use authenticated feeds, see Consuming packages from authenticated feeds.

Global packages folder

For dependencies, you can specify where the restored packages are placed during the restore operation using the --packages argument. If not specified, the default NuGet package cache is used, which is found in the .nuget/packages directory in the user’s home directory on all operating systems. For example, /home/user1 on Linux or C: on Windows.

Project-specific tooling

For project-specific tooling, dotnet restore first restores the package in which the tool is packed, and then proceeds to restore the tool’s dependencies as specified in its project file.

nuget.config differences

The behavior of the dotnet restore command is affected by the settings in the nuget.config file, if present. For example, setting the globalPackagesFolder in nuget.config places the restored NuGet packages in the specified folder. This is an alternative to specifying the --packages option on the dotnet restore command. For more information, see the nuget.config reference.

There are three specific settings that dotnet restore ignores:

  • bindingRedirects

    Binding redirects don’t work with <PackageReference> elements and .NET only supports <PackageReference> elements for NuGet packages.

  • solution

    This setting is Visual Studio specific and doesn’t apply to .NET. .NET doesn’t use a packages.config file and instead uses <PackageReference> elements for NuGet packages.

  • trustedSigners

    Support for cross-platform package signature verification was added in the .NET 5.0.100 SDK.

Workload manifest downloads

When you run this command, it initiates an asynchronous background download of advertising manifests for workloads. If the download is still running when this command finishes, the download is stopped. For more information, see Advertising manifests.





2022-11-08 .NET Documentation