Страницы

Поиск по вопросам

понедельник, 12 ноября 2018 г.

System.BadImageFormatException: Невозможно загрузить файл или сборку Newtonsoft.Json

Написал приложение с использованием библиотеки Newtonsoft.Json. При попытке запуска приложения из Visual Studio 2015 или 2013 — все работает, при попытке запуска на трех разных ПК (разные версии Windows и разные разрядности систем) вне среды VS — все работает, но при попытке запуска на двух разных (были заказаны у разных хостинг провайдеров) VPS KVM с Windows Server 2012 R2 x64 (.NET Framework установлен) — приложение не может загрузить библиотеку Newtonsoft.Json.dll. Проблема возникает только с этой библиотекой. Пробовал добавлять библиотеку в ресурсы и загружать их них — эффект тот же. Если из приложения убрать части кода, отвечающие за работу с JSON (то есть удалить использование самой библиотеки), то все прекрасно везде работает.
Ниже приведена ошибка, которая возникает при запуске:
System.BadImageFormatException: Невозможно загрузить файл или сборку "Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" или один из зависимых от них компонентов. Ожидалось, что модуль содержит манифест сборки. Имя файла: "Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" в ***.***.ReadAllItemsInfo() в ***.Program.Main(String[] args) в C:\---\Program.cs:строка 55
=== Информация о состоянии предварительной привязки === Журнал: DisplayName = Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed (Fully-specified) Журнал: Appbase = file:///C:/---/ Журнал: Initial PrivatePath = NULL Вызов сборки: SoketServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
Журнал: данная привязка начинается в контексте загрузки default. Журнал: используется файл конфигурации приложения: C:\---\---.exe.Config. Журнал: используется файл конфигурации главного узла: Журнал: используется файл конфигурации компьютера из C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config. Журнал: ссылка после применения политики: Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed Журнал: попытка загрузки нового URL file:///C:/---/Newtonsoft.Json.DLL. Ошибка: не удалось завершить установку сборки (hr = 0x80131018). Проверка прекращена.
Void ReadAllItemsInfo()


Ответ

Подобная ошибка может быть в случае, если вы построили проект с AnyCpu, в то время как какая то из подключенных библиотек построена с x86\x64.
Как решать такую проблему можно узнать тут: https://stackoverflow.com/questions/270531/how-to-determine-if-a-net-assembly-was-built-for-x86-or-x64
Так же рекомендую проверить версию .net фреймворка и проверить в конфиге версию рантайма:

Так же проверьте биндинги:

Комментариев нет:

Отправить комментарий