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

时间:2012-04-18 08:59:38

标签: nuget nuget-package

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

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:561)

尝试以下方法:

Uninstall-Package Newtonsoft.Json -Force

接下来是:

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

答案 1 :(得分:259)

Nuget 2.8 开始,降级一个功能包。

Nuget 2.8 Release Notes

示例:

在Package Manager控制台中输入以下命令会将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].

根据下面的crimbo注意事项:

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

答案 2 :(得分:50)

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

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

<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之后更新的特定包。

此功能的文档为here

答案 3 :(得分:17)

现在,它在 Visual Studio 2015 中得到了极大的简化。您可以在用户界面中执行Downgrade / Upgrade,而无需在程序包管理器控制台中执行命令。

  1. Right click on your projectgo to Manage Nuget Packages

  2. 请看下图。

    • Select your Package and Choose the Version,您要安装。
  3. Nuget Package Manager window of Project

    非常非常简单,不是吗? :)希望这会有所帮助......

答案 4 :(得分:0)

另一个更手动的选项:

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