.NET Framework 版本 | CLR 版本 |
1.0 | 1.0 |
1.1 | 1.1 |
2.0 | 2.0 |
3.0 | 2.0 |
3.5 | 2.0 |
本來的架構是,一個版本就一個新的 CLR,CLR 可以向下相容 (大致上),也可以共存,開發出來的程式就是針對某個 Framework/CLR 版本,非常明瞭。但到了 Framework 3.0/3.5 之後卻演變成還是使用跟 2.0 同個 CLR 版本,只是在上面新增功能。所以其實這就是為什麼有人說就算你用 2.0,還是可以使用 3.0/3.5 的功能,只要能參考 3.0/3.5 的 DLL 就好了。
Windows Vista 內建的 3.0,跟原來釋出的 3.0,以及 2.0 跟 3.0/3.5 的 關係在下面這張圖就顯示的很清楚,其中 Green Bits 跟 Red Bits 分別為微軟在開發 3.5 的時候稱 3.5 那塊跟 3.0/2.0 那塊的代號:
.net framework 1.x -> vs 2003 ->clr 1.0
.net framework 2.0 -> vs 2005 ->clr 2.0
.net framework 3.0 -> vs 2005 ->clr 2.0
.net framework 3.5 -> vs 2008 ->clr 2.0
因为3.x是2.0的扩展,所以核心还是2.0,新增的部分是3.x...
其实这个问题我觉得应该是这样回答:.net framework是干什么的,CLR是干什么的。
CLR 是一个虚拟机机制, .net framework 是构建在这个机制上的编程类库