ファイルまたはアセンブリ「Newtonsoft.Json、Version = 4.5.0.0、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed」を読み込めませんでした


233

エラーが発生する

System.IO.FileLoadException:ファイルまたはアセンブリ 'Newtonsoft.Json、Version = 4.5.0.0、Culture = neutral、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>

それもうまくいきませんでした


エラーは、.NETがJson.NETライブラリを見つけられなかったことを意味します。インストールされていますか?
TypeIA 2014年

22
まったく同じ問題-私を狂わせる。解決策を見つけた場合はお知らせください
Dean Chalk

実際、私があなたが試したものを追加すると、問題が解決しました。
h.alex

NuGetパッケージマネージャーの統合オプションを使用して、バージョンがバラバラにならないようにします。
niico

これは私のために働いた唯一のものです:github.com/Redth/PushSharp/issues/361#issuecomment-181387928
RichC

回答:


237

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

更新

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

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

注:これを行う前に、以下のコメントをお読みください。

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


7
これを読んでいるすべての人のために、私はそれを実行しましたが、それでもエラーが発生します。それから私はそれをどういうわけか解決しました:驚くべきことに、私はファイルからJson.Netのセクションを削除しなければなりませんでした。再インストールしていない場合は、再インストールして元に戻し、明らかに削除する必要があります。パッケージ自体に通常の解決策が見つかるまで、この手動の手順は必須だと思います。<dependentAssembly>.config
Ofer Zelig 2014年

@OferZeligあなたはそれを別の回答として投稿する必要があります。そうすることで、賛成票を得ることができます(さらに重要なことに、注目が高まる)。特にそれが私のためにも働いたからです:)
オーウェン・ブラッカー

@OwenBlackerありがとう。しかし、すでにたくさんの答えがあるので、私は迷子になります。そして、この答えは非常に良いです、それがうまくいかない場合、私のコメントはそれを「完了」させます。あのね?元の回答を編集するだけだと思います。自分の担当者を獲得するよりも重要です。
Ofer Zelig 2014

43
回答に投稿されたコマンドは、ソリューション内のすべてのプロジェクトでパッケージを再インストールすることに注意してください。したがって、複数のプロジェクトでNewtonsoft.Jsonパッケージを使用していて、異なるバージョンを使用している場合、上記のコマンドを実行するだけで望ましくない結果が生じる可能性があります。
ルネ14

解決しました!私にとって、1つのプロジェクトにv6がインストールされていました。パッケージマネージャーから再インストールすると、v7になりました。
jv-dev

123

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>

重要configuration設定ファイルのタグに名前空間属性がないことを確認してください(https://stackoverflow.com/a/12011221/150370で提案されています)。それ以外の場合、assemblyBindingタグは無視されます。


3
私にとって、クリーニング後にbinフォルダーのコンテンツを手動で削除すると(空にはなりません)、この回答を適用した後でうまくいきました。
–MikaëlMayer 2014

これをたくさんありがとう!:)
カムロンK. 2015

よく働く!newVersion="6.0.0.0"newVersion="7.0.0.0"
2015

3
名前空間についてのメモ...私はあなたを抱き締めることができます。そのため、バインディングリダイレクトが無視されていることを知らずに、これに何時間も費やしました。
ブライアン、

1
名前空間に関するメモは非常に重要なので、それ自体で答えになる可能性があります。どうもありがとうございました。
beawolf

42

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

手順;

1-プロジェクト参照プロパティでNewtonsoft.Json.dllのバージョンを確認します(パッケージフォルダーのバージョンは何ですか(たとえば、私のバージョンは7.0.1で、参照バージョンは7.0.0.0です))

2-プロジェクトが例外であなたに期待することを見てください(私のものは6.0.0.0です)

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>

申し訳ありませんが、1票しか投票できません(たとえば、私のものは7.0.1で、参照バージョンは7.0.0.0です)。私はもっ​​と.....ありがとうを与えたでしょう:)
Zaker

これでうまくいきました。バージョンを7に更新しましたが、実際にはバージョン8が実行されていたため、newVersionを8.0に変更しました。
キース

8.0.3をインストールしても(nugetパッケージマネージャーで言うように)、参照の下の.dllは8.0.0のままです。そこで、web.configで8.0.0.0に変更しました。昨日私がすべてを公開したときにこれがどのように機能したかをWierdし、今朝はもう機能しません。
CularBytes

24

ここに示した解決策(アンインストール、再インストール、参照の削除、bindingRedirectsの作成など)がまったくうまくいかなかったので、古いバージョンのNewtonsoftに戻る必要がありました。バージョン5.0.6は以前は機能していたので、それを試しました。パッケージコンソールに次の2つのコマンドを入力する必要がありました。

uninstall-package newtonsoft.json -force

install-package newtonsoft.json -version "5.0.6"

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


魅力のように働いた。MVC 4プロジェクトでエラーが発生しました。ほぼネイティブシリアライザーに切り替えました。
Kees C. Bakker、2015年

おかげで、私は-version "5.0.6"を-preに変更する必要がありました:install-package newtonsoft.json -pre
thiago.adriano26 '24

22

このバインディングリダイレクトを.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の現在のバージョンは6.0.0.0なので、リダイレクトは4.5から6.0になり、その逆は行われません。


はい、これで問題は解決しました。JSON.NETが引き起こす問題の量はとても奇妙ですが、いったんそれが夢のマシンになると、ありがとう+1
Piotr Kula

あなたのコードスニペットは、 'assemblyBinding'要素が不足していることを認識させました。ありがとう
リガ

21

あなたは間違ったターゲットを指していると思います、それを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>

これは動作するはずです。


