我在这个MSDN源中检查了有关 AssemblyName 显示名称格式的信息,它说:
AssemblyName 的显示名称的格式是以名称开头的逗号分隔的 Unicode 字符串,如下所示:
名称 <,Culture = CultureInfo> <,Version = Major.Minor.Build.Revision> <, StrongName> <,PublicKeyToken> '\0'
Name 是程序集的文本名称。CultureInfo 是 RFC1766 格式定义的区域性。Major、Minor、Build 和 Revision 是程序集的主要版本、次要版本、内部版本号和修订号。StrongName是使用 SHA-1 散列算法和 SetPublicKey 指定的公钥生成的公钥的散列值的十六进制编码的低 64 位。PublicKeyToken 是由SetPublicKey指定的十六进制编码的公钥。
然后检查SetPublicKey,它说:
设置公钥令牌,它是签名应用程序或程序集的公钥的 SHA-1 哈希的最后 8 个字节。
所以听起来StrongName和上面的显示格式规范中的PublicKeyToken是一样的,那么为什么两者并排列在相同的格式中呢?当我尝试使用AssemblyName.FullName打印出程序集的 AssemblyName 时,它只显示如下内容:
系统,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089
所以没有出现StrongName,也没有按照上面指定的顺序,即版本信息在文化信息之前。
谁能解释一下?谢谢。