寫這個純粹是本身的一點學習總結,其實就學習的筆記整理,至關於對本身的一點督促,若有看到不正確的歡迎指出
通常咱們寫代碼都是使用的高級語言,可是在CLR中運行的代碼並非咱們直接寫的代碼,而是經過咱們選擇對應語言的編輯器生產的中間語言運行,因此一開始會介紹,在CLR運行以前,到底作了什麼?windows
全部面向CLR的語言均可以在CLR中運行並編譯,例如C#、F#,在代碼在CLR運行以前,則先會選擇對應的編譯器進行編譯,並生產中間語言(IL),因此實際運行的是中間語言,之因此CLR能實現多種語言兼容也是由於如此。
注:C++很特殊,能夠同時編寫託管代碼和非託管代碼安全
託管模塊:
在進行對應的語言編譯以後,對生成一個叫託管模塊的一個文件,說白了就是電腦上的一個特殊的文件而已,可是由於有了CLR頭,因此能被CLR識別到,IL則是託管模塊重要的組成元素之一,程序集大體由四個部分組成:
一、PE頭:windows文件的標準
二、CLR頭:標記爲能夠CLR識別的託管文件
三、元數據:對於代碼中定義類和引用類的描述
四、IL(中間語言):用於CLR中運行的重要代碼
編輯器
其中元數據是其中重要部分組成,爲CLR性能以及編寫時都有幫助:
一、避免重複編譯
二、編寫代碼時的只能感應
三、類型安全的檢查
四、序列化傳輸
五、GC的幫助性能
程序集:
介紹完託管模塊後就必需要介紹一下你們比較熟悉的程序集了,程序集是由一個或多個託管模塊和若干個資源文件組成,可是多出了一個新的文件:清單,清單則是對於託管模塊和資源的一個描述的文件,若是一個程序集只有一個託管模塊則他就是託管模塊自己。學習
至此,在介紹CLR運行代碼前重要的幾個文件就介紹完畢了,在探究CLR要低如何運行代碼以前咱們先看一下CLR是如何啓動的。spa