0

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

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

4

2 回答 2

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)]

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

于 2013-10-29T14:04:13.803 回答
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 不是。

于 2013-10-29T13:43:59.397 回答