Написал приложение с использованием библиотеки 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 фреймворка и проверить в конфиге версию рантайма:
Так же проверьте биндинги:
Комментариев нет:
Отправить комментарий