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

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

【问题讨论】:

    标签: 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

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

          【讨论】:

            【解决方案8】:

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

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

            祝你好运:)

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-08-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多