MSBuild - 自定义程序集版本格式

Aid*_*din 3 versioning msbuild visual-studio-2010

在使用MSBuild构建它们时,有没有办法使用自定义格式的汇编版本?

例如,我们尝试使用类似"0.16.10r2.10717"的版本但是我们遇到了这个错误:

error emitting 'system.reflection.assemblyversionattribute' -- The version specified '0.16.10r2.10717' is invalid.

我在网上搜索,但似乎没有人要求解决这个问题.可能吗?

我们使用Microsoft Visual Studio 2010和FinalBuilder 7来构建我们的项目.

Ste*_*ngs 14

的AssemblyVersion的AssemblyFileVersion都必须由最多四个整数,句点分隔,其中的每一个是不大于65534(的UInt16.MaxValue-1).以下任何一种都是有效的(C#语法):

[assembly: AssemblyVersion("1.2.3.4")]

// Let the compiler generate the build and/or revision numbers
[assembly: AssemblyVersion("1.2.3.*")]
[assembly: AssemblyVersion("1.2.*")]
Run Code Online (Sandbox Code Playgroud)

还有另一个属性AssemblyInformationalVersion,它接受一个字符串作为版本; 当您想要使用更复杂的字符串时(尤其是在包含DVCS的提交ID时),可以使用它.

// Use complex version number
[assembly: AssemblyInformationalVersion("0.16.10r2.10717")]

// Include Git commit ID
[assembly: AssemblyInformationalVersion("1.2b1-g39d1c0f")]
Run Code Online (Sandbox Code Playgroud)

简而言之,这些属性之间区别是:

  • AssemblyVersion:它用作程序集的CLR版本.当程序集具有强名称时,这是经过验证的版本.

  • AssemblyFileVersion:这是Win32文件版本资源,显示在Windows资源管理器的程序集属性中.

  • AssemblyInformationalVersion:这可以在运行时通过Application.ProductVersion属性访问.它也用在Application.UserAppDataDirectory路径中.