3

NuGetを使用してSignalRとRavenを新しいASP.NetMVC4プロジェクトに追加しようとしています。

最初にSignalRを実行してから、Ravenを追加しようとすると、次のエラーが発生します。

インストールに失敗しました。ロールバック...インストールパッケージ:すでに新しいバージョンの「Newtonsoft.Json」を参照しています。

最初にRavenをインストールすると、SignalRは次のようになります。

インストールに失敗しました。ロールバックしています...インストールパッケージ:「Newtonsoft.Json4.5.7」から「Newtonsoft.Json4.5.8」への更新に失敗しました。「Newtonsoft.Json4.5.8」と互換性のあるバージョンの「RavenDB.Client」が見つかりません。

NuGetはこの種のことを処理するためのものだと思いましたか?

どうすれば両方を追加できますか?

4

4 に答える 4

3

RavenDB.ClientにはNewtonsoft.Json=4.5.7に対する正確なバージョンの制約があるようですが、SignalRには「4.5.4以上」のより緩和された制約があります(実際には、独自の依存関係の1つであるSignalRによって課される制約です。サーバ)。

上記のシナリオを手動で調整して機能させることができました。

  1. 新しいMVC4プロジェクトを作成しました
  2. packages.configを開き、Newtonsoft.Jsonパッケージエントリに' allowedVersions ="[4.5.7]" '属性を追加しました
  3. パッケージマネージャーコンソールを開き([表示] ...[その他のウィンドウ...][パッケージマネージャーコンソール])、update-packagesを実行して、すべてのデフォルトの依存関係の最新コードを取得しました(しばらく時間がかかります)
  4. 再びパッケージマネージャーコンソールで、install-packageRavenDB.Clientを実行しました
  5. 最後に、パッケージマネージャーコンソールで、install-packageSignalRを実行しました

上記の注文のいくつかの組み合わせを試しましたが、それは気に入らなかった-それを機能させるのは、packages.configを手動で編集してNewtonsoft.Jsonのバージョンを4.5.7にロックし、その後のインストールで参照されているバージョンをゴミ箱に捨てないでください。

于 2012-08-28T12:25:44.860 に答える
1

私たちはまさにこの問題に遭遇しましたが、最終的に Raven アセンブリを手動で取り込んだ (特定のバージョンをターゲットにすることができた)。

コマンド ライン ツールを使用して、Nuget に強制的にパッケージをインストールさせることが可能であることがわかりました: How to install an old version of package via NuGet?

于 2012-09-18T21:23:31.337 に答える
0

Raven と標準の MVC テンプレートで同じ問題が発生しました。Newtonsoft.Json の最新バージョンが欲しかったので、別の方法で解決しました。RavenDB クライアントの依存関係を確認し、最初に Newtonsoft.Json と NLog の最新バージョンをインストールしてから、-IgnoreDependencies フラグを付けてパケット マネージャー コンソールにパケットをインストールしました。

Install-Package -Id RavenDB.Client -IgnoreDependencies 

それはうまくいきました。(現時点では、RavenDB が最新の Newtonsoft.Json と互換性がないという計算上のリスクを冒しています。しかし、私はデアデビルです)

于 2012-12-29T18:14:15.483 に答える
0

同じ問題に遭遇しましたが、代わりに古いバージョンの SignalR をインストールすることにしました。バージョン 4.0 (2012 年 2 月) は NewtonSoft >= 4.0.7 に依存しており、これは RavenDB が既にインストールされている状態で正しくインストールされます。

Install-Package SignalR -Version 0.4.0 
于 2012-11-16T11:03:37.443 に答える