Не удалось загрузить файл или сборку "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
- Переустановить
Newtonsoft.Json
из консоли диспетчера пакетов
install-package newtonsoft.json
- Если у вас есть последнее обновление для Visual Studio 2013, вы можете не столкнуться с этой проблемой. Поскольку я использую Update 2, поэтому при попытке установить
Newtonsoft.Json
я столкнулся со следующей ошибкой.
Для пакета Newtonsoft.Json 10.0.3 требуется версия клиента NuGet '2.12' или выше, но текущая версия NuGet я s '2.8.50313.46'
- Чтобы решить эту проблему, нам нужно обновить консоль диспетчера пакетов. Получил
Инструменты > Расширения и обновления... > В левой панели.. выберите Обновления > Галерея Visual Studio.
-
Обновить расширение диспетчера пакетов NuGet. Выполните шаги, которые будут выполняться после.
-
После этого Visual Studio выполнит перезапуск.
-
Выполните шаг 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
. Вы можете сделать это легко, используя интерфейс менеджера пакетов → выберите конкретную версию → обновление. Будет удалена и установлена новая выбранная версия пакета.