如何让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

如果您想要将软件包重新安装到与以前安装的版本相同的版本,那么您可以在Update-Package命令中使用-reinstall参数。

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信息

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

    Update-Package -Reinstall
    

    重新安装当前解决方案的SPECIFIC PROJECT中的所有软件包(感谢unarity和ashes999):

    Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall
    

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

    PM> Install-Package NuGetPowerTools
    PM> Enable-PackageRestore
    

    之后,当您构建解决方案时,软件包将在缺失时自动安装。

    更新:

    该功能通过Visual Studio集成到Nuget 1.6中 ,因此您甚至不需要安装NuGetPowerTools或输入命令。 你所要做的就是

    右键单击解决方案资源管理器中的解决方案节点,然后选择启用NuGet包恢复。

    阅读这篇文章了解更多详情。

    链接地址: http://www.djcxy.com/p/62273.html

    上一篇: How do I get NuGet to install/update all the packages in the packages.config?

    下一篇: Packing NuGet projects compiled in release mode?