使用 NuGet 下载旧版本的包

Posted

技术标签:

【中文标题】使用 NuGet 下载旧版本的包【英文标题】:Download old version of package with NuGet 【发布时间】:2011-08-03 11:25:22 【问题描述】:

有没有办法使用 NuGet 下载以前版本的包,而不是最新版本?

【问题讨论】:

【参考方案1】:

在 Visual Studio 中打开包管理器控制台 - 它位于工具/NuGet 包管理器/包管理器控制台中。然后运行 ​​Install-Package 命令:

Install-Package Common.Logging -Version 1.2.0

详情请参阅command reference。

编辑: 为了列出包的版本,您可以使用带有 远程参数和过滤器的 Get-Package 命令:

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

通过在Install-Package 命令中的版本选项后按 Tab,您可以获得最新可用版本的列表。

【讨论】:

为了那些已经使用 Nuget 一段时间但从未从命令行对其进行任何操作的人的利益:要运行 PHeiberg 提到的 powershell 命令,您需要调出包管理器控制台在 Visual Studio 中 - 它位于 Tools|Library Package Manager|Package Manager Console 这个命令也应该可以通过 UI 使用。现在,如果发布商有测试版,您只能获得最新版本,这有时会不稳定。 @bgever - 大多数发行商为在 GUI 中不被视为“最新”的 beta 软件包创建 Prereleases。只要发布者正确使用版本控制,最新版本应该始终是稳定版本。这并不意味着它不会有错误但是...... 依赖信息并检查其他可用属性:Get-Package -ListAvailable [-Source X] -Filter Common.Logging -AllVersions |选择版本、依赖项(或“|get-member”查看所有属性) Get-Package -ListAvailable 没有列出所有可用的版本。【参考方案2】:

在包索引中浏览到它的页面,例如。 http://www.nuget.org/packages/Newtonsoft.Json/4.0.5

然后按照给出的安装说明进行操作:

Install-Package Newtonsoft.Json -Version 4.0.5

或者下载.nupkg 文件,点击“下载”链接,例如。 https://www.nuget.org/api/v2/package/Newtonsoft.Json/4.0.5

已过时:安装我的 Chrome 扩展程序 Nutake,它会插入一个下载链接。

【讨论】:

【参考方案3】:

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

【讨论】:

不错的一个...没想到这一点。我想NuGet Package Restore 必须为解决方案启用。 这还不足以自动更改程序集引用。但有效的方法(如果您的解决方案中至少有两个程序集)是这样的:1. 确保一个程序集引用该程序包,2. 在 packages.config 中编辑正确的版本,3. 管理解决方案上的 NuGet 程序包,3a .将包添加到另一个项目,将其从原始项目中删除,并确认这一点,3b。反转 3a 并确认。步骤 3a 会将正确的程序集引用添加到另一个项目并将其从原始项目中删除。步骤 3b 会将正确的程序集引用添加到原始项目。【参考方案4】:

在 NuGet 3.x (Visual Studio 2015) 中,您只需从 UI 中选择版本

【讨论】:

很好用,但我见过没有列出所有旧版本的情况。【参考方案5】:

在 NuGet 3.0 中,Get-Package 命令已弃用并替换为 Find-Package 命令。

Find-Package Common.Logging -AllVersions

详情请参阅NuGet command reference docs。

这是您尝试在 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 屏幕中的版本号下拉菜单。

【讨论】:

【参考方案6】:

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

NuGet.exe update Common.Logging -Version 1.2.0

【讨论】:

【参考方案7】:

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

    转到nuget.org 搜索包 ex:Newton Json 点击结果包名 点击版本选项卡并下载您想要的版本

【讨论】:

【参考方案8】:

通过使用上面提到的 Nuget 包管理器 UI,它有助于首先卸载 nuget 包。如果我不先卸载,我在返回 nuget 包版本时总是会遇到问题。一些引用没有正确清理。因此,通过 Nuget 包管理器安装旧的 nuget 包时,我建议采用以下工作流程:

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

祝你好运:)

【讨论】:

以上是关于使用 NuGet 下载旧版本的包的主要内容,如果未能解决你的问题,请参考以下文章

针对使用nuget命令,因下载超时安装失败的程序包,可以离线方式安装

Nuget帮助说明

NuGet包断线续传下载

nuget 包无法在 VS 2019 中下载

修改NuGet包默认存放位置

如何在没有nuget.exe或Visual Studio扩展的情况下下载Nuget包?