我想安装旧版本的软件包 (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'.
我该怎么做?
尝试以下操作:
Uninstall-Package Newtonsoft.Json -Force
其次是:
Install-Package Newtonsoft.Json -Version <press tab key for autocomplete>
从 NuGet 2.8 开始,有一个功能可以降级包。
例子:
输入包管理器控制台的以下命令会将 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:
此方法不适用于从一个预发布版本降级到其他预发布版本 - 它仅适用于降级到发布版本
我已经使用了很多 Xavier's answer。我想补充一点,在最新版本的 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
(inclusive)和 4.0
(exclusive)之间的版本。然后,当您对整个解决方案执行 Update-Package
时,您无需担心该特定软件包会更新到版本 3.x.x
之后。
此功能的文档是 here。
现在,它在 Visual Studio 2015 及更高版本中得到了极大的简化。您可以在用户界面本身内进行降级/升级,而无需在包管理器控制台中执行命令。
右键单击您的项目并*转到管理 NuGet 包。看下图。选择您的软件包并选择您要安装的版本。
https://i.stack.imgur.com/AvOkE.png
非常非常简单,不是吗? :)
另一个更手动的选择:
.nuget\nuget.exe install Newtonsoft.Json -Version 4.0.5
不定期副业成功案例分享