我正在为使用大量跨平台组件的相当大的 MonoTouch 应用程序开发构建系统。结果,我们经常遇到这样一种情况,其中一个跨平台组件执行了一些无法编译的操作。如果实际执行了某些操作,则设备构建将崩溃。那时,我们必须追踪崩溃发生的位置,找到有问题的方法,然后破解它,这样它就不会在 MonoTouch 构建中尝试 JIT。
我的问题是,有没有办法在构建过程中检测到这些东西?起初,我们有一个正则表达式,它试图检测通用虚拟方法,但某些类型的 LINQ 和 lambda 也存在问题,它们也会尝试 JIT,我宁愿不尝试编写自己的解析器来检测它们全部。我试过使用monodis AssemblyName.dll
,它会给我很多丢失的方法错误,但它们中的大多数似乎是无害的——即使它们不是,它也没有告诉我对所述方法的引用在哪里所以我可以看到需要做什么。最重要的是,有时它会在组装结束时Abort trap: 6
或Bus error: 10
之前崩溃,这是非常无益的。有没有更好的方法可以检测构建过程中的 JIT 尝试?