使用NuGet下载旧版本的软件包

926
NuGet有没有办法下载以前版本的软件包?而不是最新版本?
8个回答

1130

打开Visual Studio的包管理器控制台 - 在“工具”/“NuGet程序包管理器”/“包管理器控制台”下可以找到。 然后运行“Install-Package”命令:

Install-Package Common.Logging -Version 1.2.0

详情请参见命令参考

编辑: 为了列出一个包的版本,您可以使用Get-Package命令和一个筛选器远程参数和

Get-Package -ListAvailable -Filter Common.Logging -AllVersions

Install-Package命令中选择版本选项后按Tab键,您将得到最新可用版本的列表。


57
对于那些已经使用Nuget一段时间却从未通过命令行进行任何操作的人,为了方便起见:要运行PHeiberg提到的PowerShell命令,您需要在Visual Studio中打开包管理器控制台 - 在工具 | 库包管理器 | 包管理器控制台中。 - Jonathan Moffatt
20
这个命令也应该可以通过用户界面使用。现在,如果发布者有一个测试版本,你只能获取到最新的那个版本,但有时它是不稳定的。 - Bart Verkoeijen
3
依赖信息和查看其他属性: Get-Package -ListAvailable [-Source X] -Filter Common.Logging -AllVersions | select version, dependencies (或者 '| get-member' 查看所有属性) - Curtis Yallop
2
“Get-Package -ListAvailable” 对我来说并没有列出所有可用的版本。 - Roman Starkov
2
Get-Package 命令中的 ListAvailable 参数已被弃用。您应该使用 Find-Package <id> -AllVersions 代替。 - Joseph Guadagno
显示剩余4条评论

54

37

另一种选择是在packages.config文件中更改版本号。这将导致NuGet在下一次构建时下载该版本的dll。


1
不错...没想到那个。我猜解决方案必须启用NuGet包还原 - Leniel Maccaferri
12
这并不足以自动更改程序集引用。如果你的解决方案中至少有两个程序集,可尝试以下方法:1. 确保其中一个程序集引用了该包,2. 在 packages.config 中编辑正确的版本,3. 管理解决方案上的 NuGet 包,3a. 将该包添加到另一个项目中,从原始项目中删除,并确认此操作,3b. 反转3a并确认。步骤3a将向另一个项目添加正确的程序集引用,并从原始项目中删除。步骤3b将向原始项目添加正确的程序集引用。 - Jeroen Wiert Pluimers

26
在NuGet 3.x(Visual Studio 2015)中,您可以直接从用户界面中选择版本。

NuGet 3 package manager UI


1
好的时候很不错,但我见过一些情况,其中并没有列出所有旧版本。 - StayOnTarget

7

在NuGet 3.0中,Get-Package命令已被弃用,取而代之的是Find-Package命令。

Find-Package Common.Logging -AllVersions

详情请参阅NuGet命令参考文档

如果您尝试在Visual Studio 2015中使用Get-Package,则会显示此消息。

This Command/Parameter combination has been deprecated and will be removed
in the next release. Please consider using the new command that replaces it: 
'Find-Package [-Id] -AllVersions'

或者如@Yishai所说,您可以在Visual Studio的NuGet屏幕中使用版本号下拉菜单。


4

由于原问题没有说明应该使用哪个NuGet前端,我想提醒您,NuGet 3.5增加了通过命令行客户端更新到特定版本的支持(也适用于降级):

NuGet.exe update Common.Logging -Version 1.2.0

2

我来到了这个页面,但我的需求不同,我想要下载旧版本的.nupkg文件,而不是从VS2019下载 - 以获取旧版本的.nupkg

  1. 前往 nuget.org
  2. 搜索软件包,例如:Newton Json
  3. 点击结果软件包名称
  4. 点击“版本”选项卡,下载您想要的版本
  5. screenshot

0

如上所述,通过使用Nuget包管理器UI,可以帮助先卸载nuget包。如果我不先卸载,当我回到nuget包版本时,总是会遇到一些问题。有些引用没有被清理干净。因此,我建议在通过Nuget包管理器安装旧的nuget包时采用以下工作流程:

  1. 选择你的nuget服务器/源
  2. 查找并选择要安装旧版本的nuget包
  3. 卸载当前版本
  4. 点击安装下拉菜单>选择旧版本>点击安装

enter image description here

祝你好运 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接