Sto lavorando a un sistema di compilazione per un'applicazione MonoTouch abbastanza grande che utilizza molti componenti multipiattaforma. Di conseguenza, spesso ci imbattiamo in una situazione in cui uno di quei componenti multipiattaforma fa qualcosa che non può essere compilato. Se qualcosa viene effettivamente eseguito, la build del dispositivo si bloccherà. A quel punto, dobbiamo rintracciare dove si è verificato l'incidente, trovare il metodo incriminato e hackerarlo in modo che non provi a JIT nel build di MonoTouch.Rilevamento di JIT in fase di compilazione in MonoTouch
La mia domanda è, c'è un modo per rilevare queste cose durante il processo di compilazione? All'inizio avevamo una regex che provava a rilevare metodi virtuali generici, ma ci sono anche problemi con alcuni tipi di LINQ e lambda che proveranno a JIT, e preferisco non provare a scrivere il mio parser per rilevarli tutti. Ho provato a usare monodis AssemblyName.dll
e mi daranno un sacco di errori di metodo mancanti, ma la maggior parte sembra innocua - e anche se non lo fossero, non mi dice dove sono i riferimenti a tale metodo che posso vedere cosa deve essere fatto. Inoltre, a volte si blocca con Abort trap: 6
o Bus error: 10
prima della fine dell'assembly, il che è piuttosto inutile. C'è un modo migliore per rilevare i tentativi di JIT nel mio processo di compilazione?
Informazioni su questo obiettivo mobile ... Avevamo l'impressione che alcune cose come i metodi virtuali generici non fossero supportate perché non possono esserlo. È qualcosa che potrebbe cambiare? Stiamo bene riportando le cose che dovrebbero funzionare ma non lo fanno; il problema è l'universo di cose che non dovrebbero mai funzionare. –
Personalmente non so (tranne la compilazione di tutte le possibilità) come risolverlo (ma le altre persone stanno esaminando i problemi. Quindi nel dubbio è meglio riempire un bug report - nel peggiore dei casi sarà chiuso come duplicato di uno esistente . – poupou