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

3
有没有办法在使用 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 来构建项目。
1个回答

15

AssemblyVersionAssemblyFileVersion的值都必须由最多四个整数组成,并以句点分隔,每个整数都不能大于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.*")]

还有一个属性,AssemblyInformationalVersion,它接受一个字符串作为版本号;当你想要使用更复杂的字符串时(特别是包括来自DVCS的提交ID时),可以使用它。

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

// Include Git commit ID
[assembly: AssemblyInformationalVersion("1.2b1-g39d1c0f")]

简单来说,这些属性的区别如下:

  • AssemblyVersion:这用作程序集的CLR版本。当程序集有强名称时,该版本会与之进行验证。

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

  • AssemblyInformationalVersion:可以通过Application.ProductVersion属性在运行时访问。它还用于Application.UserAppDataDirectory路径。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接