2015-03-10 2 views
0

Наше приложение использует JSON.net просто отлично в Windows. В Linux (мы тестируем в Ubuntu), мы получаем исключение:Исключение было выбрано инициализатором типа для Newtonsoft.Json.Utilities.ConvertUtils на Ubuntu

An exception was thrown by the type initializer for Newtonsoft.Json.Utilities.ConvertUtils 
    20150310_11:51:37.404 ERROR : at Newtonsoft.Json.Serialization.DefaultContractResolver.IsJsonPrimitiveType(System.Type t) 
    at Newtonsoft.Json.Serialization.DefaultContractResolver.CreateContract(System.Type objectType) 
    at Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContract(System.Type type) 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.GetContractSafe(System.Type type) 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(Newtonsoft.Json.JsonReader reader, System.Type objectType, Boolean checkAdditionalContent) 
    at Newtonsoft.Json.JsonSerializer.DeserializeInternal(Newtonsoft.Json.JsonReader reader, System.Type objectType) 
    at Newtonsoft.Json.JsonSerializer.Deserialize(Newtonsoft.Json.JsonReader reader, System.Type objectType) 
    at Newtonsoft.Json.JsonConvert.DeserializeObject(System.String value, System.Type type, Newtonsoft.Json.JsonSerializerSettings settings) 
    at Newtonsoft.Json.JsonConvert.DeserializeObject(System.String value, Newtonsoft.Json.JsonSerializerSettings settings) 
    at Newtonsoft.Json.JsonConvert.DeserializeObject(System.String value) 

InnerException был

Could not load file or assembly 'System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. 

В других местах в Интернете, они сказали, что это может быть, что нам нужно установить «libmono- system-numerics4.0-cil ", но apt-get показывает, что он будет установлен уже и обновлен.

Мы используем .NET 4.0 (потому что мы хотим оставаться совместимыми с Windows XP, доля рынка по-прежнему значительна).

Любые идеи о том, как его запустить?

ответ

1

По какой-либо причине он просто не хочет сотрудничать с версией, установленной на Linux &, и не может ее загрузить.

Вот что я сделал, что в конечном итоге привело его запустить:

  • Добавлена ​​System.Numerics ссылка на проект, который использует Json.NET
  • Схватил System.Numerics.dll из дистрибутива Windows, который работал (это, скорее всего, сборка .NET вместо Mono), и добавил это к моему процессу сборки таким образом, что System.Numerics.dll попадает в каталог/bin/Release проекта Linux (тот же каталог, что и. exe для основного приложения).
Смежные вопросы