2013-06-18 5 views
9

ich zur Zeit immer den folgenden Fehler mit der Json.NET/Newtonsoft.JSON Bibliothek:Mono fehlt System.Numerics.BigInteger.Parse (string, IFormatProvider)

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 

Diese jedes Mal auftritt, dass die Json abgerufen aus der CouchDB-Datenbank hat ein numerisches Wertfeld. Ich habe entdeckt, dass die Methode, die die Bibliothek von System.Numerics aufruft, noch nicht implemented in Mono ist.

Das Problem ist, dass Json.NET eine Abhängigkeit für eine andere Bibliothek ist, die ich verwende (WDK.API.CouchDB [3]).

Gibt es eine Möglichkeit, dies zu umgehen, ohne die Quelle einer der Bibliotheken zu optimieren? Irgendwelche Vorschläge?

PS:Ich bin mit Mono 3.0.6 und 4.0.8 MonoDevelop, auf Linux. Ich habe gerade angefangen, C# zu lernen und das ist mein erstes Projekt. Ich habe versucht, das Thema im Web ohne ergebnisreiches Ergebnis zu suchen.

Dank

[3] code.google.com/p/skitsanoswdk

Antwort

2
+0

Ja, ich denke, das wird tun müssen. Nuget mit Mono ist nicht sehr benutzerfreundlich und ich vermied es, ältere Versionen der Bibliotheken zu verwenden. Danke für die Verbindung, es ist mir unbemerkt geblieben. – eDrago

+0

Leider ist das nicht sehr praktisch, wenn auch auf andere Bibliotheken verwiesen wird, die Json.NET als ihre Abhängigkeit benötigen (und die ich dann auch in meinem Projekt aus der NuGet-Verwaltung entfernen müsste). –

0

Haben Sie für die Umwandlung von Strings in Ints andere Methode versucht? Ich benutze normalerweise Convert.ToInt32 (// string) oder wenn Sie riesige Ints wollen, dann verwenden Sie Convert.ToInt64 (// string)

Ansonsten, Check-out. Die TryParse() Funktion ist sehr praktisch:

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

+0

Es war nicht ich, der versuchte, die Konvertierungen zu machen. Es wurde von der Json.NET-Bibliothek getan, wie ich zu der Frage gesagt habe. – eDrago

+1

Ich bin tatsächlich das gleiche Problem, und der JSON.NET-Code tut tatsächlich eine Int64TryParse() zuerst. Es versucht nur das BigInteger.Parse, wenn das Int64TryParse() eine Überlaufausnahme auslöst. – winwaed

-1

Wenn die Methode nicht implementiert ist, das Beste, was zu tun ist, es umzusetzen. Mono ist ein Open-Source-Projekt. Wenn Sie also nicht darauf warten können, dass die Entwickler etwas implementieren, sollten Sie es schrittweise implementieren und implementieren und eine Pull-Anforderung mit Ihrer Änderung senden.

+1

Dies war keine sehr hilfreiche Antwort auf C# Anfänger. – Kyberias

+0

heh, ich glaube ich habe den Teil über "Anfänger" verpasst, wo ist es? – knocte

+1

Der Teil, wo OP sagt: "Ich habe gerade angefangen, C# zu lernen und das ist mein erstes Projekt damit." – Kyberias

18

Um dies zu beheben, können Sie einen Verweis auf System.Numerics hinzufügen und dann seine Eigenschaft Copy Local auf true setzen.

+1

ja! Es klappt! Danke. – Gengzu