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

我想安装一个包的旧版本(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'.

我该怎么做呢?

237320 次浏览

试试下面的方法:

Uninstall-Package Newtonsoft.Json -Force

紧随其后的是:

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

我经常使用泽维尔的回答。我想补充的是,在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.0 (包容)和4.0 (独家)之间。然后,当你对整个解决方案执行Update-Package时,你不需要担心那个特定的包被更新到以前的版本3.x.x

这个功能的文档是在这里

NuGet 2.8开始,有一个特性降级是一个包。

NuGet 2.8 Release Notes .

例子:

在Package Manager Console中输入以下命令将把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].

需要注意的一点是as per crimbo如下:

这种方法不适用于从一个预发布版本降级到另一个预发布版本——它只适用于降级到发布版本

现在,它在Visual Studio 2015及以后版本中被简化了很多。你可以在用户界面本身中执行降级/升级,而不需要在包管理器控制台中执行命令。

  1. 右键单击您的项目和*转到管理NuGet包

  2. 请看下面的图片。

    • Select your Package and Choose the Version,你想安装它。

NuGet Package Manager window of Project

非常非常简单,不是吗?< / >强:)

另一个更手动的选项来获得它:

.nuget\nuget.exe install Newtonsoft.Json -Version 4.0.5