2013-06-18 9 views
9

Attualmente sto ottenendo il seguente errore utilizzando la libreria Json.NET/Newtonsoft.JSON:Mono mancante System.Numerics.BigInteger.Parse (stringa, 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 

Ciò si verifica ogni volta che il JSON recuperata dal database CouchDB ha un campo del valore numerico. Ho scoperto dalla ricerca che il metodo che la libreria sta chiamando da System.Numerics non è ancora implemented in Mono.

Il problema è che Json.NET è una dipendenza per un'altra libreria che sto utilizzando (WDK.API.CouchDB [3]).

C'è un modo per aggirare questo senza modificare la fonte di nessuna delle librerie? Eventuali suggerimenti?

PS:sto usando Mono 3.0.6 e 4.0.8 MonoDevelop, su Linux. Ho appena iniziato ad imparare C# e questo è il mio primo progetto con esso. Ho provato a cercare l'argomento sul web senza risultati fruttuosi.

Grazie

[3] code.google.com/p/skitsanoswdk~~V~~3rd

risposta

2
+0

Sì, penso che dovrà fare. Nuget con Mono non è molto bello da usare e stavo evitando di usare versioni precedenti delle librerie. Grazie per il link, è passato inosservato da me. – eDrago

+0

Sfortunatamente, questo non è molto pratico quando si fa riferimento anche ad altre librerie che richiedono a Json.NET la loro dipendenza (e che dovrei quindi rimuovere dalla gestione di NuGet anche nel mio progetto). –

0

Hai provato qualsiasi altro metodo per la conversione di stringhe in interi? Di solito uso Convert.ToInt32 (// string) o se vuoi intere enormi, quindi usa Convert.ToInt64 (// stringa)

Altrimenti, controlla. La funzione TryParse() è piuttosto comodo:

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

+0

Non ero io che stavo provando a fare le conversioni. È stato fatto dalla libreria Json.NET, come ho affermato sulla domanda. – eDrago

+1

In realtà sto colpendo lo stesso problema, e il codice JSON.NET fa effettivamente un Int64TryParse() prima. Prova solo BigInteger.Parse se Int64TryParse() genera un'eccezione Overflow. – winwaed

-1

Se il metodo non è implementato, la cosa migliore da fare è attuare esso. Mono è un progetto open source. Pertanto, se non puoi aspettare che gli sviluppatori implementino qualcosa, dovresti intensificarlo e implementarlo e inviare una richiesta di pull con la tua modifica.

+1

Questa non è stata una risposta molto utile al principiante C#. – Kyberias

+0

heh, credo di aver perso la parte di "principiante", dov'è? – knocte

+1

La parte in cui OP dice: "Ho appena iniziato ad imparare C# e questo è il mio primo progetto con esso." – Kyberias

18

Per risolvere questo problema è possibile aggiungere un riferimento a System.Numerics e quindi impostare la proprietà Copy Local su true.

+1

si! Funziona! grazie. – Gengzu