Я работаю над системой сборки для довольно большого приложения MonoTouch, которое использует много кроссплатформенных компонентов.В результате мы часто сталкиваемся с ситуацией, когда один из этих кроссплатформенных компонентов делает что-то, что невозможно скомпилировать.Если что-то действительно будет выполнено, сборка устройства завершится сбоем.В этот момент мы должны отследить, где произошел сбой, найти метод, вызывающий сбой, и взломать его, чтобы он не пытался выполнить JIT в сборке MonoTouch.
Мой вопрос: есть лиспособ обнаружить эти вещи во время процесса сборки?Сначала у нас было регулярное выражение, которое пыталось обнаружить универсальные виртуальные методы, но есть также проблемы с определенными типами LINQ и лямбда-выражений, которые также будут пытаться использовать JIT, и я бы предпочел не пытаться написать собственный анализатор для их обнаружения.все.Я попытался использовать monodis AssemblyName.dll
, и это даст мне много пропущенных ошибок метода, но большинство из них кажутся безвредными - и даже если они не были, это не говорит мне, где ссылки на указанный методтак, чтобы я мог видеть, что нужно сделать.Кроме того, иногда он падает с Abort trap: 6
или Bus error: 10
до конца сборки, что совершенно бесполезно.Есть ли лучший способ обнаружить попытки JIT в процессе сборки?