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

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

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

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

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

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

Я установил все необходимые SQLite-net, SQLite для универсальной платформы Windows, 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

мой .в JSON файл компонента среды выполнения Windows имеет следующее:

  {
  "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 и переустановить его, но не повезло.

10 ответов


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

  1. Правой Кнопкой Мыши ссылки-> добавить ссылку->обзор...-> Найти C:\Users\.nuget\пакеты\Newtonsoft.Json\9.0.1\lib \ portable-net45+wp80 + win8+wpa81\Newtonsoft.формат JSON.dll - >Нажмите кнопку Добавить.

  2. восстановить проект и запуск компонента среды выполнения. Эта ошибка должна исчезнуть.


У меня тоже была такая же проблема, чтобы решить эту проблему, проверьте ссылки вашего проекта, если версия Newtonsoft.В JSON был обновлен (вероятно, нет), затем удалите его и проверьте свой либо Web.config или App.config wheter элемент 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>

после этого, перестроить проект снова (the dll будет заменено на правильное версия)


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


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


я испытывал подобные проблемы с моим ASP.NET основные проекты. Происходит то, что происходит .файл конфигурации в папке 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.


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

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

  1. Правой Кнопкой Мыши на Web Api. Выберите"установить как StartUp Project"
  2. Правой Кнопкой Мыши на Web Api проект. Перейти к свойства (Alt + Enter).
  3. на вкладке Приложения в меню левой стороны выберите приложение
  4. найти целевой платформы. Измените его на 4.5.1 и сохранить. Однако он показывает ошибку в окне "список ошибок". После перестроения ошибки нет.
  5. удалить все Newtonsoft.Json пакеты из решения, используя ниже запрос от Консоль Диспетчера Пакетов (to получить его Вид > Другое Окно > Консоль Диспетчера Пакетов ).

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

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

установить-пакет newtonsoft.в JSON

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

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

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

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

  1. обновление на Расширение Менеджера Пакетов NuGet. Следуйте шагам, которые последуют за этим.

  2. Visual Studio примет перезагрузка после этого.

  3. выполнить Шаг 6 снова.

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

он будет успешно выполнен, если нет другой ошибки.


нам потребовался день, чтобы решить эту проблему. Решение вынуждает ваш веб-сервис использовать версию 11.0.0 в вашем интернете.конфигурационный файл.

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


в моем случае это была проблема с конфигурационным файлом web.конфиг на моей машине, когда я обновил версию newton VS, автоматически исправил мою сеть.файл конфигурации для указания новой версии. Когда я загрузил его в производство существующей сети.config указывал на старую версию.

Как только я обновил интернет.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>

смог решить эту проблему в моем asp.net проект mvc путем обновления моей версии Newton.JSON (старая версия = 9.0.0.0 до новой версии 11.0.0.0) Usign Package Manager.


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