web-dev-qa-db-ja.com

ファイルまたはアセンブリ「Newtonsoft.Json、Version = 9.0.0.0、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed」またはその依存関係の1つをロードできませんでした

VS 2013を使用してWindows 8.1上で以前にビルドされたWinJSプロジェクトがあります。

最近、空のJavascript Universal windows 10プロジェクトを作成してこのプロジェクトをUniversal Windows 10にアップグレードし、古いプロジェクトからすべてのファイルを追加しました。

WindowsランタイムコンポーネントとSQLiteのクラスライブラリもあります。

ユニバーサルWindowsランタイムコンポーネントとユニバーサルクラスライブラリを追加し、すべてのファイルを古いプロジェクトからそれぞれの場所にコピーしました。

どういうわけか私はすべてのビルドエラーを削除することができました。

必要なすべてのSQLite-net、ユニバーサルWindowsプラットフォーム用のSQLite、Newtonsoftなどをインストールしました。

しかし、アプリケーションを実行してWindowsランタイムコンポーネントでネイティブメソッドを呼び出すと、次のような奇妙なエラーが発生します。

An exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.ni.dll but was not handled in user code.

Additional information: Could not load file or Assembly 'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified.

enter image description here

Newtonsoftバージョン:9.0.1

Windowsランタイムコンポーネントの私のproject.jsonファイルには次のものがあります。

  {
  "dependencies": {
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0",
    "Newtonsoft.Json": "9.0.1"
  },
  "frameworks": {
    "uap10.0": {}
  },
  "runtimes": {
    "win10-arm": {},
    "win10-arm-aot": {},
    "win10-x86": {},
    "win10-x86-aot": {},
    "win10-x64": {},
    "win10-x64-aot": {}
  }
}

私のVisual Studioバージョンは次のとおりです。

enter image description here

Newtonsoft jsonをすべて削除して再インストールしようとしましたが、うまくいきませんでした。

27

基本的なデモを作成し、この問題を再現しました。 WinRTコンポーネントがNewton.Jsonの正しいアセンブリを見つけられなかったようです。一時的に回避策は、Newtonsoft.json.dllファイルを手動で追加することです。次の手順でこれを実現できます。

  1. [参照設定]-> [参照の追加]-> [参照...]-> [C:\ Users\.nuget\packages\Newtonsoft.Json\9.0.1\lib\portable-net45 + wp80 + win8 + wpa81\Newtonsoft.jsonを検索します。 dll->「追加」ボタンをクリックします。

  2. ランタイムコンポーネントプロジェクトをリビルドして実行します。このエラーはなくなるはずです。

28

Newtonsoft.JsonをスタートアッププロジェクトのNuGetに追加して、この問題を解決しました。

21
Jfly

私も同じ問題を抱えていました。これを解決するために、Newtonsoft.Jsonのバージョンが更新された場合(おそらくしない)、プロジェクトのReferencesをチェックしてください。次に、それを削除して、Web.configまたはApp.configのいずれかの要素をチェックインします-dependentAssemblyが次のように更新されました。

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

その後、プロジェクトを再ビルドdllは正しいバージョンに置き換えられます)

15
Richard Lee

少し前に、新しいASP.NET Coreアプリケーションでも同様の問題が発生しました。参照されたライブラリの1つが、9.0.0.0より前のバージョンのNewtonsoft.Jsonを使用していたことが判明しました。そのため、そのライブラリのバージョンをアップグレードし、問題は解決しました。ここで同じことができるかどうかわからない

6
hbulens

Visual Studio 2013 Update 2を使用しています。私の場合、1つのソリューションにWebプロジェクトとWeb Apiプロジェクト、ユニットテストプロジェクト、および他のクラスライブラリがあります。

私は問題を解決するために数日を費やしました。以下は、私が見つけた段階的な解決策です。

  1. Web Apiプロジェクトを右クリックします。 「スタートアッププロジェクトとして設定」を選択します
  2. Web Apiプロジェクトを右クリックします。 プロパティ(Alt + Enter)に移動します。
  3. 左側のメニューの[アプリケーション]タブで、[アプリケーション]を選択します
  4. 検索ターゲットフレームワーク4.5.1に変更して保存します。ただし、「エラーリスト」ウィンドウにエラーが表示されています。再構築後、エラーはありません。
  5. 削除ソリューションからのすべてのNewtonsoft.JsonパックPackage Manager Consoleからのクエリを使用して取得します[表示]> [他のウィンドウ]> [パッケージマネージャーコンソール])。

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

  1. 再インストールNewtonsoft.Json fromPackage Manager Console

