NuGetを介して古いバージョンのパッケージをインストールする方法


384

古いバージョンのパッケージをインストールしたい(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'.

どんな助けでも大歓迎です。


回答:


579

以下を試してください:

Uninstall-Package Newtonsoft.Json -Force

に続く:

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

twitterizerはNewtonsoft.Jsonを使用しています。新しいものをアンインストールせずに古いものをインストールする必要があります。PM> Uninstall-Package Newtonsoft.Json Uninstall-Package:「twitterizer 2.4.0.26532」が依存しているため、「Newtonsoft.Json 4.0.8」をアンインストールできません。
Nebide Yildiz

9
パッケージへの既存の依存関係について言及していなかったので、私はそれに気づきませんでした:-Forceスイッチを(上記で編集したように)uninstall-packageコマンドに追加してみてください
Xavier Decoster

行方不明でごめんなさい。-Forceが機能し、古いバージョンをインストールしました。どうもありがとうございます。
Nebide Yildiz

EntityFramework 6ベータ版をアンインストールしてバージョン5にダウングレードすると、VSを再起動してアンインストールを完了するように指示するメッセージが何度も表示されましたが、メッセージは削除されませんでした。私はパッケージフォルダに移動し、そこから残りの空のツリー構造を削除したところ、成功しました
Simon_Weaver

@Simon_Weaver EF 6パッケージがこれを引き起こす何かをしていると思います(PowerShellスクリプトのAppDomainコードなどに気づいたため、VSが一部のDLLを保持している可能性があります)
Xavier Decoster

266

以下のようNuget 2.8にする機能があり、ダウングレードパッケージを。

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].

以下のcrimboによる注意事項:

「この方法は、あるプレリリースバージョンから別のプレリリースバージョンにダウングレードする場合には機能しません。リリースバージョンにダウングレードする場合にのみ機能します。」


13
これは、最小限の労力での最良のソリューションとして、今では受け入れられた答えになるはずです。
Peter

はい、すべての依存関係のダウングレードを含め、魅力のように機能します-完全
ピーター

7
残念ながら、このアプローチは、あるプレリリースバージョンから別のプレリリースバージョンへのダウングレードでは機能しません。リリースバージョンへのダウングレードでのみ機能します。
クリムボ14

@James Roland回答のクリンボによるプレリリース警告を強調表示できればすばらしいと思います
eglasius

51

私はザビエルの答えをかなり使いました。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

この機能のドキュメントはこちらです。


4
NuGetの更新によってソリューションが壊れないようにするのに非常に役立ちます。(Microsoft.Net.Http v2.1.10、私はあなたを見ています...)
ダグラスバービン2013

6
私はJQuery 1.9&2.0を見ています。
Martin Brown

Microsoft.Owin for me :-)
bikeman868

19

現在、Visual Studio 2015以降では、非常に簡素化されています。あなたは行うことができますDowngrade / Upgradeパッケージマネージャコンソールでコマンドを実行せず、自身のインターフェイスのユーザーの中に。

  1. Right click on your projectgo to Manage Nuget Packages

  2. 下の画像を見てください。

    • Select your Package and Choose the Version、インストールしたかった。

プロジェクトのNuget Package Managerウィンドウ

とてもシンプルですね。:) お役に立てれば...


1
うん!これは行く方法です:)
詐欺師症候群

0

それを得るためのもう一つの手動オプション:

.nuget\nuget.exe install Newtonsoft.Json -Version 4.0.5
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.