在 AssemblyInfo.cs 中使用
[assembly: AssemblyVersion("1.1.*")]
时,我知道构建和修订号会被有意义的值替换。但是有没有办法在其他地方获得这些值?我想保持 AssemblyVersion 稳定,但仍然能够将这些值刻录到程序集中的某个地方。
我找到了从 PE Header 中提取数据的主题,但我更喜欢不那么侵入性的东西。
在 AssemblyInfo.cs 中使用
[assembly: AssemblyVersion("1.1.*")]
时,我知道构建和修订号会被有意义的值替换。但是有没有办法在其他地方获得这些值?我想保持 AssemblyVersion 稳定,但仍然能够将这些值刻录到程序集中的某个地方。
我找到了从 PE Header 中提取数据的主题,但我更喜欢不那么侵入性的东西。
我通常使用的方法是将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 框中显示版本信息。
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 不是。