gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:58:15 28 4
gpt4 key购买 nike

这实际上更像是一个好奇心类型的问题。我负责跨程序集和原始 IL 查找类型。不过,Windows 8 确实让我正在实现的某些事情陷入困境。我发现 WinRT 和非 WinRT 框架程序集共享相同的完全限定名称。

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

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

最佳答案

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

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

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

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

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

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

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

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

关于.net - 为什么 WinRT 框架程序集与其(不同的)非 WinRT 对应项具有相同的完全限定名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12789191/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com