是否有一种正确的方法可以在AssemblyVersion旁边的其他地方使用自动构建和修订号

本文关键字:方使用 其他 构建 AssemblyVersion 一种 方法 是否 | 更新日期: 2023-09-27 18:37:14

使用时 [assembly: AssemblyVersion("1.1.*")]在AssemblyInfo中.cs我知道内部版本号和修订号被有意义的值所取代。但是,有没有办法在其他地方获得这些值?我想保持程序集版本稳定,但仍然能够将这些值刻录到程序集的某个地方。

我找到了从 PE 标头中提取数据的主题,但我更喜欢不那么侵入性的东西。

是否有一种正确的方法可以在AssemblyVersion旁边的其他地方使用自动构建和修订号

我通常使用的方法是将AssemblyInfo.cs视为此类版本号的端点,而不是起点。

所以我会从一个由构建过程(例如您的 CI 系统)自动生成或修改的文件开始,例如

public static class BuildNumber
{
    public const string Build = "<<git branch>>";
    public const string Revision = "<<CI build number>>";
}

然后我有一个包含所有版本信息的版本类:

public static class Versions
{
    public static int Major { get { return Convert.ToInt32(MajorString); } }
    public static int Minor { get { return Convert.ToInt32(MinorString); } }
    public static int Build { get { return Convert.ToInt32(BuildNumber.Build); } }
    public static int Revision { get { return Convert.ToInt32(BuildNumber.Revision); } }
    public const string AssemblyVersion = MajorString + "." + MinorString + "." +
        BuildNumber.Build + ". " + BuildNumber.Revision;
    private const string MajorString = "1";
    private const string MinorString = "2";
}

最后,将以下内容放入AssemblyInfo.cs文件中:

[assembly: AssemblyVersion(Versions.AssemblyVersion)]
这样,版本信息

也可以在您的代码中使用,例如用于在关于框中显示版本信息。

AssemblyFileVersion - 在 http://support.microsoft.com/kb/556041 上查看 Microsoft KB

它的使用方式与AssemblyVersion相同:

[assembly: AssemblyVersion("1.1.0.0")]
[assembly: AssemblyFileVersion("1.1.0.0")] 

AssemblyVersion 被 GAC 用于强命名等,而 AssemblyFileVersion 则不是。