it-roy-ru.com

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

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

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

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

Я добавил Universal Runtime Component и Universal Class Library и скопировал все мои файлы из старого проекта в соответствующие места.

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

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

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

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

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

21
Kishor Bikram Oli

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

  1. Щелкните правой кнопкой мыши References-> Add Reference-> Browse ...-> Find C:\Users\.nuget\packages\Newtonsoft.Json\9.0.1\lib\portable-net45 + wp80 + win8 + wpa81\Newtonsoft.json. dll-> Нажмите кнопку Добавить.

  2. Перестройте проект компонента Runtime и запустите. Эта ошибка должна исчезнуть.

23
Elvis Xia - MSFT

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

14
Jfly

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

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

13
Richard Lee

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

6
hbulens

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

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

  1. Щелкните правой кнопкой мыши на Web Api project. Выберите " Сделать стартовым проектом "
  2. Щелкните правой кнопкой мыши на Web Api project. Зайдите в Свойства (Alt + Enter).
  3. На вкладке приложения в левом меню выберите Приложение
  4. Найти Целевые рамки . Измените его на 4.5.1 и сохраните. Однако в окне «Список ошибок» отображается ошибка. После перестроения ошибки нет.
  5. Удалить все Newtonsoft.Json пакетов из решения, используя приведенный ниже запрос из Package Manager Console (чтобы получить его View> Other Window> Package Manager Console ).

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

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

установочный пакет newtonsoft.json

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

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

  1. Чтобы решить эту проблему, нам нужно обновить Package Manager Console. Должен

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

  1. Обновление Расширение менеджера пакетов NuGet. Следуйте инструкциям, которые идут позже.

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

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

После установки пакеты будут добавлены в эту строку ниже

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

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

5
Kuntal Ghosh

У меня возникли аналогичные проблемы с моими проектами 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.

2
HGHansen

Нам потребовался день, чтобы решить эту проблему. Решение заключается в том, чтобы заставить ваш веб-сервис использовать версию 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>

1
Sabri Meviş

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

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

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

0
David Zagi