小编典典

如何让 NuGet 安装/更新 packages.config 中的所有包?

all

我有一个包含多个项目的解决方案。大多数第三方引用都丢失了,但packages.config每个项目都有文件。 如何让 NuGet
安装/更新所需的所有包?
这是否需要通过命令行为每个项目完成?


阅读 118

收藏
2022-03-02

共1个答案

小编典典

您可以使用nuget.exe来恢复您的包或安装 NuGet 2.7 或更高版本,您只需在
Visual Studio 中编译您的解决方案,这也将恢复丢失的包。

对于 NuGet.exe,您可以为每个项目运行以下命令。

nuget install packages.config

或者使用NuGet 2.7,您可以使用命令行恢复解决方案中的所有包。

nuget restore YourSolution.sln

这两个都会拉下包。但是,在运行此命令时,您的项目文件不会被修改,因此项目应该已经具有对 NuGet 包的引用。如果不是这种情况,那么您可以使用 Visual
Studio 安装包。

使用 NuGet 2.7 及更高版本,Visual Studio 将在您构建解决方案时自动恢复丢失的 NuGet 包,因此无需使用 NuGet.exe。

要更新解决方案中的所有包,首先还原它们,然后您可以使用 NuGet.exe 更新包,或者在 Visual Studio
中,您可以从包管理器控制台窗口更新包,或者最后您可以使用管理包对话框。

从命令行,您可以将解决方案中的包更新到 nuget.org 提供的最新版本。

nuget update YourSolution.sln

请注意,这不会在任何 NuGet 包中运行任何 PowerShell 脚本。

在 Visual Studio
中,您还可以使用包管理器控制台来更新包。这样做的好处是,任何 PowerShell 脚本都将作为更新的一部分运行,而使用
NuGet.exe 将不会运行它们。以下命令会将每个项目中的所有包更新为 nuget.org 提供的最新版本。

Update-Package

您也可以将其限制为一个项目。

Update-Package -Project YourProjectName

如果要将软件包重新安装到与以前安装的版本相同的版本,则可以将-reinstall参数与Update-Package命令一起使用。

Update-Package -reinstall

您也可以将其限制为一个项目。

Update-Package -reinstall -Project YourProjectName

-reinstall选项将首先卸载然后将包重新安装回项目中。

或者,您可以使用Manage Packages对话框更新包。

更新:

  • 2013/07/10 - 更新了有关 NuGet 2.7 中 nuget 还原的信息
  • 2014/07/06 - 更新了有关 Visual Studio 中自动包还原的信息,并通过对 NuGet 的其他更改更新了答案。
  • 2014/11/21 - 更新了有关信息-reinstall
2022-03-02