2009-07-22 66 views

回答

5

當您使用aot = full(僅在少數平臺上支持)時,將不會在運行時對代碼進行處理。

但是您仍然需要運行時才能提供應用程序使用的許多功能。 Mono的運行時支持垃圾回收,線程管理,IO層,IOremapping層,操作系統接口,對小數類型的支持,反射(所以你仍然可以做類似type.GetMethods()的事情) 。

+0

好吧我想我得到它謝謝,它是一個運行時的本地代碼,在這方面與vb6有點類似,也許 – jjb 2009-07-22 21:57:29

2

AOT編譯是,Mono將在程序運行之前將方法編譯爲本地代碼。你可以閱讀它here

+0

感謝您的鏈接,如果使用AOT = Full選項,那麼運行時的所有依賴關係都將被刪除,並且生成的代碼是不受管理的?對不起,如果這是一個愚蠢的問題 – jjb 2009-07-22 06:22:36

+0

即代碼可以在沒有單聲道的機器上運行? – jjb 2009-07-22 06:24:11

+0

代碼被編譯爲本地代碼,但它仍然需要庫。 – Aragorn 2009-07-22 14:33:08

2

是的,結果是本地代碼,但在基本的AOT版本中,這仍然需要Mono運行時執行。

「iPhone上的單聲道」情況會發生什麼會更復雜一點。首先,使用Mono Linker修整受管理的庫。然後將結果編譯爲mono --aot=full的本地代碼。最後,所有這些都被傳遞到mkbundle以將其打包到單個可執行文件中,包括Mono運行時。

如果您只是想在不安裝Microsoft .Net/Mono的情況下運行.Net應用程序,那麼只需使用mkbundle即可。

+0

謝謝,這有助於我更好地理解它 – jjb 2009-07-22 21:58:29