web-dev-qa-db-ja.com

ファイルまたははアセンブリを読みませんでした 'Newtonsoft.Json、バージョン= 4.5.0.0、カルチャ=ニュース、PublicKeyToken = 30ad4fe6b2a6aeed'

エラーになりました

System.IO.FileLoadException:ファイルまたはアセンブリ 'Newtonsoft.Json、バージョン= 4.5.0.0、カルチャ=ニュートラル、PublicKeyToken = 30ad4fe6b2a6aeed'、またはその依存関係の1つをロードできませんでした。見つかった議会のマニフェスト定義が議会の参照と一致しません。 (HRESULTからの例外:0x80131040)

私のCIビルド用

私が試した解決策

<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>

それはまた働かなかった

213
user3437755

パッケージマネージャコンソールで、Update-Package –reinstall Newtonsoft.Jsonを実行します。

UPDATE

私はもともとこれをコメントとして投稿しましたが@OwenBlackerが示唆したようにここにそれを置くだけです:

それでもこれを実行してもエラーが発生する場合は、最終的に私にうまくいったのは私の<dependentAssembly>ファイルからJson.Netの.configセクションを削除したことです。再インストールすると、再インストールされない場合は元に戻し、削除する必要があるようです。パッケージ自体に通常の解決策があるまで、この手動の手順は必須です。

注:これを実行する前に、以下のコメントを読んでください。

下記のRenéのコメントによればBE AWAREはあなたのソリューションのすべてのプロジェクトで答えに投稿されたコマンドがパッケージを再インストールするということです。したがって、複数のプロジェクトでNewtonsoft.Jsonパッケージを使用していて、異なるバージョンを使用している場合は、上記のコマンドを実行するだけでは望ましくない結果になる可能性があります。

222
bobah75

Newtonsoft.Json v4.5バージョンで問題がある方は、web.configまたはapp.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-6.0.0.0" newVersion="6.0.0.0"/>
       </dependentAssembly>
    </assemblyBinding>
</runtime>

_ important _ :設定ファイルのconfigurationタグにネームスペース属性がないことを確認します( https://stackoverflow.com/a/12011221/150370 で推奨されているように)。そうでなければ、assemblyBindingタグは無視されます。

116
ZeroDotNet

重要な点は、設定ファイルで正しいバージョンを参照することです。

ステップ;

1 - プロジェクト参照プロパティ内のNewtonsoft.Json.dllのバージョンは、パッケージフォルダ内のバージョンです(例:mineは7.0.1、参照バージョンは7.0.0.0)。

2 - 例外であなたからプロジェクトが期待するものを見てください

3-それがあるべきであるようにあなたの設定ファイルに依存アセンブリを追加してください..

  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json"  publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0"/>
  </dependentAssembly>
38
Kadir Can

私はここに提示されている解決策(アンインストール、再インストール、参照の削除、bindingRedirectsの作成など)のいずれにも失敗しました。以前のバージョンのNewtonsoftに戻る必要がありました。バージョン5.0.6は以前に動作していたので、私はそれを試しました。パッケージコンソールでこれら2つのコマンドを入力する必要がありました。

uninstall-package newtonsoft.json -force

install-package newtonsoft.json -version "5.0.6"

最初のコマンドの-forceオプションは、アンインストールを強制するために必要です。他のアセンブリとの依存関係はそれなしでアンインストールを防ぎます。

24
Karl Hoaglund

このバインディングリダイレクトを.configファイルに追加することで問題を解決しました。

<runtime>
    . . . 
    <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
                culture="neutral" />
            <bindingRedirect oldVersion="4.5.0.0" newVersion="6.0.0.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

エラーメッセージはバージョン4.5.0.0、Newtonsoft.Jsonの現在のバージョンが見つからないことについて不平を言うのでリダイレクトは4.5から6.0へ行くべきであり、その逆ではありません

22
MiMo

間違ったターゲットを指していると思います。6.0ではなく4.5に変更してください。

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

これでうまくいくはずです。

19
BrunoLM

私はこのイライラする問題を解決するために数日を費やしました。私はウェブ上で見つけることができるほとんどすべてを試しました。最後に、私はこのエラーが(私の場合のように)1つの解決策の異なる.Netプロジェクトバージョン(4.5と4.5.1)によって引き起こされる可能性があることを見つけました。以下の手順で修正しました。

  1. ソリューションに含まれているすべてのプロジェクトの.NETバージョンを再確認してください。プロジェクトを右クリックしてPropertiesに行きます。

enter image description here

  1. 可能であれば、 all projectsに同じ.NETバージョンを設定してください。そうでない場合は、少なくともスタートアッププロジェクトを変更してみてください(私にとってはこれが問題の原因となっていたものです)。

  2. ソリューションからすべてのNewtonsoft.Jsonパックを削除します。

    uninstall-package newtonsoft.json -force

  3. 以下のように、すべてのNewtonsoft.Jsonファイル内のすべてのpackages.configバージョンを更新します。

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

  4. 次のコマンドを使用して、「Package Managerコンソール」からNewtonsoft.Jsonを再インストールします。

    install-package newtonsoft.json

  5. ソリューションを再構築する

(オプション)7.スタートアッププロジェクトを変更した場合は、もう一度返します。

18
ekostadinov
uninstall-package newtonsoft.json -force
install-package newtonsoft.json

私のためにトリックをしました:)

