gpt4 book ai didi

.net - GetCustomAttribute() 对 AssemblyVersionAttribute 返回 null

转载 作者:行者123 更新时间:2023-12-02 14:27:38 26 4
gpt4 key购买 nike

我正在向 .NET 应用程序添加“关于”对话框,并且正在查询程序集的属性以获取要显示的信息。当我尝试检索程序集的 AssemblyVersionAttribute 时使用GetCustomAttribute()它返回null:

// Works fine
AssemblyTitleAttribute title
= (AssemblyTitleAttribute)Attribute.GetCustomAttribute(
someAssembly, typeof(AssemblyTitleAttribute));

// Gets null
AssemblyVersionAttribute version
= (AssemblyVersionAttribute)Attribute.GetCustomAttribute(
someAssembly, typeof(AssemblyVersionAttribute));

我的 AssemblyInfo.cs 看起来不错。我定义了这些属性:

[assembly: AssemblyTitle("Some Application")]
[assembly: AssemblyVersion("1.0.0.0")]

这是怎么回事?我确实有一个解决方法,但我想知道为什么上面的代码不起作用。

// Work-around
string version = someAssembly.GetName().Version.ToString();

最佳答案

AssemblyVersionAttribute 不会添加到程序集中,而是由编译器以“特殊”方式处理(即,它设置程序集的版本)

您可以获得 AssemblyFileVersion 属性(即该属性已添加到程序集中)

还有其他属性显示相同的行为:AssemblyCultureAttributeAssemblyFlagsAttribute 也用于设置程序集属性,并且不会作为自定义属性添加到程序集中。

所有这些属性都列在文档中的程序集标识属性下。文档对这些属性是这样描述的:

Three attributes, together with a strong name (if applicable), determine the identity of an assembly: name, version, and culture.

关于.net - GetCustomAttribute() 对 AssemblyVersionAttribute 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1144525/

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