首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AssemblyVersionAttribute未被Assembly.GetCustomAttributesData找到

AssemblyVersionAttribute未被Assembly.GetCustomAttributesData找到
EN

Stack Overflow用户
提问于 2014-05-29 11:33:16
回答 1查看 660关注 0票数 4

可以加载程序集并查询所有程序集属性,包括AssemblyInformationalVersionAttributeAssemblyVersionAttributeAssemblyFileVersionAttribute。但是,当仅使用Assembly.ReflectionOnlyLoadFrom方法打开反射程序集时,只列出了信息版本和文件版本,而没有列出AssemblyVersionAttribute

为什么我也不明白这个属性呢?

Mono可以全部读取它们,正如ILSpy所演示的那样。但对于我的特定工具来说,这个库太大了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-29 11:54:07

因为编译器和运行时都是谎言。就像博士一样

实际上,有一些属性可以使而不是嵌入到它们的自然形式中。AssemblyVersionAttribute就是其中之一。另一个是SerializableAttribute。它们不是作为.custom instance条目添加的,而是通过其他信息表示的。

现在,对于常规的反射模型,运行时可以欺骗它--使它看起来好像实际上添加了它们作为属性元数据--将值从实际的位置提取出来,然后假装。它不是这样做的,只有反射模型。

您只需通过程序集实例检查程序集版本即可。就IL而言,这是.assembly条目中的.assembly。但是assembly.GetName().Version可能是在运行时读取它的最简单的方法。

您可以通过查看反射器、ildasm或任何其他选择工具中的原始程序集来验证这一点。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23932350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档