首页 文章

如何通过NuGet安装旧版本的软件包?

提问于
浏览
360

我想安装一个旧版本的软件包( Newtonsoft.Json ) . 但NuGet回滚 .

PM> Install-Package Newtonsoft.Json -Version 4.0.5
Successfully installed 'Newtonsoft.Json 4.0.5'.
Install failed. Rolling back...
Install-Package : Already referencing a newer version of 'Newtonsoft.Json'.

任何帮助将不胜感激 .

4 回答

  • 14

    现在,它在 Visual Studio 2015 中非常简化了 . 您可以在用户界面本身内执行 Downgrade / Upgrade ,而无需在程序包管理器控制台中执行命令 .

    • Right click on your projectgo to Manage Nuget Packages .

    • 请看下面的图片 .

    • Select your Package and Choose the Version ,您要安装它 .

    Very Very Simple, Isn't it? :)希望这会有所帮助......

  • 554

    Nuget 2.8 开始, downgrade 包有一个功能 .

    Nuget 2.8 Release Notes

    例:

    输入到软件包管理器控制台的以下命令会将couchbase客户端降级到1.3.1.0版

    Update-Package CouchbaseNetClient -Version 1.3.1.0
    

    结果:

    Updating 'CouchbaseNetClient' from version '1.3.3' to '1.3.1.0' in project [project name].
    Removing 'CouchbaseNetClient 1.3.3' from [project name].
    Successfully removed 'CouchbaseNetClient 1.3.3' from [project name].
    

    Something to note as per crimbo below:

    “这种方法不适用于从一个预发布版本降级到其他预发布版本 - 它只适用于降级到发布版本”

  • 256

    尝试以下方法:

    Uninstall-Package Newtonsoft.Json -Force
    

    其次是:

    Install-Package Newtonsoft.Json -Version <press tab key for autocomplete>
    
  • 47

    我已经使用了Xavier的答案了 . 我想补充说,在最新版本的NuGet中,将包版本限制到指定范围非常简单有用 .

    例如,如果您不希望在项目中将 Newtonsoft.Json 更新为版本 3.x.x ,请将 packages.config 文件中相应的 package 元素更改为如下所示:

    <package id="Newtonsoft.Json" version="3.5.8" allowedVersions="[3.0, 4.0)" targetFramework="net40" />
    

    请注意 allowedVersions 属性 . 这会将该程序包的版本限制为 3.0inclusive )和 4.0exclusive )之间的版本 . 然后,当您在整个解决方案上执行 Update-Package 时,您无需担心在版本 3.x.x 之后更新的特定包 .

    此功能的文档是here .

相关问题