estoy trabajando en un sistema de construcción para una aplicación bastante grande MonoTouch que está utilizando una gran cantidad de componentes de plataforma cruzada. Como resultado, a menudo nos encontramos con una situación en la que uno de esos componentes multiplataforma hace algo que no puede compilarse. Si ese algo realmente se ejecuta, la compilación del dispositivo se bloqueará. En ese punto, tenemos que rastrear dónde ocurrió el bloqueo, encontrar el método ofensivo y modificarlo para que no intente JIT en la compilación de MonoTouch.los ECI Detección en tiempo de compilación en MonoTouch
Mi pregunta es, ¿hay una manera de detectar estas cosas durante el proceso de construcción? Al principio, tuvimos una expresión regular que intentó detectar métodos virtuales genéricos, pero también hay problemas con ciertos tipos de LINQ y lambdas que también intentarán JIT, y prefiero no intentar escribir mi propio analizador para detectarlos. todas. He intentado usar monodis AssemblyName.dll
, y me dará muchos errores de método faltantes, pero la mayoría de ellos parecen ser inofensivos, y aunque no lo fueran, no me dice dónde están las referencias a dicho método. que puedo ver lo que hay que hacer. Además de eso, a veces se bloqueará con Abort trap: 6
o Bus error: 10
antes del final del montaje, lo que es bastante inútil. ¿Hay alguna forma mejor de detectar intentos de JIT en mi proceso de compilación?
Acerca de este objetivo en movimiento ... Teníamos la impresión de que algunas cosas, como los métodos virtuales genéricos, no eran compatibles porque no pueden serlo. ¿Es eso algo que podría cambiar? Estamos bien informando cosas que deberían funcionar pero no funcionan; el problema es el universo de cosas que nunca deberían funcionar. –
Personalmente no sé (excepto compilar todas las posibilidades) cómo resolverlo (pero otras personas están viendo los problemas. Por lo tanto, en caso de duda será mejor que complete un informe de error; en el peor de los casos, se cerrará como un duplicado de uno existente) . – poupou