协慌网

登录 贡献 社区

如何获取 NuGet 以安装 / 更新 packages.config 中的所有软件包?

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

答案

您可以使用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 restore 的信息
  • 2014/07/06-更新了有关 Visual Studio 中程序包自动还原的信息,并通过对 NuGet 的其他更改使答案保持最新。
  • 2014/11 /21 - 更新了有关-reinstall

打开软件包管理器控制台

  • 查看 -> 其他 Windows-> 程序包管理器控制台

在当前解决方案的 “所有项目” 中重新安装所有软件包:

Update-Package -Reinstall

在当前解决方案的 SPECIFIC PROJECT 中重新安装所有软件包(由于unarityashes999 ):

Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall

在 Visual Studio 中,还有另一种更新更快的方法。请查看David Ebbo 的这篇文章,如果遇到麻烦,请参考评论部分。基本上,您在 “程序包管理器” 提示符下执行以下操作:

PM> Install-Package NuGetPowerTools
PM> Enable-PackageRestore

之后,在构建解决方案时,如果缺少软件包,则将自动安装它们。

更新:

该功能内置于Visual Studio 集成的 Nuget 1.6 中,因此您甚至无需安装 NuGetPowerTools 或键入命令。您要做的就是

右键单击 “解决方案资源管理器” 中的 “解决方案” 节点,然后选择 “启用 NuGet 软件包还原”。

阅读本文以获取更多详细信息。