Ubuntu 上的 Newtonsoft.Json.Utilities.ConvertUtils 的类型初始值设定项引发



我们的应用程序在Windows上使用 JSON.net 很好。在Linux上(我们正在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)

内部异常是

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保持兼容,市场份额仍然很大)。

关于如何让它运行的任何想法?

无论出于何种原因,它只是不想与Linux上安装的版本合作,并且永远无法加载它。

以下是我所做的最终导致它运行的方法:

  • 添加了对使用 JSON.net 的项目的 System.Numerics 引用
  • 从Windows发行版中获取System.Numerics.dll(这可能是一个.NET程序集而不是Mono),并将其添加到我的构建过程中,这样System.Numerics.dll最终进入Linux项目的/bin/Release目录(与主应用程序的.exe目录相同)。

相关内容

  • 没有找到相关文章

最新更新