まず、それは単なる複製ではありません。以下の質問からの回答はどれも私にとってはうまくいきません。
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
のリファレンスのプロパティ
同様の質問からの回答によると、私は以下を試しました:
Update-Package –reinstall Newtonsoft.Json
を使用したパッケージの再インストールWeb.config
のNewtonsoft.Json
からdependentAssembly
構成を削除していますnewVersion
のdependentAssembly
を6.0.0.0
および7.0.0.0
に変更します。そうすることで、新しいエラーが発生しました。Get-Project -All | Add-BindingRedirect
も試してみました。 newVersion
をNewtonsoft.Json
から4.5.0.0
に変更します。しかし、問題は未解決のままです。これの修正を手伝ってください。
これは古いことはわかっていますが、同じ問題に遭遇しました。私の問題は、ソリューション内の複数のプロジェクトがNewtonsoft.Jsonを使用していたことですが、一部は異なるバージョンのものでした。私はそれらすべてを最新のもの(タイプすると9.0.1)に更新し、問題は解消しました。
とにかく...まだこの問題に対処している場合は、ソリューションのすべてのプロジェクトでパッケージを更新してください。
HTH
上記の多く(および他のいくつかの投稿)を試した後、影響を受けるプロジェクトから以下のすべてをパッケージマネージャーでアンインストールしました。
Microsoft.AspNet.WebApi
Microsoft.AspNet.Client
Microsoft.AspNet.Core
Microsoft.AspNet.WebHost
Newtonsoft.Json
次に、.Client、.Core、.WebHost、.Jsonを自動インストールするMicrosoft.AspNet.WebApiを再インストールしました。
MVCプロジェクトにNewtonsoft参照を追加すると、問題が解決します。
自分でこのエラーが発生し、最初にUpdate-Package –reinstall Newtonsoft.Json -IncludePrerelease
を使用しましたが、機能しませんでした。次にInstall-Package Newtonsoft.Json
を使用しました。動いた。
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手動で既存の参照を削除してみてください。また、ファイルがディスク上で読み取り専用でないこと、またはソース管理によってロックされていないことを確認することもできます。
プロジェクトリファレンスの「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>
私の場合、次のコードはソリューションのローカルデバッグバージョンに存在しましたが、ライブサーバーバージョンのコードには存在しませんでした。サーバーの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>
パッケージマネージャーコンソールで次のコマンドを実行します。
PM> Install-Package Newtonsoft.Json -Version 6.0.1
以下のように設定を変更します。