検索後に試したこと
web.Configでは、古いバージョンにバインディングを設定します。
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.1.0" />
</dependentAssembly>
私の.csprojファイルを編集して、Newtonsoftの参照が1つだけであることを確認します。
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
<Private>True</Private>
</Reference>
Newtonsoft.Json.dllごとにコンピュータを検索し、6.0.1以外のすべてのバージョンを削除して、一時フォルダの内容を削除します。
Nugetマネージャコンソールでパッケージを修復/再インストールします
構築には成功しますが、サイトに行くとエラーになります。
_編集_
さて、それで私はすべてのnugetパッケージのように再インストールしようとしました、そしてそれはnewtonsoft.json.dllの4.5バージョンを戻したようですが、私は同じエラーを得ています。私のプロジェクトのTarget freameworkは.NET 4.5.1で、これが私が今手に入れているスタックトレースです。
'/'アプリケーションでサーバーエラーが発生しました。
ファイルまたはアセンブリ 'Newtonsoft.Json'またはその依存関係の1つをロードできませんでした。見つかった議会のマニフェスト定義が議会の参照と一致しません。 (HRESULTからの例外:0x80131040)
説明:現在のWeb要求の実行中に未処理の例外が発生しました。エラーとコードのどこで発生したかの詳細については、スタックトレースを確認してください。
例外の詳細:System.IO.FileLoadException:ファイルまたはアセンブリ 'Newtonsoft.Json'またはその依存関係の1つを読み込めませんでした。見つかった議会のマニフェスト定義が議会の参照と一致しません。 (HRESULTからの例外:0x80131040)
ソースエラー:
現在のWeb要求の実行中に未処理の例外が発生しました。例外の発生源と場所に関する情報は、以下の例外スタックトレースを使用して識別できます。
アセンブリロードトレース:アセンブリ 'Newtonsoft.Json'をロードできなかった理由を特定するために、次の情報が役立ちます。
===バインド前の状態情報=== LOG:DisplayName = Newtonsoft.Json(Partial)WRN:アセンブリに部分的なバインディング情報が提供されました。WRN:アセンブリ名:Newtonsoft.Json |ドメインID:2 WRN:アセンブリ表示名の一部しか指定されていない場合、部分的なバインドが発生します。 WRN:これは、バインダーが間違ったアセンブリを読み込むのを引き起こす可能性があります。 WRN:アセンブリに対して完全に指定されたテキストIDを提供することをお勧めします。WRN:これは、単純な名前、バージョン、カルチャ、および公開キートークンで構成されています。 WRN:この問題の詳細および一般的な解決策については、ホワイトペーパー http://go.Microsoft.com/fwlink/?LinkId = 109270 を参照してください。 LOG:Appbase =ファイル:/// c:/ users/user/documents/visual studio 2013 /プロジェクト/ foo/bar/LOG:初期PrivatePath = c:\ users\user\documents\visual studio 2013\Projects\foo\bar\bin呼び出し元アセンブリ:(不明) === LOG:このバインドはデフォルトのロードコンテキストで始まります。 LOG:アプリケーション設定ファイルの使用:c:¥users¥user¥documents¥visual studio 2013¥Projects¥foo¥bar¥web.config LOG:ホスト設定ファイルの使用:C:¥Users¥user¥Documents¥IISExpress¥config¥aspnet .config LOG:C:¥Windows¥Microsoft.NET¥Framework¥v4.0.30319¥config¥machine.configからマシン設定ファイルを使用しています。 LOG:現時点ではポリシーが参照に適用されていません(プライベート、カスタム、部分的、またはロケーションベースのアセンブリバインド)。 LOG:新しいURLファイルをダウンロードしようとしています:/// C:/ Users/user/AppData/Local/Temp/1 /一時ASP.NETファイル/ root/48686d37/9d7a6572/Newtonsoft.Json.DLL。 LOG:新しいURLファイルをダウンロードしようとしています:/// C:/ Users/user/AppData/Local/Temp/1 /一時ASP.NETファイル/ root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL。 LOG:新しいURLファイルをダウンロードしようとしています:/// c:/ users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL。 LOG:アプリケーション設定ファイルの使用:c:¥users¥user¥documents¥visual studio 2013¥Projects¥foo¥bar¥web.config LOG:ホスト設定ファイルの使用:C:¥Users¥user¥Documents¥IISExpress¥config¥aspnet .config LOG:C:¥Windows¥Microsoft.NET¥Framework¥v4.0.30319¥config¥machine.configからマシン設定ファイルを使用しています。 LOG:リダイレクトがアプリケーション構成ファイルに見つかりました:4.5.0.0が6.0.1.0にリダイレクトされました。 LOG:ポリシー後の参照先:Newtonsoft.Json、バージョン= 6.0.1.0、文化=中立、PublicKeyToken = 30ad4fe6b2a6aeedログ:新しいURLファイルのダウンロードを試みています:/// C:/ Users/user/AppData/Local/Temp/1 /一時ASP.NETファイル/ root/48686d37/9d7a6572/Newtonsoft.Json.DLL。 LOG:新しいURLファイルをダウンロードしようとしています:/// C:/ Users/user/AppData/Local/Temp/1 /一時ASP.NETファイル/ root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL。 LOG:新しいURLファイルをダウンロードしようとしています:/// c:/ users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL。 WRN:アセンブリ名を比較すると、不一致が発生しました。メジャーバージョンエラー:アセンブリのセットアップを完了できませんでした(hr = 0x80131040)。プロービングは終了しました。
スタックトレース:
[FileLoadException:ファイルまたはアセンブリ 'Newtonsoft.Json'またはその依存関係の1つをロードできませんでした。見つかった議会のマニフェスト定義が議会の参照と一致しません。 (HRESULTからの例外:0x80131040)]
[FileLoadException:ファイルまたはアセンブリ 'Newtonsoft.Json、バージョン= 6.0.1.0、カルチャ=ニュートラル、PublicKeyToken = 30ad4fe6b2a6aeed'、またはその依存関係の1つをロードできませんでした。見つかった議会のマニフェスト定義が議会の参照と一致しません。 (HRESULTからの例外:0x80131040)] System.Reflection.RuntimeAssembly._nLoad(のAssemblyNameファイル名、文字コードベース、証拠assemblySecurity、RuntimeAssembly locationHint、StackCrawlMark&stackMark、のIntPtr pPrivHostBinder、ブールthrowOnFileNotFound、ブールforIntrospection、ブールsuppressSecurityChecks)+0 System.Reflection.RuntimeAssembly .nLoad(AssemblyName fileName、String codeBase、Evidence assemblySecurity、RuntimeAssembly locationHint、StackPrawpPrivHostBinder、Boolean throwOnFileNotFound、Boolean forIntrospection、Boolean suppressSecurityChecks)+34 System.Reflection.RuntimeAssembly.RequestAssemblyAssemblyAssemblyAssessionAssemblyAssemblyAssessionAssemblyAssessionAssessionAssessionAssessionAssessionAssessionAssessionAssemblyAssessionAssessionとアセンブリの読み取り専用アセンブリのアセンブリとアセンブリの読み取り専用アセンブリとアセンブリのアセンブリとアセンブリのアセンブリングstackMark、IntPtr、pPrivHostBinder、Boolean throwOnFileNotFound、Boolean forIntrospection、Boolean suppressSecurityChecks)+152 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString、Evidence assemblySecurity、StackCrawlMark&stackMa) rk、IntPtr pPrivHostBinder、Boolean forIntrospection)+77 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString、エビデンスassemblySecurity、StackCrawlMark&stackMark、Boolean forIntrospection)+16 System.Reflection.Assembly.Load(String assemblyString)+28 System.Reflection.Road(String assemblyString)+28 .CompilationSection.LoadAssemblyHelper(String assemblyName、Boolean starDirective)+38
[ConfigurationErrorsException:ファイルまたはアセンブリ 'Newtonsoft.Json、バージョン= 6.0.1.0、カルチャ=ニュートラル、PublicKeyToken = 30ad4fe6b2a6aeed'、またはその依存関係の1つを読み込めませんでした。見つかった議会のマニフェスト定義が議会の参照と一致しません。 (HRESULTからの例外:0x80131040)] System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName、Boolean starDirective)+752 System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory()+218 System.Web.Configuration.Compmbly.Codelication.Windows.ContentListener.Windows.ContentListener.Windows.ContentSelection(); ai)+130 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)+170 System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies()+91 System.Web.Compilation.BuildManager.CallPreStartInitStartInListLishedReader()およびStringListenerList(String)isIdListenerList(String)&StringRequest()&StringLeader();&lt; String&StringList&gt;&lt; StringList&lt; StringListener&StringRequests&StringPath&StringRequest.IndLischedListener()) System.Web.Compilation.BuildManager.ExecutePreAppStart()+153 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager、IApplicationHost appHost、IConfigMapPathFactoryのconfigMapPathFactory、HostingEnvironmentParametersのhostingParameters、PolicyLevelExceptionポリシーレベルのポリシーレベル5)
[HttpException(0x80004005):ファイルまたはアセンブリ 'Newtonsoft.Json、バージョン= 6.0.1.0、カルチャ=ニュートラル、PublicKeyToken = 30ad4fe6b2a6aeed'またはその依存関係の1つを読み込めませんでした。見つかった議会のマニフェスト定義が議会の参照と一致しません。 (HRESULTからの例外:0x80131040)
バージョン情報:Microsoft .NET Frameworkのバージョン:4.0.30319。 ASP.NETバージョン:4.0.30319.18408
さて、私はそれが今うまくいくようになったと思います。私が見つけた最新バージョンではない自分のマシン上のすべてのNewtonsoft.Json.dllを削除し、NuGetに最新バージョンがあることを確認してビルドし、それがbinフォルダー内の最新バージョンであることを確認しました私はweb.configと.csprojに変更を残しました。今、私は別のエラーになっているので、それは動作している必要があります..
これを解決するために、次のコマンドを実行して結果を確認することで、すべてのプロジェクトで同じバージョンが使用されるようにしました。
update-package Newtonsoft.Json -reinstall
そして、最後に私は私のweb.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>
すべてのNewtonsoft.Jsonパッケージを 同じ バージョンにしたい場合は、次のようにバージョンを指定できます。
update-package Newtonsoft.Json -version 6.0.0 -reinstall
私はNewtonsoft.Json v6.0.3を使用していますが、これは私のWeb.configファイルでしなければならなかったことです:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
私は6.0.3を使っていますが、私はnewVersion="6.0.0.0"
を入れなければならないことに注意してください。
私のpackages.configファイルに、私は持っています:
<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
私のコンピューターがすべての場所で同じバージョンであること、そして私のプロジェクトがすべて同じ参照パスを指していることを確認してから、次のことを試しました。私はまた、古いバージョンのバインディングがそれらのものであり、私が持っているdllの現在のバージョンにバインドされていることを確認しました。
私は厳密なフレームワークのある環境で作業していますが、フレームワークチームは異なるDLLを使ってバージョン管理を混乱させることがよくあります。
この問題をどのように修正したかは、ビジュアルスタジオ(2013)内でパッケージマネージャコンソールを実行することでした。そこから私は次のコマンドを実行しました。
update-package Newtonsoft.Json -reinstall
に続く
update-package Newtonsoft.Json
これで私のすべての設定ファイルと関連プロジェクトファイルが更新されました。それらすべてを同じバージョンのdllに強制します。これは、最新版を入手するために再度更新する前の最初のバージョン4.5でした。
私は同じエラーメッセージを持っていました、そして、あなたが言ったように、それは参照されているNewtonsoft.Json.dllの異なるバージョンによるものでした。
私のMVCソリューションの中のいくつかのプロジェクトはそのdllのバージョン4のためにNuGetパッケージを使いました。
それから、私の場合はSalesforce用のNuGetパッケージを追加しました。このパッケージは、Newtonsoft.Jsonバージョン6をプロジェクトの1つへの依存関係として持っています。それが問題の引き金となったのです。
整理するために、私はNuGetパッケージマネージャのアップデートセクションを使用して(ツールメニューまたはソリューションの右クリック)、ソリューション全体でJson.Netパッケージを更新したので、すべてのプロジェクトで同じバージョンになりました。
その後、App Configファイルをチェックして、以下のようにバインディングリダイレクトの行が選択したバージョンになることを確認しました。
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
私はOlegによるステップを試しました、そして、それらは私の同じ状況のために働きました。
ステップ:
パッケージマネージャでupdate-package Newtonsoft.Json -reinstall
を実行します。
隠しファイルの表示とbin
フォルダの削除を有効にして、bin
を削除します。
Visual Studioを閉じて、もう一度開きます。
もう一度プロジェクトを実行してください。大丈夫だと思います!
私のweb.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>
しかしもちろん、あなたがあなたのパッケージマネージャコンソールでこれをすることによってあなたが更新したか、あなたが正しいバージョンを持っていることを確認する必要があります:
update-package Newtonsoft.Json -reinstall
Web.configファイルに以下の行を追加することで問題を解決できます。
<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
実際に私を助けてくれたのは、 Resharperビルド をオフにして、私のプロジェクトでVisualStudio Re-Buildオプションを使用することでした。
私の場合、それはただの問題でした。
Tools -> NuGet Package Manager -> Package Manager Settings -> Clear Cache
TFSフォルダを再マップしたときに問題が発生しました。
理由はわかりませんが、私の場合は、プロジェクトからbinフォルダーを削除しても、古いバージョンのnewtonsoft.jsonをコピーするときに、新しいバージョンのdllをpackagesフォルダーからコピーして、今のところ解決します。
subversionを使っているのなら、プロジェクトを削除してからダウンロードし直してください。
Binフォルダ内のNewtonsoft.json.dllの下位バージョンを削除して解決し、Newtonsoft.json.dll V6.0.0.0を追加して次のweb.config要素を削除しました
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.8"/>
</dependentAssembly>
ツール>> NuGetパッケージマネージャー>>ソリューションの更新のためのパッケージの管理Newtonsoft.Jsonから最新バージョンへのすべてのソリューションの
チェックされたものを含む答えのどれも私のために働かなかった。
解決策ははるかに単純でした。私はまず自分のBUSレイヤーから参照を削除しました。それからプロジェクトからdllを削除し(それが消えていることを確認するため)、次にnuget packegesからJSON.NETを再インストールしました。そして、注意が必要なのは、「電源を切って入れなおす」ことでした。
私はちょうどビジュアルスタジオを再開しました、そしてそこでそれはうまくいきました!
それで、あなたが可能なすべてを試みてもなお問題を解決することができないならば、単にビジュアルスタジオをオフにして、そしてもう一度オンにすることを試みなさい、それは助けるかもしれません。
場合によっては、Bin
およびObj
フォルダを削除すると、この問題が解決されます。
上記のいずれもうまくいかない場合は、次の回答を確認してください。
https://stackoverflow.com/a/12011221/150370
( TL; DR :設定ファイルのconfiguration
タグからxml名前空間を削除します。それ以外の場合、バインドリダイレクトは無視されます)
私はdotnetコアでも同じ問題を抱えていて、NuGetキャッシュをクリアすることでそれを修正することができました。
PowerShellを開き、次のコマンドを入力します。
dotnet nuget locals all --clear
それから私はVisual Studioを閉じて、再びそれを開いて、そしてパッケージマネージャコンソールに以下のコマンドを入力しました:
Update-Package
NuGetは今度はすべてのパッケージを復元し、再びnugetキャッシュを生成するはずです。
その後、私は自分のdotnetコアwebapiをLinuxコンテナで構築して起動することができました。
私はMVC 5プロジェクトを参照していたテストプロジェクトで同じ問題を抱えていました。これは、MVC 5プロジェクトとマージした後に起こりました。 Andreの回答で説明されているように、 here のようにVisual Studio 2012のアップデートをインストールすることで修正しました。
これらのオプションのどれも私のために働きませんでした、結局それはそうでした。
テスト>テスト設定> * .testrunconfig
私は新しい行を追加しなければなりませんでした
<DeploymentItem filename="packages\Newtonsoft.Json.4.5.8\lib\net40\Newtonsoft.Json.dll" />
パスとバージョンがセットアップに適していることを確認してください。
これがこの問題に対する私の解決策です、appconfigかpackageconfigのバージョン番号があなたの参照の参照バージョンと同じであることを確認してください。 こちら
私は別の理由で問題を経験していたので、それを解決しました。デバッグ中は機能していましたが、コピーしても機能しませんでした。ビルドフォルダ内の "exename.config"は削除すると失敗するため
わかったので、ここで答えをこの長いリストに追加するのと、重複した質問を作成するのか...
2019年に.NET Core 3.0(現時点ではプレビュー)を使用してこれを取得している場合、解決策は、すべてのプロジェクトが同じ.NET Coreバージョン(私の場合は3.0)をターゲットにしていることを確認することです。私は2.1をターゲットにしたソリューションに1つのプロジェクトがあり、残りは2.2だったので、おそらく2.2に固執したかもしれません...
私はNewtonsoft.Jsonをどのプロジェクトにもインストールしておらず、当然それらをプロジェクトに追加しても問題は解決しませんでした。
ソリューションに.NET Standardクラスライブラリまたはw/eがある場合、それらは同じバージョンである必要はありませんが、おそらくあなたが行くことができる最新のものでなければなりません。たとえば、.NET Standard 3.0がまだないため、私の.NET Standardクラスライブラリは2.2にあります。
私は全く同じ問題を抱えていて、私のためのVisual Studio 13デフォルトライブラリは4.5でした、それで私は2つの解決策を持っています1つはwebconfigファイルでこれへの参照を取り出します。それは最後の手段であり、うまくいきます。
このエラーメッセージは、この場所に問題があることを示しています/Projects/foo/bar/bin/Newtonsoft.Json.DLL。 DLLはどこにありますか。基本的なプロパティチェックで、4.5.0.0かそれに類似していることがわかりましたので、webconfigを変更して4.5までルックアップし、4.5を使用するようにしました。
私が持っていたので、私はこの問題にぶつかりました:プロジェクトA(デスクトップ.exe)はプロジェクトB(ポータブル.dll)を参照します。 AとBはJSON.Netのバージョンが異なるため、ローダーの競合がありました。 JSON.netのすべてのバージョンを同じものにすると、うまくいきました。 (これは実際には上記の解決策のいくつかが行っていることです - 私はちょうどそれがうまくいく理由を言っています)
私は同じ問題を抱えていました。私はWeb APIプロジェクトを作成し、それを.net 4.5.1から.net 4.6.1にアップグレードしました。 IDEを閉じ、IISを停止し、C:¥Windows¥Microsoft.NET¥Framework¥v4.0.30319¥Temporary ASP.NET Files¥dirの内容を削除すると問題が解決しました。
HTH
これに対する私の問題を解決した解決策は
goto references-> Newtonsoft.jsonを右クリック - goto propertiesとバージョンをチェック
これと同じバージョンが
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-YourDllVersion" newVersion="YourDllVersion" />
</dependentAssembly>
私は最近これと以前のプロジェクトで苦労しました。
私は実際にbinフォルダにあるDLLのバージョンを確認した後、問題を突き止めました。
依存ライブラリをdllライブラリフォルダからbinフォルダにコピーするビルド後スクリプトを作成しました。 nuget前日からの一般的な設定。
そのため、ビルド後のスクリプトをビルドするたびに、正しいバージョンのJson.netが古いバージョンのスクリプトに置き換えられました。
私の場合、エラーのメッセージは " バージョン6.0.0 "でしたが、このバージョンはインストールできませんので、私は自分のプロジェクトで " 6.0.1バージョン "をインストールして解決しました問題。
install-package Newtonsoft.Json -Version 6.0.1 -Project MyProjectX
この問題は、NuGetパッケージを更新したり、プロジェクトに対して「クリーン」を実行しても解決しませんでした。手動で "obj"フォルダをクリアすることで解決しました。
簡単なステップ(1)パッケージマネージャで「update-package Newtonsoft.Json -reinstall」を実行してください。
(2)隠しファイルの表示とbinフォルダの削除を有効にして、binを削除します。
(3)ビジュアルスタジオを閉じて、もう一度開きます。
(4)もう一度プロジェクトを実行します。大丈夫だと思います
私の問題はweb.configのこのコードのnewVersionが正しくなかったことでした
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.1.0" />
あなたはnugetパッケージマネージャでNewtonsoft.Jsonパッケージのバージョンを見て、それを使うことができます。