【问题标题】:Mono missing System.Numerics.BigInteger.Parse(string,IFormatProvider)单声道缺少 System.Numerics.BigInteger.Parse(string,IFormatProvider)
【发布时间】:2013-06-18 17:52:50
【问题描述】:

我目前在使用 Json.NET/Newtonsoft.JSON 库时遇到以下错误:

Missing method System.Numerics.BigInteger::Parse(string,IFormatProvider) in assembly
/usr/lib/mono/gac/System.Numerics/4.0.0.0__b77a5c561934e089/System.Numerics.dll,
referenced in assembly ~/dev/Mono/Mercury/Mercury/bin/Debug/Newtonsoft.Json.dll

每当从 couchDB 数据库中检索到的 Json 具有数值字段时,都会发生这种情况。我通过搜索发现库从 System.Numerics 调用的方法还不是implemented in Mono

问题在于 Json.NET 是我正在使用的另一个库 (WDK.API.CouchDB [3]) 的依赖项。

有没有什么办法可以在不调整任何库的源代码的情况下绕过这个问题?有什么建议吗?

PS: 我在 Linux 上使用 Mono 3.0.6 和 MonoDevelop 4.0.8。我刚开始学习 C#,这是我的第一个项目。我尝试在网络上搜索该主题,但没有任何结果。

谢谢

[3] 代码.google.com/p/skitsanoswdk

【问题讨论】:

    标签: c# mono couchdb json.net


    【解决方案1】:

    要解决此问题,您可以添加对 System.Numerics 的引用,然后将其属性 Copy Local 设置为 true

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 是的,我认为必须这样做。带有 Mono 的 Nuget 使用起来不是很好,我避免使用旧版本的库。感谢您的链接,我没有注意到它。
      • 不幸的是,当还引用其他需要 Json.NET 作为其依赖项的库时,这不是很实用(然后我必须从我的项目中的 NuGet 管理中删除它)。
      【解决方案3】:

      您是否尝试过任何其他将字符串转换为整数的方法?我通常使用 Convert.ToInt32(//string) 或者如果你想要大整数,然后使用 Convert.ToInt64(//string)

      否则,请检查。 TryParse() 函数非常方便:

      http://www.dotnetperls.com/convert-string-int

      【讨论】:

      • 不是我试图进行转换。正如我在问题上所说,它是由 Json.NET 库完成的。
      • 我实际上遇到了同样的问题,而 JSON.NET 代码实际上首先执行了 Int64TryParse()。如果 Int64TryParse() 抛出溢出异常,它只会尝试 BigInteger.Parse。
      【解决方案4】:

      如果方法没有实现,最好的办法是实现它。 Mono 是一个开源项目。因此,如果您迫不及待地等待开发人员实施某些东西,您应该加紧实施它,并发送一个包含您的更改的拉取请求。

      【讨论】:

      • 这对 C# 初学者来说不是很有帮助。
      • 呵呵,我想我错过了“初学者”的部分,它在哪里?
      • OP 说的部分:“我刚开始学习 C#,这是我的第一个项目。”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-03
      相关资源
      最近更新 更多