Ho un PCL xamarin che funziona bene in modalità debug x86. Quando lo cambio in Release Mode (x86 o x64) o x64 Debug, ottengo eccezioni di runtime. Probabilmente si riferisce aPerché il mio Xamarin PCL genera un'eccezione di runtime quando si crea la versione per Universal App?
ma io non so cosa altro gruppo che sto usando. Come posso dire?
Il mio computer è x64. Quando eseguo x64 sia in debug che in release ottengo
Eccezione "System.NotImplementedException" in MyApp.Interop.dll. Informazioni aggiuntive Arg_NotImplementedException.
Prima di immettere l'app costruttore(). La chiamata al costruttore è qui:
LoadApplication(new MyApp.App());
Quando costruisco x86 ottengo un po 'di più. Si entra nel MyAppConstructor e chiama il costruttore XAML e dà eccezione:
System.Reflection.MissingMetadataException in System.Private.Reflection.Core.dll AdditionalInfo: Arg_InvokeMethodMissingMetadata, System.EventHandler. Per ulteriori informazioni, visitare http://go.microsoft.com/fwlink/?LinkId=623485
Quindi sembra un assembly Xaml che mi manca. Come posso scoprire quale assembly devo aggiungere?
ho messo di nuovo su di debug, ma rivolto a "usare il nativo del compilatore" così ho potuto avere maggiori dettagli sulle eccezioni:
x86: Ulteriori informazioni: Impossibile creare un delegato del tipo 'sistema. EventHandler 'in quanto manca metadati per il metodo Invoke. Per ulteriori informazioni, si prega di visitare il sito http://go.microsoft.com/fwlink/?LinkID=616867
x64: Un'eccezione di tipo 'System.NotImplementedException' si è verificato in Xamarin.Forms.Platform.UAP.dll ma non è stata gestita nel codice utente
Ulteriori informazioni: Il metodo o l'operazione non è implementata.
UPDATE: Sto supponendo che x64 non sia supportato in Xamarin perché nessun prodotto mobile ha un processore x64? Lascia ancora il problema con la versione x86. Ho provato ad aggiungere i seguenti gruppi nel mio universale App.xaml.cs
List<Assembly> assembliesToInclude = new List<Assembly>();
assembliesToInclude.Add(typeof(MyApp.MyAppMainPage).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.ImageSource).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.StackLayout).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.Label).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.Button).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.FormattedString).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.Span).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.Image).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.ScrollView).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(Xamarin.Forms.WebView).GetTypeInfo().Assembly);
// add this line
Xamarin.Forms.Forms.Init(e,assembliesToInclude); // requires the `e` parameter
dove MyAppMainPage è la pagina xaml provo a caricare nel mio PCL e il resto sono gli elementi dell'interfaccia utente che la pagina è costituito da .
ora vedo questa eccezione generata per x86:
'System.PlatformNotSupportedException' in System.Private.Interop.dll Eccezione generata: 'System.AggregateException' in System.Private.Threading.dll eccezione generata : 'System.Reflection.MissingMetadataException' in System.Private.Reflection.Core.dll
Perché la piattaforma non è supportata? Xamarin supporta Universal giusto?
Sembra che tu stia provando tutte le cose giuste, ovviamente hai pulito e cancellato tutti i file nella cartella bin? C'è qualche indizio alzando la verbosità del log di costruzione e confrontando debug vs release –
@JeremyThompson Come posso aumentare la verbosità del log di costruzione? –
In Visual Studio andare su Strumenti-> Opzioni, quindi individuare il nodo Progetto e soluzioni-> Costruisci ed esegui. –