Не удалось загрузить файл или сборку "Newtonsoft.Json, Version = 9.0.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed" или одну из его зависимостей

У меня есть проект WinJS, который ранее был построен в Windows 8.1 с использованием VS 2013.

Недавно я обновил этот проект до Universal Windows 10, создав пустой проект Javascript Universal Windows 10, а затем добавил все мои файлы из старого проекта.

У меня есть компоненты Runtime Windows, а также библиотека классов для SQLite.

Я добавил универсальный компонент Windows Runtime и универсальную библиотеку классов и скопировал все мои файлы из старого проекта в соответствующие места.

Как-то мне удалось удалить все ошибки сборки.

Я установил все необходимые SQLite-net, SQLite для универсальной платформы Windows, Newtonsoft и т.д.

Но когда я запускаю приложение и вызываю метод Native в компоненте Windows Runtime, он дает некоторые странные ошибки, например:

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.

введите описание изображения здесь

Версия Newtonsoft: 9.0.1

Мой файл project.json компонента Windows Runtime имеет следующие значения:

  {
  "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:

введите описание изображения здесь

Я попытался удалить все Newtonsoft json и повторно установить его, но не повезло.

Ответ 1

Я сделал базовую демонстрацию и воспроизвел эту проблему. Похоже, что компонент WinRT не смог найти правильную сборку Newton.Json. Временно обходной путь заключается в том, чтобы вручную добавить файл Newtonsoft.json.dll. Вы можете достичь этого, выполнив следующие шаги:

  • Щелкните правой кнопкой мыши ссылку- > Добавить ссылку- > Обзор...- > Найти C:\Users \.nuget\packages\Newtonsoft.Json\9.0.1\lib\portable-net45 + wp80 + win8 + wpa81\Newtonsoft.json.dll- > Нажмите кнопку "Добавить".

  • Восстановите проект компонента Runtime и запустите его. Эта ошибка не должна быть.

Ответ 2

Я решил эту проблему, добавив Newtonsoft.Json в NuGet проекта запуска.

Ответ 3

У меня тоже была проблема. Чтобы решить эту проблему, проверьте Ссылки вашего проекта, если версия Newtonsoft.Json была обновлена ​​(вероятно, нет), затем удалите ее и проверьте либо Web.config или App.config, чтобы обновить элемент dependAssembly, был обновлен следующим образом:

<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 будет заменена на правильную версию)

Ответ 4

У меня была аналогичная проблема с новым приложением ASP.NET Core некоторое время назад. Оказывается, одна из библиотек, на которые ссылаются, использовала версию Newtonsoft.Json, которая была ниже 9.0.0.0. Поэтому я обновил версию для этой библиотеки, и проблема была решена. Не уверен, что вы сможете сделать то же самое здесь.

Ответ 5

Я использую Обновление Visual Studio 2013 Update 2. В моем случае у меня есть веб-проект и проект Web Api и проект unit test и другие библиотеки классов в одном решении.

Я провел пару дней, чтобы решить проблему. Ниже приведено пошаговое решение, которое я нашел.

  • Щелкните правой кнопкой мыши проект Web Api. Выберите " Установить как проект StartUp"
  • Щелкните правой кнопкой мыши проект Web Api. Перейдите в Свойства (Alt + Enter).
  • На вкладке "Приложение" в меню левой стороны выберите Приложение
  • Найти Целевую структуру. Измените его на 4.5.1 и сохраните. Однако в окне "Список ошибок" отображается ошибка. После перестроения ошибок нет.
  • Удалите все Newtonsoft.Json пакеты из решения, используя нижеприведенный запрос из консоли диспетчера пакетов (чтобы получить его Вид > Другое окно > Консоль диспетчера пакетов).

удалить пакет newtonsoft.json -force

  1. Переустановить Newtonsoft.Json из консоли диспетчера пакетов

install-package newtonsoft.json

  1. Если у вас есть последнее обновление для Visual Studio 2013, вы можете не столкнуться с этой проблемой. Поскольку я использую Update 2, поэтому при попытке установить Newtonsoft.Json я столкнулся со следующей ошибкой.

Для пакета Newtonsoft.Json 10.0.3 требуется версия клиента NuGet '2.12' или выше, но текущая версия NuGet я s '2.8.50313.46'

  1. Чтобы решить эту проблему, нам нужно обновить консоль диспетчера пакетов. Получил

Инструменты > Расширения и обновления... > В левой панели.. выберите Обновления > Галерея Visual Studio.

  1. Обновить расширение диспетчера пакетов NuGet. Выполните шаги, которые будут выполняться после.

  2. После этого Visual Studio выполнит перезапуск.

  3. Выполните шаг 6 снова.

После установки package.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

У меня возникли аналогичные проблемы с моими проектами ASP.NET Core. Случается, что файл .config в папке bin/debug генерируется с помощью этого:

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

Если я вручную изменил второе bindingRedirect на это, он будет работать:

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

Не знаю, почему это происходит.

Я использую Visual Studio 2015 с .Net Core SDK 1.0.0-preview2-1-003177.

Ответ 7

Добавление конфигурации перенаправления привязки для Newtonsoft.Json в файл конфигурации (web.config) решит проблему.

<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) в теге конфигурации или полностью удалите пространство имен.

Переадресация привязки сборки не работает

Ответ 8

Нужно обновить Newtonsoft.Json -Version Перейдите в Инструменты => Диспетчер пакетов NuGet => Консоль диспетчера пакетов и введите Install-Package Newtonsoft.Json -Version 12.0.2 в окне консоли диспетчера пакетов.

Ответ 9

Нам потребовался день, чтобы решить эту проблему. Решение заключается в том, чтобы заставить ваш веб-сервис использовать версию 11.0.0 в вашем файле 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-11.0.0.0" newVersion="11.0.0.0" />
  </dependentAssembly>
</assemblyBinding>

Ответ 10

Я думаю, что 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;
}

Ответ 11

В моем случае это была проблема с файлом конфигурации 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>

Ответ 12

Я смог решить эту проблему в моем проекте asp.net mvc, обновив мою версию Newton.Json (старая версия = 9.0.0.0 до новой версии 11.0.0.0) с помощью диспетчера пакетов.

Ответ 13

Можно решить проблему, обновив версию "Newtonsoft".

В Visual Studio 2015 можно щелкнуть правой кнопкой мыши "Решение" и выбрать "Управление пакетами Nuget для решения", выполнить поиск "Newtonsoft", выбрать более актуальную версию и нажать "Обновить".

Ответ 14

Ошибка довольно ясна, она ожидает (может быть, из-за какой-то другой зависимости проекта) версии 9.0.0 Newtonsoft.Json, тогда как у вас есть другая версия (надеюсь, более низкая версия).

В любом случае, обновите/обновите до версии 9.0.0 Newtonsoft.Json. Вы можете сделать это легко, используя интерфейс менеджера пакетов → выберите конкретную версию → обновление. Будет удалена и установлена ​​новая выбранная версия пакета.