1
Umbraco 7には4.5.0.0が必要だったので、これを使用して稼働させることができました
MagicalArmchair

19

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

  1. ソリューションに含まれるすべてのプロジェクトの.Netバージョンを再確認します。プロジェクトを右クリックしてに移動しPropertiesます。

ここに画像の説明を入力してください

  1. 可能であれば、すべてのプロジェクトに同じ.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. Newtonsoft.Json「Package Manager Console」から次のように再インストールします:

    install-package newtonsoft.json

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

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


12
uninstall-package newtonsoft.json -force
install-package newtonsoft.json

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


1
これは私にとってもトリックでした。自動的にwebconfigファイルが正しいバージョンに更新されました。
Shaakir

私もそうです。
マイクマルター、

11

同じソリューションで複数のプロジェクトを使用し、他の1つのライブラリを使用している場合、すべてのプロジェクトに同じバージョンのNewtonsoft.Jsonが含まれている


これは私の問題でした。上記のすべての応答を行っても結果が得られないので、非常にイライラします。ビルドフォルダーにある.dllのバージョンを確認するために迷惑をかけたとき、ようやくそれがわかりました。

10

Newtonsoft.Jsonアセンブリをプロジェクト参照から削除し、再度追加します。誤ってdllを削除または置き換えた可能性があります。


これは、Xamarin Forms iOSプロジェクトに対して機能し、NuGetパッケージを削除して再度追加しました。ありがとう。
の上院議員

9

私はWebApi RESTサービスクライアントを作成していたので、このエラーは、NuGetを介してパッケージを追加するべきだったときに、参照の追加によって手動でSystem.Net.HttpSystem.Net.Http.Formattingアセンブリに参照を追加したことが原因でした。別の質問に対するこの回答も参照してください。Microsoft.AspNet.WebApi.Client


8

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

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

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

リンク: ファイルまたはアセンブリ 'Newtonsoft.Json、Version = 7.0.0.0、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed'またはその依存関係の1つを読み込めませんでした


この問題を解決する最も簡単で安全な方法。ありがとう@mohammad
deanwilliammills

7

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

これは、アセンブリローダーが、Newtonsoft.Jsonプロジェクトで作成した参照と一致しない別のバージョンのアセンブリを検出したことを示しています。アセンブリを正しく読み込むには、コンパイルしたコードと並べてアセンブリを展開するか、正しいバージョンのアセンブリを対象マシン(つまりGAC)にインストールする必要があります。

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

現在のソリューションを維持し、別のバージョンのアセンブリをロードする場合は、投稿した構成が正しい.configファイルにあることを確認してください。xpto.dll.configアプリケーションによってロードされたDLL には常に、実行中のアプリケーションの構成ファイルが使用されることに注意してください。


6

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

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


5
<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 ie(newVersion = "7.0.0.0")に置くだけ


何回か前にこの問題があり、これは1つのヒットで修正されました。どうもありがとうございました。
GutierrezDev

5

ソリューションを閉じます。

テキストエディターで開いて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" />

ソリューションを再度開き、Newtonsoft.Jsonを再インストールします Install-Package Newtonsoft.Json

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


いつかは機能しますが、次のビルドではこの問題が再び発生しました
Heemanshu Bhalla

更新しなくても問題ありません。ゴミ箱プロジェクトを作成してNewtonsoft.Json.dllをインストールし、それ(ファイルdll)をコピーしてプロジェクト参照に追加します。
チュオンコックカン

4

おっしゃったとおりの問題がありました。CIを介してテストを実行するためにnunitを使用しており、実行するテストdllフィクスチャのリストを記述したtests.nunitというファイルを実行しているnunitがあります。

各テストフィクスチャには独自の構成ファイルがありましたが、「tests.nunit」ファイルを実行すると、バインディングリダイレクトが無視されているようです。解決策は、「tests.nunit」ファイルの横にある新しい構成ファイル「tests.config」にバインディングリダイレクトを追加することでした。


詳しく説明できますか?
KirstieBallance

4

私は同じタイプの問題を抱えています。また、次のようにして問題を解決しました:ツール > NuGetパッケージマネージャーに移動しパッケージマネージャーコンソールを選択します。最後に、次の2つのコマンドを実行します。

  1. アンインストールパッケージnewtonsoft.json -force
  2. インストールパッケージnewtonsoft.json

4

サーバーのweb.configファイルを更新する必要があります。nugetが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>


私の場合、それはまさに私の解決策でした、app.configに入れてください。「アセンブリバージョンは、アプリケーション、発行元ポリシー、またはマシン構成ファイルでリダイレクトできます。」
datps


3

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

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

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


3

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


3

バージョン7.0.0.0でもまったく同じ問題があり、問題の原因となったライブラリは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をインストールし、それを7.0.0.0に更新しました。


私のために働いた。バージョンNewtonsoft Json 7.0.1(ベータ版)をインストールしましたが、生成された設定は6.0.0.0を指しており、これは正しくありませんでした。ありがとう!
Dhanuka777 2015年

2

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

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


2

上記のことは何の助けにもなりませんでしたが、実際に修正されたのは次のとおりです。

  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

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


2

私は同じエラーに直面し、それを何時間も苦労しました。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>

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

古いバージョンのWebAPIを使用しながらNestwonsoft.Jsonをアップグレードしたときにも同じ問題が発生し、これで解決しました。ありがとう!
Gavin.Paolucci.Kleinow

2

もう1つの陰湿な問題は、要素が他のdependentAssembly要素の構成が正しくない場合、バインディングリダイレクトが単に通知なしで失敗する可能性があるように見えることです。

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

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

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

の代わりに

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

これが問題だと気づくのに長い時間かかりました!


2

以下のセクションを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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.