13

这实际上只是一个好奇心类型的问题。我处理在程序集和原始 IL 中查找类型。不过,Windows 8 确实对我正在实施的某些东西产生了影响。我发现 WinRT 和非 WinRT 框架程序集共享相同的完全限定名称。

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

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

4

1 回答 1

2

WinRT 有一组投影,其中一个旨在将 winrt apis 投影为“.net 框架”友好的方式,另一个投影用于 Cpp 和 html/js 堆栈。

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

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

已经知道.net开发的第一手开发者不需要从头开始,winrt看起来很像一个普通的.net框架程序。

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

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

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

没有其他产品,我的意思是没有其他框架或其他程序集做同样的事情,只是元数据的代理。不是其他 .Net Fx 版本,绝对不是。是为在运行时和其他跨越某些平台边界的其他程序之间建立桥梁而创建的程序集。所以我认为使用相同名称设置 FQN 是完全可以接受的,因为在将来的版本中可能存在另一个指向另一个 .net fx 版本的引用程序集。我相信使用相同的名称和版本是了解您引用的 .net fx 程序集的快捷方式,顺便说一句,保留程序集名称“兼容层”

于 2012-10-30T10:21:22.590 回答