11
Chiranjeeb

WebApi RESTサービスクライアントを作成していたので、私の場合は、次のようにしてSystem.Net.Httpパッケージを手動で追加したときに、Add Referenceを使用して手動でSystem.Net.Http.FormattingおよびMicrosoft.AspNet.WebApi.ClientアセンブリにReferencesを追加しました。 ヌゲットまた別の質問に対するこの答え を参照してください。

9
mschwaig

プロジェクトの参照からNewtonsoft.Jsonアセンブリを削除して、もう一度追加します。あなたはおそらく、誤ってdllを削除または交換したでしょう。

9
helb

あなたが同じソリューションと他の1つのチェックのライブラリで複数のプロジェクトを使用している場合、すべてのプロジェクトはNewtonsoft.Jsonの同じバージョンを持っています

9
Fatih

ソリューションには2つの異なるバージョンのJSON.NETライブラリがあります。これを解決するには、それらを最新バージョンにアップグレードする必要があります。次の手順を実行します:

1 - ソリューションエクスプローラー2 - ソリューション名を右クリック3 - ソリューション用のNugetパッケージの管理を選択4 - メニューからアップデートを選択5 - JSON.NETパッケージを更新

これで問題は解決します。

link: ファイルまたはアセンブリ 'Newtonsoft.Json、バージョン= 7.0.0.0、カルチャ=ニュートラル、PublicKeyToken = 30ad4fe6b2a6aeed'、またはその依存関係の1つを読み込めませんでした

8
mohammad

正しいバージョンをCIマシンにデプロイする

これは、アセンブリローダーが、Newtonsoft.Jsonアセンブリの異なるバージョンを見つけたことを示しています。これは、プロジェクトで作成した参照と一致しません。アセンブリを正しくロードするには、アセンブリコードをコンパイル済みコードと並べて配置するか、正しいバージョンのアセンブリをインストール先のマシン(GACなど)にインストールする必要があります。

代替案:設定が正しいファイルにあることを確認してください

現在の解決策を維持し、異なるバージョンのアセンブリをロードする場合は、投稿した設定が正しい.configファイルにあることを確認してください。 xpto.dll.configがないことを忘れないでください、アプリケーションによってロードされるDLLは常に実行中のアプリケーションの設定ファイルを使用します。

6
Miguel Angelo

通常、バインディングリダイレクトを追加することでこの問題は解決されるはずですが、私にはうまくいきませんでした。私の頭を壁にぶつけた数時間後、私はweb.configでxmlns属性が問題を引き起こしていることに気付きました。 Web.configの構成ノードからxmlns属性を削除した後、バインディングリダイレクトは期待どおりに機能しました。

http://www.davepaquette.com/archive/2014/10/02/could-not-load-file-or-Assembly-newtonsoft-json-version4-5-0-0.aspx

6
David Paquette
<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json"
        publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0"/>
  </dependentAssembly>
</assemblyBinding>

私のために動作します....ちょうどあなたが使用しているバージョンをnewVersionに入れてください。すなわち、(newVersion = "7.0.0.0")

5
ali

解決策を閉じる。

テキストエディタでpackages.config*.csprojを開き、Newtonsoft.Jsonがある行をすべて削除します。

例:
<Reference Include="Newtonsoft.Json,Version=9.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net40\Newtonsoft.Json.dll</HintPath> <Private>True</Private> </Reference>

または<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net40" />

再度ソリューションを開いてInstall-Package Newtonsoft.JsonのNewtonsoft.Jsonを再インストールしてください

それは私のために働きます。

サーバーのweb.configファイルを更新する必要があります。新規インストールNewtonSoftがこのコードを含めてこのファイルを更新するとき