インストールパッケージnewtonsoft.json

  1. Visual Studio 2013の最新の更新プログラムがある場合、この問題は発生しない可能性があります。 Update 2を使用しているため、Newtonsoft.Jsonをインストールしようとしたときに、次のエラーが発生しました。

「Newtonsoft.Json 10.0.3」パッケージにはNuGetクライアントバージョン「2.12」以上が必要ですが、現在のNuGetバージョンiは「2.8.50313.46」です

  1. この問題を解決するには、Package Manager Consoleを更新する必要があります。に行きました

[ツール]> [拡張機能と更新...]左ペインで..更新> Visual Studio Galleryを選択します。

  1. 更新NuGetパッケージマネージャー拡張機能)その後の手順に従ってください。

  2. Visual Studioは、その後にrestartを取ります。

  3. 手順6を実行もう一度。

インストール後、packages.configが次の行で追加されます

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

インストール後、web.configが以下の行で追加されます

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

他にエラーがなければ、正常に実行されます。

6
Kuntal Ghosh

Newtonsoft.Json -Version GO to Tools => NuGet Package Manager => Package Manager Consoleと入力して、Package Manager ConsoleウィンドウにInstall-Package Newtonsoft.Json -Version 12.0.2と入力する必要があります。

2
FARHAN KHAN

ASP.NET Coreプロジェクトでも同様の問題が発生しました。 bin/debug-folderの.configファイルが次のように生成されます:

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

2番目のbindingRedirectを手動でこれに変更すると、動作します:

<bindingRedirect oldVersion="9.0.0.0" newVersion="10.0.0.0" />

なぜこれが起こるのか分かりません。

.Net Core SDK 1.0.0-preview2-1-003177でVisual Studio 2015を使用しています。

2
HGHansen

AutoCADは私のものを乗っ取ったと思う。私のために働いた解決策はそれをハイジャックすることでした。これを https://forums.autodesk.com/t5/navisworks-api/could-not-load-file-or-Assembly-newtonsoft-json/td-p/7028055?profile.language=から取得しましたen -はい、インターネットは神秘的な方法で機能します。

// in your initilizer ...
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);

.....

private Assembly MyResolveEventHandler(object sender, ResolveEventArgs args)
{
    if (args.Name.Contains("Newtonsoft.Json"))
    {
        string assemblyFileName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\Newtonsoft.Json.dll";
        return Assembly.LoadFrom(assemblyFileName);
    }
    else
        return null;
}
1
CAD bloke

構成ファイル(web.config)にNewtonsoft.Jsonのバインディングリダイレクト構成を追加すると、問題が解決します。

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

あなたの場合のNewtonsoft.Jsonのバージョンは9であるため、構成内のバージョンを適切に更新します。

この構成が機能しない場合は、構成タグの名前空間(xmlns)が正しいことを確認するか、名前空間を完全に削除してください。

アセンブリバインディングリダイレクトは機能しません

1
Varun Nair

この問題を解決するのに1日かかりました。解決策は、web.configファイルでバージョン11.0.0を使用するようにWebサービスを強制することです。

<runtime>      
  <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
  </dependentAssembly>
</assemblyBinding>
1
Sabri Meviş

私の場合、newtonバージョンを更新したときに、マシン上の構成ファイルweb.configに問題があったため、VSは新しいバージョンを指すようにweb.configファイルを自動的に修正しました。実稼働環境にアップロードしたとき、既存のweb.configは古いバージョンを指していました。

Web.configを更新すると、再び機能し始めました。

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

「Newtonsoft」バージョンを更新することにより、問題を解決することが可能です。

Visual Studio 2015では、[ソリューション]を右クリックして[ソリューションのNugetパッケージの管理]を選択し、[Newtonsoft]を検索して最新バージョンを選択し、[更新]をクリックします。

0
Filipe Rosset

パッケージマネージャーを使用して、Newton.Jsonのバージョン(古いバージョン= 9.0.0.0から新しいバージョン11.0.0.0)を更新することで、asp.net mvcプロジェクトでこの問題を解決できました。

0
David Zagi