1. 公共語言運行時(Common Language Runtime,CLR)是一種可由多種編程語言使用的"運行時"。編程
2. CLR的核心功能(好比內存管理,程序集加載、安全性、異常處理和線程同步等)可由面向CLR的全部語言使用。安全
3. 用一個對應的編譯器編譯源代碼以後,結果都是一個
託管模塊。
4.
託管模塊是一個標準的32/64位Microsoft Windows 可移植執行體(PE32/PE32+)文件,它們都須要CLR才能執行。
5. 託管的程序集利用Windows的
數據執行保護和
地址空間佈局隨機化加強整個系統的安全性。
6. 託管模塊的各個組成部分
7. 本地代碼編譯器生成的是面向特定CPU架構(好比x8六、x64和IA64)的代碼。
8. 每一個面向CLR的編譯器生成的都是IL(中間語言)代碼。IL有時稱爲託管代碼,由於CLR要管理它的執行。除了生成IL,面向CLR的每一個編譯器還要在每一個託管模塊中生成完整的元數據。
9. 元數據是一組數據表。其中一些數據表描述了模塊中定義的內容,好比類型及其成員。還有一些元數據表描述了託管模塊引用的內容,好比導入的類型及其成員。元數據老是與包含IL代碼的文件關聯。事實上,元數據老是嵌入和IL代碼相同的EXE/DLL文件中,二者密不可分。
10. 元數據的用途
- 編譯時,元數據消除了對本地C/C++頭和庫文件的需求,由於在負責實現類型/成員的IL代碼文件中,已包含和引用的類型/成員有關的所有信息。編譯器可直接從託管代碼中讀取元數據。
- Visual Studio 使用元數據幫你寫代碼。它的"智能感知"技術能夠解析元數據。
- CLR的代碼驗證過程使用元數據確保代碼執行「類型安全」的操做。
......