<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
  <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>
</assemblyBinding>
4
oaamados

私たちはあなたが言ったのとまったく同じ問題を抱えていました。私たちはCIを通してテストを実行するためにnunitを使用しています、そして私たちは実行するためのテストdllフィクスチャのリストを記述するtests.nunitと呼ばれるファイルを実行するnunitを持っています。

それぞれのテストフィクスチャはそれ自身の設定ファイルを持っていました、しかし "tests.nunit"ファイルを通して実行されるとき、バインディングリダイレクトは無視されるようです。解決策は、バインディングのリダイレクトを "tests.nunit"ファイルの横にある "config.config"という新しい設定ファイルに追加することでした。

4
declyne

Newtonsoft.Json Newtonsoftプロパティのバージョンを確認するだけ

それならあなたはあなたのWeb設定にそのバージョンを追加する必要があります(私の場合8.0.0.0) Web設定

私はバージョン7.0.0.0と全く同じ問題を抱えていました、そして私の問題を引き起こしているlibは Microsoft.Rest.ClientRuntime 何らかの方法で正しい依存関係にもかかわらずNewtonsoft.jsonの間違ったバージョン(6.0.0.0)を参照していましたナゲットの管理(newtonsoft.json(7.0.0.0)の正しいバージョンがインストールされている)。

私は設定ファイルで6.0.0.0から7.0.0.0への(Kadir Canからの)上記のリダイレクションを適用することによってこれを解決しました:

<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0" />

---->何も変更せずに数日後、それは同じエラーで再び現れました。私はバージョン6.0.0.0をインストールしました。

3
Lokman Ersoy

私の場合、メインプロジェクトは まだNewtonsoft.Jsonの古いバージョンを参照していました これ以上プロジェクトには存在しません(黄色の感嘆符で示されています)。参照を削除すると問題が解決し、bindingRedirectは必要ありませんでした。

3
IngoB

私は同じ種類の問題を抱えています。そして、私はまた次のようにしてそれを解決しました:TOOLS> NuGet Package Managerに行き、_ Package Manager Console。最後に、以下の2つのコマンドを実行します。

  1. uninstall-package newtonsoft.json -force
  2. install-package newtonsoft.json
3
Masud Shrabon

別の厄介な問題は、要素が他のdependentAssembly要素に対して誤った構成を持つ場合、バインディングリダイレクトが単に黙って失敗する可能性があることです。

各要素の下に要素が1つだけあることを確認してください。

場合によっては、VSがこれを生成します。

  <dependentAssembly>
    <assemblyIdentity ...
    <assemblyIdentity ...
  </dependentAssembly>

の代わりに

  <dependentAssembly>
    <assemblyIdentity ...
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity ...
  </dependentAssembly>

これが問題であることを実感するのに長い時間をかけました!

2
Daniel

.Net 4.5用のNewtonSoft .dllファイルを追加するのを間違えました。

私のメインプロジェクト4.5でしたが、ソリューションに追加プロジェクトを追加したときに奇妙にもそれを.Net 2.0プロジェクトに追加しました...そしてこれにNewtonSoftの4.5 dllを使用しようとしたとき、 "" Newtonsoft.Jsonが見つかりませんでした "エラー。

解決策は(もちろん)この新しいプロジェクトを.Net 2.0から4.5に変更することでした。

2
Mike Gledhill

上に挙げたものは何も役に立ちませんでしたが、実際に修正されたのは次のとおりです。

  1. app.configのすべての依存関係バインディングを削除します (ソリューション内のすべてのapp.configファイルから)
  2. "Package Manager Console" から以下のコマンドを実行してください。

Get-Project -All | Add-BindingRedirect

  1. 再構築

参照: http://blog.myget.org/post/2014/11/27/Could-not-load-file-or-Assembly-NuGet-Assembly-Redirects.aspx

2
valentinvs

私は同じエラーに直面していて何時間もそれに苦労しました。 Newtonsoft.jsonを使用しているWeb APIプロジェクトと、そのWeb APIプロジェクト用の別のUnitTestプロジェクトがありました。単体テストプロジェクトにもNewtonsoft.json参照が必要でした。しかし、リンクを追加すると、上記の例外が発生しました。

私は最終的にユニットテストプロジェクトの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>
2
mukulsharma1146

私の場合は、アセンブリをダウンロードしてプロジェクトへの参照を追加した後、プロジェクトに参照を追加する前にDLLのブロックを解除することでこれを解決しました。

