CLR之间的差异

dan*_*ich 1 .net windows clr

在我试图理解引用程序集以及CLR如何处理它们时,我对实际有多少不同的.NET CLR有点困惑.

查看.NET Metro配置文件,其中API由winmd文件投影,稍后通过引用程序集在.NET中处理,CLR的哪个版本/种类正在处理这个问题?

它似乎与Silverlight配置文件和Windows Phone配置文件的机制相同,因此为每个配置的CLR都会加载相同的CLR,但只会公开相关的API,具体取决于您的目标.

是否有意义 ?

Han*_*ant 5

每个平台都有一个:桌面,移动,手机,xbox,silverlight,micro.今年晚些时候将会有另一个,ARM垫.但这并不重要,您的程序是根据参考程序集构建的,而不是CLR.你的程序所做的所有调用都是框架方法调用,你永远不会直接调用CLR函数.

因此存在配置文件,存储在c:\ program files\reference程序集中的引用程序集集合.它们大致沿平台边界下降,但有其他变化.就像桌面应用程序可以定位完整,客户端或城域配置文件.启用WinRT定位的参考程序集中的关键功能是它可以重定向类型.这种魔力是由[TypeForwardedTo]属性实现的.

因此,当您为Metro配置文件定位.NET api时,您的引用程序集来自Framework\.NETCore子目录,您将引用mscorlib.dll引用程序集,该程序集将所有类型重定向到另一组实现WinRT投影的程序集.核心的是System.Runtime.dll和System.Runtime.WindowsRuntime.dll等.启用可移植类库功能的相同机制.更多细节在这里.