什么版本255.255.255.255为winmd文件说明什么?(What does version

2019-09-16 22:58发布

我注意到,大多数(所有?).winmd文件有这样一个版本是255.255.255.255:

Windows,版本= 255.255.255.255,文化=中立,公钥=空

地铁应用程序与此版本号的引用,这样的组件。


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

mscorlib程序,版本= 255.255.255.255,文化=中性公钥= b77a5c561934e089

然而,这种版本号的组件不存在,因为据我所知。

这是否版本号有特殊的含义? 有没有这方面的任何文档?

Answer 1:

ECMA 335组件需要有一个版本号。 但Windows运行时类型解析算法不使用的版本号,所以球队创造winmd格式选择255.255.255.255的任意版本号的程序集版本号。

这有助于确保没有人试图做类型解析时使用的.NET类型分辨率算法(它不是完美的,不幸的是有些工具仍然使用.NET类型解析算法)。

哦,对mscorlib程序引用是备考的参考 - ECMA 335要求所有typeref的具有相应assemblyref和WINMD文件格式选择使用typerefs某些ECMA 335类型为特定类型的指标。 例如,WinRT的“枚举”结构被表示为延伸“System.Enum”一类 - 的winmd文件中使用“System.Enum”部分只是一个字符串(也有可能是任何东西),而且不能被解析为一个真正的类型。 该字符串中的元数据表示为typeref和typerefs必须有一个assemblyref - 我们选择使用System.Enum的mscorlib程序版本作为assemblyref的枚举,因为它很方便。



Answer 2:

请记住,在.winmd文件包含元数据的WinRT的接口。 Windows不能假定.NET的任何特定的版本将被使用。 Windows 8将是围着很多比.NET 4.5长

一个.NET项目,也不能假定它会在Windows的任何特定版本上运行。 它应该在Windows 10在Windows 8一样好。

所以解释255.255.255.255为“任何版本”。



文章来源: What does version 255.255.255.255 for winmd files indicate?