Silverlight 2 包含一個 CLR,但並非其餘 .NET 應用程序和程序集使用的 CLR. Silverlight CLR 也稱爲 CoreCLR,在設計時充分考慮了不一樣用途。CoreCLR 專爲跨平臺互操做性而設計,可與 CLR 同時運行並支持不一樣的安全模型以及不一樣版本的基礎類庫。
CoreCLR 是 Silverlight 使用的虛擬機。它相似於爲 .NET Framework 2.0 及更高版本提供強大功能的 CLR,也包含類似的類型加載和垃圾收集 (GC) 系統。
CoreCLR 採用很是簡單的代碼訪問安全性 (CAS) 模型——它比桌面 CLR 更簡單,Silverlight 只須要在應用程序級別強制實施安全策略。這是由於做爲獨立於平臺的 Web 客戶端,它不能依靠任何特殊的現行企業或機器策略,並且也不該該容許用戶更改現有策略。但也有一些例外狀況,好比 OpenFileDialog 和 IsolatedStorage(存儲配額更改),在這種狀況下,Silverlight 須要用戶的明確贊成才能打破沙箱的默認規則集。OpenFileDialog 用於訪問文件系統,而 IsolatedStorage 的做用是訪問名義上隔離的存儲並提升存儲配額。
Silverlight 和 .NET 應用程序使用不一樣 CLR 意味着您不能在兩個針對 .NET 應用程序和 Silverlight 應用程序的項目中引用同一個程序集。主要問題出在 mscorlib 程序集上。Silverlight 正常使用所需的功能集很是小-僅僅是內核。但任何 .NET 程序集都要連接標準版本的 mscorlib,這就是問題所在。
MSDN雜誌上有兩篇文章詳細的討論了CoreCLR: