C# 在AssemblyVersion之外的其他地方是否有使用自动生成和修订号的正确方法?

C# 在AssemblyVersion之外的其他地方是否有使用自动生成和修订号的正确方法?,c#,C#,使用时 [assembly:AssemblyVersion(“1.1.*)]在AssemblyInfo.cs中,我知道版本号和修订号被有意义的值替换。但是,有没有办法在其他地方获得这些值? 我希望保持AssemblyVersion稳定,但仍然能够将这些值烧录到程序集中的某个地方 我已经找到了从PE头中提取数据的主题,但我更喜欢不太侵入性的内容。AssemblyFileVersion-请参阅Microsoft KB的 其使用方式与AssemblyVersion相同: [assembly: Asse

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


我已经找到了从PE头中提取数据的主题,但我更喜欢不太侵入性的内容。

AssemblyFileVersion-请参阅Microsoft KB的

其使用方式与AssemblyVersion相同:

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

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

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

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

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

[assembly: AssemblyVersion(Versions.AssemblyVersion)]

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

AssemblyFileVersion不支持我需要的版本号和修订号星号。你这样做会得到警告。看啊,抱歉-我们的版本在TFS中发生了碰撞,没有意识到它在VS中不起作用。你能提示我TFS如何将版本应用到文件版本吗?我不知道这和使用星号有什么不同。或者TFS没有抱怨FileVersion属性中的星号?
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";
}
[assembly: AssemblyVersion(Versions.AssemblyVersion)]