私のWindowsサービスは、MVCプロジェクトと同じソリューションにあります。
MVCプロジェクトは、Newtonsoft.Json v6 +を必要とするSignalRクライアントへの参照を使用します
windowsサービスはSystem.Net.Http.Formattingを使用します。これには、Newtonsoft.Jsonバージョン4.5.0.0が必要です。
App.Configでバインディングリダイレクトを使用できるため、これは問題にならないだろうと思いましたが、次のエラーが発生します。
System.Net.Http.Formatting.dllでタイプ「System.IO.FileLoadException」の未処理の例外が発生しました
追加情報:ファイルまたはアセンブリ 'Newtonsoft.Json、Version = 4.5.0.0、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed'またはその依存関係の1つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)
私のapp.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>
私はそれを自分で追加しましたが、それは機能しません。また、nugetパッケージマネージャーを使用してJson.Netをアンインストールして再インストールしようとしましたが、役に立ちませんでした。
AssemblyBindingタグには適切なxmlnsスキーマがありますか?発生している問題が アセンブリバインディングリダイレクトが機能しない と同じかどうかを確認します
私たちは同じエラーに直面し、数日間修正するのに苦労しました。最終的に、スタックオーバーフローに関するこの投稿を見つけました アセンブリ参照を解決できません-dependentAssemblyの問題?
これにより、使用されているSystem.Net.Http.Formatting
のバージョンを調べることに気付き、ソリューションがSystem.Net.Http.Formatting.dll
の複数のバージョンを使用しており、それぞれが異なるバージョンのNewtonsoft.Json.dll
を参照していることがわかりました。
古いバージョンのSystem.Net.Http.Formatting
の参照を削除し、参照を追加し直すと、問題が修正されました。
お役に立てば幸いです。
@ chintan123は実際に私を正しい方向に向けました。私が作成していたクラスライブラリには、System.Net.Http.Formatting
とNewtonsoft.Json
の両方への参照がありましたが、前者だけがbin
それを必要とした呼び出し側プロジェクトのディレクトリ。
Newtonsoft.Json
への参照をメインの呼び出しプロジェクトに追加すると、問題が修正されました。