web-dev-qa-db-ja.com

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

任意の助けは大歓迎です。

365
Nebide Yildiz

以下を試してください。

Uninstall-Package Newtonsoft.Json -Force

に続く:

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

Nuget 2.8 では、 downgrade パッケージに機能があります。

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

以下のクリンボに従って注意すべきこと:

「このアプローチは、あるプレリリースバージョンから他のプレリリースバージョンへのダウングレードには機能しません。リリースバージョンへのダウングレードにのみ機能します。」

259
James Roland

私はXavierの答えをかなり使った。パッケージのバージョンを指定された範囲に制限することは、最新バージョンの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 です。

50
ken

現在、 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 window of Project

非常に単純ですね:)これが助けになることを願います...

17
RajeshKdev