web-dev-qa-db-ja.com

ファイルまたはアセンブリ 'Newtonsoft.Json'またはその依存関係の1つをロードできませんでした

まず、それは単なる複製ではありません。以下の質問からの回答はどれも私にとってはうまくいきません。

http://goo.gl/tS40cn
http://goo.gl/pH6v2T

Nuget Package Managerを使用してすべてのパッケージを更新したところ、このエラーが発生し始めました。

ファイルまたはアセンブリ 'Newtonsoft.Json、Version = 6.0.0.0、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed'またはその依存関係の1つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)

私のパッケージ構成は:

<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />

Web.configには、次のコードが含まれています。

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

Newtonsoft.Jsonのリファレンスのプロパティ

enter image description here

同様の質問からの回答によると、私は以下を試しました:

  • Update-Package –reinstall Newtonsoft.Jsonを使用したパッケージの再インストール
  • Web.configNewtonsoft.JsonからdependentAssembly構成を削除しています
  • newVersiondependentAssembly6.0.0.0および7.0.0.0に変更します。そうすることで、新しいエラーが発生しました。
  • Get-Project -All | Add-BindingRedirectも試してみました。 newVersionNewtonsoft.Jsonから4.5.0.0に変更します。しかし、問題は未解決のままです。

これの修正を手伝ってください。

11
shashwat

これは古いことはわかっていますが、同じ問題に遭遇しました。私の問題は、ソリューション内の複数のプロジェクトがNewtonsoft.Jsonを使用していたことですが、一部は異なるバージョンのものでした。私はそれらすべてを最新のもの(タイプすると9.0.1)に更新し、問題は解消しました。

とにかく...まだこの問題に対処している場合は、ソリューションのすべてのプロジェクトでパッケージを更新してください。

HTH

14
Casey Crookston

上記の多く(および他のいくつかの投稿)を試した後、影響を受けるプロジェクトから以下のすべてをパッケージマネージャーでアンインストールしました。

Microsoft.AspNet.WebApi
Microsoft.AspNet.Client
Microsoft.AspNet.Core
Microsoft.AspNet.WebHost
Newtonsoft.Json

次に、.Client、.Core、.WebHost、.Jsonを自動インストールするMicrosoft.AspNet.WebApiを再インストールしました。

2
Kenmeister

MVCプロジェクトにNewtonsoft参照を追加すると、問題が解決します。

2
Zafar

自分でこのエラーが発生し、最初にUpdate-Package –reinstall Newtonsoft.Json -IncludePrereleaseを使用しましたが、機能しませんでした。次にInstall-Package Newtonsoft.Jsonを使用しました。動いた。

1
samira riazati

Update-Package Newtonsoft.Json -Reinstallを実行します

4.5バージョンへの参照が削除され、package.configで参照されている新しいバージョンが再インストールされます。また、バインディングリダイレクトも更新されます。これは次のようになります。

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

質問で既にこれを試したと言ったので、first手動で既存の参照を削除してみてください。また、ファイルがディスク上で読み取り専用でないこと、またはソース管理によってロックされていないことを確認することもできます。

1

プロジェクトリファレンスの「Newtonsoft.Json」バージョンを確認してください。そのバージョンをWeb設定に追加します。それが動作します。例:Webconfigは次のようになります。

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

Referencesのバージョンが「9.0.0.0」の場合は、次のように変更します。

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

私の場合、次のコードはソリューションのローカルデバッグバージョンに存在しましたが、ライブサーバーバージョンのコードには存在しませんでした。サーバーのWeb.configファイルにコードを追加すると、問題が解決しました。

<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
    <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
  </dependentAssembly>
</assemblyBinding>
0
Colin

パッケージマネージャーコンソールで次のコマンドを実行します。

PM> Install-Package Newtonsoft.Json -Version 6.0.1
0
codeWorm
  1. VSソリューションエクスプローラーで、Newtonsoft.Json参照を削除します。
  2. Newtonsoftバイナリファイルで6.0バイナリファイルをダウンロードします ここ
  3. ファイルを抽出する
  4. Newtonsoftライブラリを手動で追加します。 Visual Studioで[参照]を右クリックし、[参照の追加]を選択します。
  5. 参照をクリックします
  6. Net45で抽出されたファイルに移動し、Newtonsoft.Json.dllを選択します
  7. それが機能しない場合は、手順全体をもう一度実行して、代わりにNet40を使用してみてください。
0
Ronald Ramos

以下のように設定を変更します。

0
Ash18