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 来构建我们的项目。

4

1 回答 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路径中。

于 2012-07-15T07:02:07.290 回答