c#应用程序-自定义程序集版本格式

本文关键字:版本 格式 程序集 自定义 应用程序 | 更新日期: 2023-09-27 17:49:39

可能有点奇怪,但目前正在研究是否有可能为项目的汇编信息实现自定义格式。

在Assembly信息中,您可以选择4号系统,因此major.minor.build.revision

我被要求尝试将其更改为5个数字系统,所以像1.2.34.556.1234这样的东西,并想知道这是否可能。

我只是简单地尝试只是修改它编程,但这只是返回错误:

Error emitting 'System.Reflection.AssemblyVersionAttribute' attribute -- 'The version specified '1.2.34.556.1234' is invalid'

c#应用程序-自定义程序集版本格式

出于这个目的,我更喜欢使用AssemblyFileVersion而不是AssemblyVersion

前者有一个开放的格式,几乎可以容纳任何额外的信息,而后者,AssmeblyVersion是为。net框架使用的,强制执行一个严格的编号方案,如果违反,会产生编译器错误。

[assembly: AssemblyVersion("4.0.*")] //Strict Format, for framework use
[assembly: AssemblyFileVersion("4.0.20.110708")]    //Flexible Format more suitable for product versions

更新:根据OP注释,下面是如何通过反射轻松访问该属性的方法:

Assembly assembly = Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fvi.FileVersion;

这将不起作用,因为AssemblyVersionAttribute的构造函数在字符串中最多接受4个值。

版本字符串的格式为:major。轻微的。构建。修订。

MSDN链接

AssemblyVersionAttribute转换为Version类。

只有major,minor,build,revision号:你不能使用5个数字。

如果你想使用更多的数字,你可以使用AssemblyInformationalVersion

对于更具描述性的程序集版本控制,它不是Version Class,而是string:

[assembly: AssemblyInformationalVersion("1.12.0.3050.1234 Release - Any CPU")]

但是您应该提供AssemblyVersion和/或AssemblyFileVersion,而不需要第5个数字