我正在使用大量跨平臺組件的相當大的MonoTouch應用程序的構建系統。因此,我們經常遇到這樣一種情況:其中一種跨平臺組件做了一些無法編譯的情況。如果某件事實際上得到執行,設備構建將會崩潰。那時,我們必須追蹤崩潰發生的位置,找到違規方法,並將其破解,以便它不會嘗試在MonoTouch構建中進行JIT。在MonoTouch中編譯時檢測JIT
我的問題是,有沒有辦法在構建過程中檢測這些東西?起初,我們有一個試圖檢測通用虛擬方法的正則表達式,但是某些類型的LINQ和lambda也會嘗試JIT,我也不想嘗試編寫自己的解析器來檢測它們所有。我試過使用monodis AssemblyName.dll
,它會給我很多缺失的方法錯誤,但其中大多數似乎是無害的 - 即使它們不是,它也不會告訴我對所述方法的引用在哪裏我可以看到需要做什麼。最重要的是,在程序集結束之前它有時會崩潰Abort trap: 6
或Bus error: 10
,這非常無益。有沒有更好的方法可以檢測到在構建過程中嘗試JIT?
關於這個移動目標......我們的印象是,像通用虛擬方法這樣的東西不被支持,因爲它們不可以。那是可以改變的嗎?我們沒關係報告應該工作,但不要;麻煩的是那些不應該工作的宇宙。 – 2012-03-07 21:17:04
我個人並不知道(除了編譯每一種可能性)如何解決它(但其他人正在研究這些問題,所以如果有人懷疑你最好填寫一個錯誤報告 - 更糟糕的情況是,它會作爲現有的一個副本關閉。 – poupou 2012-03-07 22:21:20