一直困扰着微软 CLR 实现的一个问题是在一个时间段里每个进程只能有一个 CLR 存在。而对于 Silverlight 而言,这已经不再是一个问题。
这个 CLR/Process 问题可以通过一个像 Outlook 这样可扩展的应用来展示。Outlook 是一个本地应用,也就是说它没有绑定到.NET 运行时的某个特定版本。如果运行时没有事先装载,任何用来编译插件的 CLR 版本都会被装载进内存。
问题就出现在当某个人想装载两个用不同的 CLR 版本构建的插件的时候。如果新的 CLR 版本先被装载,原有的插件就可能存在兼容性问题。如果旧的版本先被装载,新的插件(译者注:基于新 CLR 版本开发的插件)肯定会安装失败。
在 IE 中这个问题显得尤为突出,因为它有很多个从来不是按相同的顺序装载的插件。
为了解决这个问题,现在在同一个进程里可以允许多个 Silverlight 的 CLR 版本并存。这不会修复原有 CLR 版本中的问题,它只是和 Silverlight CLR 的其他版本同时运行。
.NET 框架开发团队的主管 Jason Zander 在他的博客中详细解释了这一问题。
评论