我有一个包含多个项目的解决方案。大多数第三方引用都丢失了,但每个项目都有 packages.config
文件。 如何让 NuGet 安装/更新所需的所有包?这是否需要通过每个项目的命令行完成?
最佳答案
您可以使用nuget.exe要恢复您的包,或者安装了 NuGet 2.7 或更高版本,您只需在 Visual Studio 中编译您的解决方案,这也将恢复丢失的包。
对于 NuGet.exe,您可以为每个项目运行以下命令。
nuget install packages.config
或者使用 NuGet 2.7 you can restore all packages in the solution使用命令行。
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 中,您可以使用 Package Manager Console还可以更新软件包。这样做的好处是,任何 PowerShell 脚本都将作为更新的一部分运行,而使用 NuGet.exe 则不会运行它们。以下命令会将每个项目中的所有包更新为 nuget.org 提供的最新版本。
Update-Package
您还可以将其限制为一个项目。
Update-Package -Project YourProjectName
如果您想将软件包重新安装到与之前安装的版本相同的版本,则可以将 -reinstall
参数与 Update-Package
命令结合使用。
Update-Package -reinstall
您还可以将其限制为一个项目。
Update-Package -reinstall -Project YourProjectName
-reinstall
选项将首先卸载该软件包,然后再次将其安装回项目中。
或者,您可以使用管理包
对话框更新包。
更新:
- 2013/07/10 - 更新了有关 NuGet 2.7 中 nuget 还原的信息
- 2014/07/06 - 更新了有关 Visual Studio 中自动包还原的信息,并将答案与 NuGet 的其他更改一起更新。
- 2014/11/21 - 更新了有关
-reinstall
的信息
关于nuget - 如何让 NuGet 安装/更新packages.config 中的所有包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6876732/