gpt4 book ai didi

c# - winmd 文件的版本 255.255.255.255 表示什么?

转载 作者:太空狗 更新时间:2023-10-29 21:06:03 27 4
gpt4 key购买 nike

我注意到大多数(所有?).winmd 文件都有一个 255.255.255.255 版本,例如:

Windows,Version=255.255.255.255,Culture=neutral,PublicKeyToken=null

Metro 应用程序引用了具有此版本号的此类程序集。


进一步的 Windows.winmd 本身引用:

mscorlib,Version=255.255.255.255,Culture=neutral,PublicKeyToken=b77a5c561934e089

但是,据我所知,不存在具有此版本号的程序集。

这个版本号有什么特殊含义吗?有这方面的文档吗?

最佳答案

ECMA 335 程序集需要有一个版本号。但是 windows 运行时类型解析算法不使用版本号,因此创建 winmd 格式的团队选择了任意版本号 255.255.255.255 作为程序集版本号。

这有助于确保没有人在进行类型解析时尝试使用 .Net 类型解析算法(它并不完美,不幸的是,一些工具仍然使用 .Net 类型解析算法)。

哦,mscorlib 引用是一个形式引用——ECMA 335 要求所有 typeref 都有相应的 assemblyref,WINMD 文件格式选择使用某些 ECMA 335 类型的 typeref 作为特定类型的指示符。例如,winrt“enum”构造表示为扩展“System.Enum”的类型 - 对于 winmd 文件,“System.Enum”部分只是一个字符串(它可能是任何东西),并且无法解析为一个真正的类型。该字符串在元数据中表示为 typeref,typeref 必须具有 assemblyref - 我们选择使用 mscorlib 版本的 System.Enum 作为枚举的 assemblyref,因为它很方便。

关于c# - winmd 文件的版本 255.255.255.255 表示什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10411168/

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