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

时间:2014-03-12 14:26:48

标签: c# assemblyinfo

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

在大会信息中,您可以选择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'

3 个答案:

答案 0 :(得分:3)

为此,我更喜欢使用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;

答案 1 :(得分:1)

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

  

版本字符串的格式为:major。次要。建立。修改

MSDN Link

答案 2 :(得分:0)

AssemblyVersionAttribute已转换为Version class

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

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

对于更具描述性的汇编版本控制,它不是Version Class而是string

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

但是你应该提供AssemblyVersion和/或AssemblyFileVersion没有第5个号码