为什么WinRT框架程序集与其(不同的)非WinRT对应程序具有相同的完全限定名称?

时间:2012-10-08 20:44:19

标签: .net windows-8 assemblies windows-runtime .net-4.5

这实际上只是一个好奇类型的问题。我处理查看程序集和原始IL的类型。 Windows 8确实在我正在实现的东西中扭曲。我发现WinRT和非WinRT框架程序集共享相同的完全限定名称。

因此,不可能客观地判断程序集是依赖于WinRT还是非WinRT版本的框架程序集(是的,可以同时使用它们)。这些组件在布局和实现的类型方面有很大的不同。

为什么他们在构建WinRT程序集时不更改公钥令牌或版本号?

1 个答案:

答案 0 :(得分:2)

WinRT有一组投影,其中一个用于将winrt apis投影为'.net framework'友好方式,另一个投影用于Cpp和html / js堆栈。

事实上,如果有人想要创建新的预测以支持其他语言和框架,他们就可以做到。

让事情看起来像.net框架有一套重要的目的:

已经知道.net开发的初级开发人员不需要从scracth开始,winrt看起来就像一个普通的.net框架程序。

然后存在很多.net框架代码,这是平台独立的,所以这个代码可以在任何支持框架核心例程的子集的环境中重新编译或重用,这是一个关键主题,因为这提供了一种简化的方法为.net开发人员提供.net功能。

最后但并非最不重要的是,当前的.net开发人员创建了大量代码,并且在创建'.net'投影时微软的一个承诺提供了与已创建的.net例程的一些兼容性,这是解释因为一些程序集保留一些存根和签名,看起来像.net框架对应。

它们是引用程序集,这意味着类似“代理程序集”。代理必须看起来像真实对象,但在某种程度上却不是真实对象的完整图像。您必须清楚Winrts .net投影不是关于完整的.net引用程序集,WinRT中没有.net框架只是一小部分功能。这就是原因,因为你没有所有的类型,当然你没有所有的方法或属性。

没有其他产品,我的意思是没有其他框架或其他程序集做同样的事情,只是元数据的代理。不是其他.Net Fx版本,绝对不是。是否创建了一个程序集,以便在运行时和其他跨越某些平台边界之间建立一个桥梁。所以我认为完全可以使用相同名称的设置FQN,因为在将来的版本中可能存在另一个参考程序集到另一个.net fx版本。我相信使用相同的名称和版本是一个快捷方式,你知道什么.net fx程序集引用并且btw保留程序集名称'compat layer'