在AssemblyInfo
中有两个程序集版本:
AssemblyVersion
:指定要属性化的程序集的版本。AssemblyFileVersion
:指示编译器对Win32文件版本资源使用特定的版本号。Win32文件版本不需要与程序集的版本号相同。
我可以通过以下代码行获得Assembly Version
:
Version version = Assembly.GetEntryAssembly().GetName().Version;
但是我怎么才能得到Assembly File Version
呢?
6条答案
按热度按时间ukdjmx9f1#
请看我上面的评论,要求澄清你真正想要的是什么。希望这就是:
jc3wubiy2#
有three versions:assembly、file和product。它们由不同的功能使用,如果不显式指定它们,则会采用不同的默认值。
jucafojl3#
当我想访问应用程序文件版本(在Assembly Information -〉File version中设置的)时,说在表单加载时设置标签的文本以显示版本,我刚才使用了
这种方法需要对
System.Windows.Forms
的引用。bakd9h0s4#
更新:正如Richard Grimes在my cited post、@Iain和@Dmitry Lobanov中提到的,我的答案在理论上是正确的,但在实践中是错误的。
正如我应该从无数的书籍中记住的那样,当使用
[assembly: XXXAttribute]
设置这些属性时,* 它们会被编译器劫持并放置到VERSIONINFO
资源中 *。基于上述原因,您需要使用@Xiaofu答案中的方法,因为属性是在提取信号之后剥离的。
(From http://bytes.com/groups/net/420417-assemblyversionattribute-如此处所述,如果您要查找其他属性,请将其替换为上述属性)
ylamdve65#
请使用此选项:
或者这个:
2g32fytz6#
从very similar question交叉发布我的答案,因为我在谷歌上搜索我自己的答案,结果在这里。我认为下面的方法与这里显示的其他方法相比有一些优势。
虽然我的回答与其他一些人的回答相似,但我认为它有一些优点:
GetEntryAssembly()
替换为GetExecutingAssembly()
GetCustomAttribute<T>
,并且认为这个变体更具可读性。另请参见Microsoft Docs on
GetCustomAttribute<T>(Assembly)
。