还原命令 (NuGet CLI)

适用于:包使用 • 支持的版本:2.7 及以上版本

下载并安装 packages 文件夹中缺少的任何包。 与 NuGet 4.0+ 一起使用时,PackageReference 格式会在 obj 文件夹中生成一个 <project>.nuget.props 文件。 (该文件在源代码管理中都可以忽略。)

在 Mac OSX 和 Linux 上使用 Mono 上的 CLI 时,PackageReference 不支持还原包。

使用情况

nuget restore <projectPath> [options]

其中 <projectPath> 指定解决方案或 packages.config 文件的位置。 有关行为详细信息,请参阅下面的备注

选项

  • -ConfigFile

    要应用的 NuGet 配置文件。 如果未指定,则使用 %AppData%\NuGet\NuGet.Config(适用于 Windows)或是 ~/.nuget/NuGet/NuGet.Config~/.config/NuGet/NuGet.Config(适用于 Mac/Linux)。

  • -DirectDownload

    (4.0+) 直接下载包,而不使用任何元数据或二进制填充任何缓存。

  • -DisableParallelProcessing

    禁用还原并行的多个包。

  • -FallbackSource

    (3.2+) 在主源或默认源中未找到包源时用作回退的包源的列表。 使用分号分隔列表条目。

  • -Force

    在基于 PackageReference 的项目中,强制解析所有依赖项,即使上次还原已成功。 指定此标志类似于删除 project.assets.json 文件。 这不会绕过 http-cache。

  • -ForceEnglishOutput

    (3.5+) 使用固定的、基于英语的区域性强制 nuget.exe 运行。

  • -ForceEvaluate

    即使锁定文件已存在,也会强制还原以重新评估所有依赖项。

  • -?|-help

    显示此命令的帮助信息。

  • -LockFilePath

    写入项目锁定文件的输出位置。 默认情况下,该属性为 PROJECT_ROOT\packages.lock.json

  • -LockedMode

    不允许更新项目锁定文件。

  • -MSBuildPath

    (4.0+) 指定要与该命令一起使用的 MSBuild 的路径,从而优先于 -MSBuildVersion

  • -MSBuildVersion

    (3.2+) 指定要此命令一起使用的 MSBuild 的版本。 支持的值为 4、12、14、15.1、15.3、15.4、15.5、15.6、15.7、15.8、15.9。 默认情况下,会选择路径中的 MSBuild,否则它默认为已安装的最高 MSBuild 版本。

  • -NoHttpCache

    阻止 NuGet 使用 http 已缓存的包。 请参阅管理全局包和缓存文件夹

  • -NonInteractive

    不为用户输入或确认显示提示。

  • -OutputDirectory

    指定要在其中安装包的文件夹。 如果未指定文件夹,则使用当前文件夹。 在使用文件还原 packages.config 时是必需的,除非使用的是 PackagesDirectorySolutionDirectory

  • -PackageSaveMode

    指定要在包安装后保存的文件的类型:nuspecnupkgnuspec;nupkg

  • -PackagesDirectory

    OutputDirectory 相同。 在使用文件还原 packages.config 时是必需的,除非使用的是 OutputDirectorySolutionDirectory

  • -Project2ProjectTimeOut

    解析项目到项目引用的超时(以秒为单位)。

  • -Recursive

    (4.0+) 还原 UWP 和 .NET Core 项目的所有引用项目。 不适用于使用 packages.config 项目。

  • -RequireConsent

    在下载和安装包之前,验证是否已启用还原包。 有关详细信息,请参阅包还原

  • -SolutionDirectory

    指定解决方案文件夹。 还原解决方案的包时无效。 在使用文件还原 packages.config 时是必需的,除非使用的是 PackagesDirectoryOutputDirectory

  • -Source

    指定要用于这些还原的包源(作为 URL)的列表。 如果省略,该命令将使用配置文件中提供的源,请参阅配置 NuGet 行为。 使用分号分隔列表条目。

  • -UseLockFile

    允许生成项目锁定文件并与还原一起使用。

  • -Verbosity [normal|quiet|detailed]

    指定输出中显示的细节量:normal(默认值)、quietdetailed

另请参阅环境变量

注解

该还原命令执行以下步骤:

  1. 确定还原命令的操作模式。

    projectPath 文件类型 行为
    解决方案(文件夹) NuGet 查找 .sln 文件并使用该文件(如果找到);否则会提供错误。 (SolutionDir)\.nuget 用作起始文件夹。
    .sln 文件 还原解决方案标识的包;如果使用 -SolutionDirectory,则提供错误。 $(SolutionDir)\.nuget 用作起始文件夹。
    packages.config 或项目文件 还原文件中列出的包,解析和安装依赖项。
    其他文件类型 假定文件是 .sln 上述文件;如果不是解决方案,NuGet 会出错。
    (未指定 projectPath)
    • NuGet 在当前文件夹中查找解决方案文件。 如果找到单个文件,则使用该文件还原包;如果找到多个解决方案,则 NuGet 会提供错误。
    • 如果没有解决方案文件,NuGet 会查找 packages.config 并使用该文件还原包。
    • 如果未找到解决方案或 packages.config 文件,则 NuGet 会提供错误。
  2. 使用以下优先级顺序确定包文件夹(如果未找到这些文件夹,则 NuGet 会出错):

    • 使用 -PackagesDirectory 指定的文件夹。
    • Nuget.Config 中的 repositoryPath
    • 使用 -SolutionDirectory 指定的文件夹
    • $(SolutionDir)\packages
  3. 还原解决方案的包时,NuGet 执行以下操作:

    • 加载解决方案文件。
    • $(SolutionDir)\.nuget\packages.config 中列出的解决方案级别包还原到 packages 文件夹中。
    • $(ProjectDir)\packages.config 中列出的包还原到 packages 文件夹中。 对于指定的每个包,还并行的包,除非指定的是 -DisableParallelProcessing

示例

# Restore packages for a solution file
nuget restore a.sln

# Restore packages for a solution file, using MSBuild version 14.0 to load the solution and its project(s)
nuget restore a.sln -MSBuildVersion 14

# Restore packages for a project's packages.config file, with the packages folder at the parent
nuget restore proj1\packages.config -PackagesDirectory ..\packages

# Restore packages for the solution in the current folder, specifying package sources
nuget restore -source "https://api.nuget.org/v3/index.json;https://www.myget.org/F/nuget"