I PCL funzionano bene in MonoTouch e MonoDroid.Libreria portatile di classe problemi di riferimento dell'assemblaggio forte in MonoTouch/MonoDroid
Tuttavia, a volte, quando uso una variabile per fare riferimento a un tipo in un PCL, e poi cerco di utilizzare lo stesso riferimento in un client Monox, quindi il compilatore non riesce con un messaggio del tipo:
Il tipo 'System.Collections.Specialized.INotifyCollectionChanged' è definito in un assembly a cui non viene fatto riferimento. È necessario aggiungere un riferimento all'assembly 'System.Windows, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'.
Il problema qui è che nella mia MonoDroid System.Collections.Specialized.INotifyCollectionChanged
PCL è fornita in un tipo di spessore inoltro DLL - come https://github.com/slodge/MvvmCross/tree/vnext/Cirrious/System.Windows - e, ovviamente, che la DLL non può essere firmato utilizzando la chiave privata di Microsoft.
qualche informazione in più:
- Questo è comunemente visto per le interfacce come ICommand e INotifyCollectionChanged
- Mi sembra che si verifichi in progetti exe (librerie in qualche modo lavorano OK)
- Sono principalmente test/costruzione in VS2010 e VS2012
- po 'di più: https://github.com/slodge/MvvmCross/issues/41
Can Anyo ne suggerire un modo per risolvere questo? per esempio. c'è un modo per disattivare la protezione dei nomi di assembly forte?
Penso che questo sia necessario se i PCL devono essere veramente portatili al di fuori di Microsoft implementati .Net implementazioni?
Grazie. Ho eseguito il codice in modo corretto, quindi la tua affermazione sulla mancanza di convalida del runtime sembra corretta. Dovrò elaborare attentamente i passaggi della tua risposta per comprenderli. Non ho mai fatto alcuna firma di codice, quindi molte delle tue istruzioni suonano come una lingua straniera per me :) Torneranno con più feedback dopo che avrò lavorato qualcosa. – Stuart