Windowsエクスプローラを使用してDLLの場所を参照し、DLLを右クリックして[プロパティ]を選択します。タブの1つに[ブロック解除]ボタンが表示されたら、参照を追加するとアセンブリが正しく読み込まれます。

2
VorTechS

Nugetを通じてnewtonsoftパッケージを再インストールしても私にはうまくいきませんでした。この問題を回避するには、JsonConvert.DeserializeObjectを手動で呼び出す必要がありました。

私が変更され

HttpResponseMessage response = await client.GetAsync(url));
response.EnsureSuccessStatusCode();
MyObject data = await response.Content.ReadAsAsync<MyObject>();

For

HttpResponseMessage response = await client.GetAsync(url));
response.EnsureSuccessStatusCode();
string jsonStr = await response.Content.ReadAsStringAsync();
MyObject data = JsonConvert.DeserializeObject<MyObject>(jsonStr);
2
Bioupy

プロジェクトを右クリックして[Nugetパッケージの管理]を選択し、検索ボックスに「newtonsoft」と入力して最新バージョンをインストールします。それからあなたのアプリを実行します

2
uche Godfrey

以下のセクションであなたの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-6.0.0.0" newVersion="6.0.0.0"/>
       </dependentAssembly>
    </assemblyBinding>
</runtime>
2
Jaydeep Shil

エラーがローカルで消え、それでもサーバーに表示される場合、私と一緒に動作する解決策はbinフォルダとpackages.configとweb.configを削除してこれらのファイルを再アップロードすることです。

2
Ahmad Alaa

公開トピックに対するもう1つのアドバイス。 [Analyze]を実行した後にエラーが表示されます。プロジェクト設定で何かが変更されました。問題は、

プロジェクト/設定/ビルド/プラットフォームターゲット

"Any CPU"

x86 (または、場合によっては x64 )に戻すことで問題は解決しました。

1
Badiboy

私にとっての問題は、Newtonsoft.Jsonの非推奨バージョンです。再インストールは助けにはならなかった。

Visual Studioで、[ツール] - > [NuGetパッケージの管理]に移動します。更新を選択します。 Newtonsoftを検索します。更新をクリックして最新バージョンをインストールします。

1
spadelives

また、NuGetリストアを使用するCI環境では、部分フォルダをソース管理にチェックインしないようにしてください。デフォルトでは、フォルダをソース管理に追加すると、自動的にアセンブリが除外されます。その上、これはビルド時にnugetパッケージを復元するという全ての目的を無効にします。アセンブリをチェックするか、パッケージフォルダをチェックインしないことでビルドは成功しますが、より良い方法は、不要なパッケージをソース管理にチェックインしないことです。

1
JMiera

私はNugetパッケージをインストールすることでこの問題を解決しました:Microsoft ASP.NET Web API 2.2クライアントライブラリ。これにより、newtonsoft.jsonバージョン6.04がインストールされました。

1
JohnnyBT

ここで多くの答えから離れて、私はそれを追加する何かを見つけました。最初のポイント、dllがGACから参照されていないことを確認してくださいこれから、

Newtonsoft.Jsonのdllを追加/変更している間、時々プロジェクトの* .csprojが変更されないか、変更されたjson dllのバージョンが解決策のcsprojに反映されないでしょう。

だからメモ帳+ +でプロジェクトを開き、Newtonsoft.Jsonを検索し、明示的に古いバージョンから新しいバージョンにJSONの名前を変更してください。

0
Hameed Syed

あなたは参照の中のプロパティからurライブラリのインストールされたバージョンを見つけることができます。私の場合は、8.0.0.0がインストールされていました。エラーはCould not load file or Assembly 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies.を言う

だから私はweb.configの中に手動で以下を追加しなければなりませんでした

  <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="6.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
      </dependentAssembly>
0
Irshu
updating web.config with the following Assembly binding resolved the issue 
<runtime>
    <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">     
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
                culture="neutral" />
        <bindingRedirect oldVersion="4.5.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
0
Subhamay

私も一日かそこらのためにそれに苦労してきた、すべての解決策を試してみました。私を助けたのはapp.configの大文字をチェックすることでした。突然変更した後、publicKeyTokenではなくPublicKeyTokenを使用しました。

0
Igor Be

私の場合、私はフォルダ名Newtonsoft.Json.6.0.7を持っていました

enter image description here

しかし.csprojファイルはフォルダー...\Newtonsoft.Json.6.0.5\...を通るパスを持っていました

enter image description here

.csprojファイルを6.0.7に変更すると問題が解決しました。

0
Alex L