2013-06-18 7 views
9

Jestem obecnie otrzymuję następujący błąd używając Json.NET/Newtonsoft.JSON Biblioteka:Mono brakuje System.Numerics.BigInteger.Parse (łańcuch, 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 

ten występuje za każdym razem, że JSON pobierane z bazy danych CouchDB ma pole wartości numerycznych. Odkryłem z wyszukiwania, że ​​metoda, która biblioteka wywołuje z System.Numerics nie jest jeszcze implemented in Mono.

Problem polega na tym, że Json.NET jest zależnością dla innej biblioteki, której używam (WDK.API.CouchDB [3]).

Czy jest jakiś sposób obejść to bez ulepszania źródła którejkolwiek z bibliotek? Jakieś sugestie?

PS:Używam Mono 3.0.6 i 4.0.8, MonoDevelop na Linuksie. Właśnie zacząłem uczyć się C# i to jest mój pierwszy projekt z tym. Próbowałem przeszukać temat w Internecie bez owocnych rezultatów.

Dzięki

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

Odpowiedz

2
+0

Tak, myślę, że to będzie musiało zrobić. Nuget z Mono nie jest bardzo przyjemny w użyciu i unikałem używania starszych wersji bibliotek. Dzięki za link, zostałem przeze mnie niezauważony. – eDrago

+0

Niestety, nie jest to zbyt praktyczne, gdy odwołujemy się do innych bibliotek, które wymagają Json.NET jako ich zależności (i które będę musiał następnie usunąć z zarządzania NuGet w moim projekcie). –

0

Czy próbowałeś żadnej innej metody konwersji ciągów znaków na int? Zwykle używam Convert.ToInt32 (// string) lub jeśli chcesz duże int, następnie użyj Convert.ToInt64 (// string)

W przeciwnym razie sprawdź. Funkcja TryParse() jest dość poręczny:

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

+0

To nie ja próbowałem dokonać konwersji. Zostało to zrobione przez bibliotekę Json.NET, o czym pisałem w pytaniu. – eDrago

+1

Właściwie to uderzam w ten sam problem, a kod JSON.NET faktycznie wykonuje najpierw funkcję Int64TryParse(). Próbuje tylko BigInteger.Parse, jeśli Int64TryParse() zgłasza wyjątek Overflow. – winwaed

-1

Jeśli metoda nie jest realizowany, najlepszą rzeczą do zrobienia jest wdrożyć go. Mono to projekt typu open source. W związku z tym, jeśli nie możesz się doczekać, aż programiści coś wdrożą, powinieneś przyspieszyć i zaimplementować go, a następnie wysłać żądanie wyciągnięcia wraz ze zmianą.

+1

To nie była bardzo pomocna odpowiedź dla początkujących C#. – Kyberias

+0

heh, chyba brakowało mi części o "początkującym", gdzie to jest? – knocte

+1

Część, w której OP mówi: "Właśnie zacząłem uczyć się C# i jest to mój pierwszy projekt z nim." – Kyberias

18

Aby to naprawić, można dodać odniesienie do System.Numerics, a następnie ustawić jego właściwość Copy Local na true.

+1

tak! to działa! Dziękuję Ci. – Gengzu