2015-07-08 17 views
10

Viene visualizzato questo errore durante la creazione della mia soluzione Xamarin per iOS.
Ho abilitato i gruppi di collegamento SDK .
La cosa strana è che funziona bene quando lo costruisco per il simulatore, ma quando costruisco un dispositivo reale dà questo errore.Xamarin: Errore MT2002: impossibile risolvere "System.Void System.Security.Cryptography.SHA1Cng ::. Ctor()"

MTOUCH: error MT2002: Failed to resolve "System.Void 
System.Security.Cryptography.SHA1Cng::.ctor()" reference from 
"System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 

Nessun dove nel mio codice sono io riferisco a System.Security.Cryptography.

funziona Quando ho disattivare assemblee che collegano, o collegamento di attivazione tutte le assemblee, ma collegando tutte farò Unità CIO di fallire e disattivare il collegamento dei tutti insieme i risultati in un file di dimensioni maggiori per l'applicazione.

Sto costruendo per OS di destinazione 7.1 (nessuna differenza quando lo cambio) per .NET versione 4.5.2 e tutti gli aggiornamenti per Xamarin sono installati.

Aggiornamento:
Posso confermare che il mio progetto iOS si riferisce alla versione 2.0.5.0 System.Core
Vedere la schermata qui sotto.
Tuttavia, ho un progetto PCL a cui viene fatto riferimento. Potrebbe in qualche modo causare il problema?

enter image description here

UPDATE: risulta là è una libreria che stavo referenziazione, HashLib, ho pensato che era un PCL, ma in realtà non lo è.
All'interno di HashLib c'è stata una chiamata a qualcosa in System.Core che ha causato il fallimento del linker.
Ora ho estratto la funzionalità di cui avevo bisogno da HashLib e l'ho compilata in un progetto PCL separato e questo ha risolto il problema del linker.

risposta

7

Stai in qualche modo riferimento alla versione desktop di System.Core:

"System.Core, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089"

Il Xamarin La versione .iOS ha Version=2.0.5.0.

Nota che non si può fare riferimento a questa versione di System.Core da soli, può essere estratto indirettamente (se si fa riferimento a un assembly che fa riferimento a System.Core).

Verificare che tutti i riferimenti utilizzino la versione 2.0.5.0 di System.Core (credo che sia possibile utilizzare Reflector per questo).

+0

Aggiornato la mia domanda con maggiori informazioni. Mi riferisco al 2.0.5.0 –

+0

Puoi aggiungere '-v -v -v -v' alle opzioni addizionali di mtouch nelle opzioni di costruzione del progetto iOS, pulire e ricostruire, ed elencare il log di costruzione? –

+0

Ecco l'output: https://gist.github.com/DotTech/4bc7d139b3d5cad0a7de Grazie per lo sforzo! –

Problemi correlati