asp.net-mvc - 操作 - プロジェクト から 直接 パッケージ を 参照 し て ください




新しいASP.NET MVC 5プロジェクトでNuGetパッケージリファレンスを更新した後、JSON.NETとのアセンブリバージョンの競合を修正するにはどうすればよいですか? (6)

VS 2013(Update 1)で新しいASP.NET MVC 5 Webプロジェクトを作成し、すべてのNuGetパッケージを更新しました。 プロジェクトをビルドすると、次の警告が表示されます。

MSB3243警告: "Newtonsoft.Json、Version = 6.0.0.0、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed"と "Newtonsoft.Json、Version = 4.5.0.0、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed"の間の競合を解決する方法はありません。

しかし、web.configをチェックすると、バインドリダイレクトが適切に行われていることがわかります。

  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
  </dependentAssembly>

まさにこの警告が勧告しているものです。

この警告を修正するにはどうすればよいですか?


あなたのアセンブリへの最終的なソリューションは、リダイレクトエラー

さて、これは (sane)アセンブリの参照の矛盾を解決するのに役立つはずです...

  1. エラーを確認してください。

  1. アセンブリのリダイレクト後にweb.configをチェックしてください。 存在しない場合は作成します。

  1. アセンブリの参照を右クリックし、[プロパティ]を選択します。

  1. プロパティー・テーブルでバージョン(実行時バージョンではない)を確認します。 了解。

  1. newVersion属性に貼り付けます。

  1. 便宜上、oldVersionの最後の部分を何か高いもの、丸いもの、虚偽のものに変更してください。

喜ぶ。


ここで私は警告を修正するために使用した手順:

  • VSでプロジェクトをアンロードする
  • .csprojファイルを編集する
  • Newtonsoft.Jsonアセンブリへの参照をすべて検索
    • 2つ、1つはv6に、1つはv5に見つかりました
    • v5への参照をv6に置き換える
  • プロジェクトをリロードする
  • アセンブリ参照の失敗を構築して通知する
  • 参照を表示し、Newtonsoft.Jsonに2つがあることを確認してください。 解決に失敗したものを削除します。
  • 再構築 - 警告なし

バインディングリダイレクトを使用すると

oldVersion = "0.0.0.0-6.0.0.0"

以前のバージョンのdllはバージョン0.0.0.0とバージョン6.0.0.0の間にあると言っています。


パッケージを更新して再インストールしましたが、OPと同じエラーが表示されていました。 私は以下を実行して、参照されたdllを手動で編集しました。

私は自分のリファレンスからnewtonsoft.json.dllを削除し、手動でbinディレクトリから.dllを削除しました。 その後、手動でnugetパッケージフォルダのnewtonsoft.json.dllをプロジェクトビンにコピーし、.dllファイルを参照して参照を追加しました。

今度は私のプロジェクトが再び構築されます。


私はNewtonsoft.Json 4.5.6への参照を持つMicrosoft.AspNet.WebApiを含むパッケージを更新し、既にバージョン6をインストールしていたため、この問題が発生しました。 バージョン6を使用するには賢明ではありませんでした。

それを解決するために、WebApiのアップデート後に、Tools> NuGet Package Manager> Pacakge Manager Consoleを開き、以下を実行しました:

 Update-Package Newtonsoft.Json

ログによれば、6.0.xと4.5.6のバージョンはすべて最新のものに更新され、すべて正常でした。

これが再び現れると感じています。


私は同様の問題を抱えていて、他の人のために私の状況で答えを出したいと思っていました。

私は複数の他のC#クラスのlibプロジェクトでASP.NET Webアプリケーションを実行するソリューションを持っています。

私のASP.NET Webアプリケーションはjsonを使用していませんでしたが、他のプロジェクトはどこにありますか。

これは私がそれを修正した方法です:

  1. 私は最新のバージョン(6)を使用しているすべてのプロジェクトを、現在どのバージョンのjsonも使用しているすべてのプロジェクトでNuGet Updateを使用して確認しました。これで問題は修正されませんでした
  2. 私はNuGetを使ってWebアプリケーションにjsonを追加しました。これで問題は解決しました。

ステップ2は最初にjsonの設定情報を追加しました。これは、すべてのプロジェクトが、どのバージョンを持っていようと最新バージョン(6)を使用することを示唆しています。 Web.Configにアセンブリバインディングを追加することは、おそらく修正プログラムです。

しかし、ステップ2では、従来のコードもクリーンアップしました。 Webアプリケーションでjsonの以前のバージョン(5)を使用していたことが判明しました.NuGetフォルダは削除されませんでした。 最新のjson(6)を追加し、古いフォルダ(json v5)を削除しました。 これも修正の一部である可能性があります。





asp.net-mvc-5.1