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

时间:2013-10-29 13:42:14

标签: c#

使用时 AssemblyInfo.cs中的[assembly: AssemblyVersion("1.1.*")]我知道构建和修订号被有意义的值替换。但是有没有办法在其他地方获得这些价值? 我想保持AssemblyVersion稳定,但仍然可以将这些值放在装配中的某处。

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

2 个答案:

答案 0 :(得分:1)

我通常使用的方法是将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)]

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

答案 1 :(得分:0)

AssemblyFileVersion - 请参阅http://support.microsoft.com/kb/556041

上的Microsoft KB

它的使用方法与AssemblyVersion相同:

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

GAC使用AssemblyVersion进行强命名等,而AssemblyFileVersion则不然。