WPF 项目中的语义版本控制

Semantic versioning in WPF projects

我们开始对这里的一些项目使用语义版本控制,并且正在努力将其合并到 .NET 世界中。语义版本控制似乎使用 3 位数字,majorminorpatch。 .NET 中的 WPF 项目使用 4 位数字。

当使用 Assembly.GetExecutingAssembly().GetName().Version 属性 打印版本时,程序显然会 return 4 位,而我们只需要 3 位。有什么办法可以实现吗?我们希望在我们的项目中支持语义版本控制。我试过只删除 A​​ssembly Information 中的第四位数字,虽然它确实允许我删除它,但 Version 属性 将始终打印第四位数字。我能做什么?

我在我的 WPF 应用程序中使用此方法(尽管它用于文件版本而不是程序集版本 - 我的小项目中始终使用相同的方法):

public static string ReturnApplicationVersion()
{
    System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
    FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
    string versionMajor = fvi.ProductMajorPart.ToString();
    string versionMinor = fvi.ProductMinorPart.ToString();
    string versionBuild = fvi.ProductBuildPart.ToString();
    string versionPrivate = fvi.ProductPrivatePart.ToString();

    string fVersion = fvi.FileVersion;
    return versionMajor + "." + versionMinor + "." + versionBuild + "." + versionPrivate;
}

您可以轻松地将其修改为 return 仅 3 个数字。如果您绝对必须拥有程序集版本而不是文件版本,那么也许其他人可以提供帮助。

根据 MSDN,.NET 中版本控制的工作方式是 Major.Minor.Build.Revision。您可以在不定义修订的情况下执行此操作,但请注意,在 C# 中,如果未定义修订,Version#Revision 将 return -1。如果您使用的是 .NET Framework,则可能值得遵循其语义版本控制原则。