編譯|程式 一個.NET程式在編譯和運行時都做了些什嗎?
================================================================
在新聞群組和郵件清單裡有大量關於一個.Net程式的設計編譯(design-time or
run-time)和運行原理 (CPU-specific binary or pseudo-code)的疑問。
這裡是一個簡單的回答:當你編譯一個C#應用程式或任何一種CLS(Commmon
Language Specification)相容的語言時,它將首先被編譯成一種稱為IL
(Intermediate Language)的虛擬碼(pseudo-code)。在這個應用程式第一次
被啟動並執行時候,這種IL代碼將被編譯成機器代碼,用於執行。也就是說從原始碼
到得到運行結果,進行了兩次編譯。事實上,只有那些被真正使用的函數代碼
才會被進行第二次編譯。下面揭示開發過程中被隱藏起來的細節: