json.net バージョン不整合によるアプリケーションのサーバーエラー
ASP.NETのNuGetエラーの続きです。
どうもCodeBehindでWEBアプリケーションを作成してディレクトリごとコピーしてWEBサイトを発行すると、以下のメッセージが表示されてうまくコンパイルされません。
ファイルまたはアセンブリ 'Newtonsoft.Json'またはその依存関係の1つを読み込めませんでした。 見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)
System.IO.FileLoadException:ファイルまたはアセンブリ 'Newtonsoft.Json、バージョン= 11.0.0.0、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed'またはその依存関係の1つを読み込めませんでした。 見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)
よくよく読んでみると、どうもNewtonsoft.Json.dllのバージョンが違う?
確かにbinフォルダにあるNewtonsoft.Json.dllを見ると、バージョンが6.0になっている。エラー画面上は11.0だから全然違う。
とりあえず問題無いプロジェクトから正しいバージョンをコピーして実行するも、ビルド時にNuGetの自動更新機能が働いてしまい、また古いバージョンがダウンロードされてしまう・・・。
またまた路頭に迷いましたが、結局NuGetの自動更新ではなく、手動で更新しなければならいことが分かり、以下のコマンドをNuGetパッケージマネージャコンソールより実行し、プロジェクトを再起動したら直りました。
update-package Newtonsoft.Json -reinstall