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

如何通过NuGet安装旧版本的软件包?,nuget,nuget-package,Nuget,Nuget Package,我想安装较旧版本的软件包(Newtonsoft.Json)。但努吉回过头来: 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'.

我想安装较旧版本的软件包(
Newtonsoft.Json
)。但努吉回过头来:

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>
安装软件包Newtonsoft.Json-Version
我用了不少。我想补充一点,在最新版本的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
独占的)之间的版本。然后,当您对整个解决方案执行
更新包时,您不必担心特定包会更新到
3.x.x
之前的版本


此功能的文档为。

自NuGet 2.8起,有一项功能可以降低软件包的级别

例如:

输入到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].
下面需要注意的事项:

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


现在,它在Visual Studio 2015及更高版本中被大大简化。您可以在用户界面本身内执行降级/升级,而无需在Package Manager控制台中执行命令

  • 右键单击项目并*转到管理NuGet软件包

  • 请看下图

    • 选择您的软件包并选择要安装的版本

  • 非常简单,不是吗?:)

    另一个更手动的选项:

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

    twitterizer使用Newtonsoft.Json,我必须安装旧版本而不卸载新版本。PM>卸载软件包Newtonsoft.Json卸载软件包:无法卸载“Newtonsoft.Json 4.0.8”,因为“twitterizer 2.4.0.26532”依赖于它。您没有提到软件包的现有依赖项,因此我不知道:请尝试将-Force开关添加到卸载软件包命令(如上编辑)中。很抱歉,我的缺失-强制工作,我安装了旧的。非常感谢。当卸载EntityFramework 6 beta以降级到版本5时,我不断收到消息,告诉我重新启动VS以完成卸载,但这样做并没有删除消息。我只是进入packages文件夹并从中删除了剩余的空树结构,然后它就被删除了successful@Simon_Weaver我怀疑EF 6 pkg正在做一些导致这种情况的事情(注意到一些AppDomain代码,例如PowerShell脚本中的代码,所以VS很可能保留了一些dll)防止NuGet更新破坏您的解决方案非常有用!(Microsoft.Net.Http v2.1.10,我在看你…)我在看JQuery 1.9和2.0.Microsoft.Owin:-)这可能的重复现在应该是公认的答案,因为它是最省力的解决方案。是的,非常有效,包括降级所有依赖项-完美不幸的是,这种方法不适用于从一个预发布版本降级到另一个预发布版本-它只适用于降级到一个发布版本。@James Roland如果你能在回答页上突出显示crimbo的预发布警告,那就太好了!这是一种方法:)非常适合那些编程工具集包括一个好的编程编辑器、tail和一个web浏览器=)