web-dev-qa-db-ja.com

Newtonsoft.Jsonで問題を引き起こすSystem.Net.Http.Formatting.dll

私の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をアンインストールして再インストールしようとしましたが、役に立ちませんでした。

12
LiamHT

AssemblyBindingタグには適切なxmlnsスキーマがありますか?発生している問題が アセンブリバインディングリダイレクトが機能しない と同じかどうかを確認します

0
Mothupally

私たちは同じエラーに直面し、数日間修正するのに苦労しました。最終的に、スタックオーバーフローに関するこの投稿を見つけました アセンブリ参照を解決できません-dependentAssemblyの問題?

これにより、使用されているSystem.Net.Http.Formattingのバージョンを調べることに気付き、ソリューションがSystem.Net.Http.Formatting.dllの複数のバージョンを使用しており、それぞれが異なるバージョンのNewtonsoft.Json.dllを参照していることがわかりました。

古いバージョンのSystem.Net.Http.Formattingの参照を削除し、参照を追加し直すと、問題が修正されました。

お役に立てば幸いです。

4
chintan123

@ chintan123は実際に私を正しい方向に向けました。私が作成していたクラスライブラリには、System.Net.Http.FormattingNewtonsoft.Jsonの両方への参照がありましたが、前者だけがbinそれを必要とした呼び出し側プロジェクトのディレクトリ。

Newtonsoft.Jsonへの参照をメインの呼び出しプロジェクトに追加すると、問題が修正されました。

0
SharpC