Microsoft Build Version:将 MajorRevision 和 MinorRevision 合并为 Revision

Microsoft Build Version : Combine MajorRevision and MinorRevision into Revision

我有一个 5 部分构建版本(例如 1.9.0.0.1),我想将其转换为 4 部分。我正在使用以下代码来合并主要和次要修订。

new Version(major, minor, build, majorRevision | (minorRevision << 16)

结果为 1.9.0.65536,但修订版允许的最大值为 65535。合并主要修订版和次要修订版的正确公式是什么?

谢谢

您不仅可以使用由三部分组成的版本号(因为它同时包含次要和主要修订号):

new Version(major, minor, build)

但您也可以使用 Version Constructor (String):

string version = major + "." + minor + "." + build + "." + (majorRevision | (minorRevision << 16));
var ver = new Version(version);

但它不会消除错误,因为它会自动将拆分后的字符串解析为整数。所以我建议使用三部分版本...

您可以使用 System.Reflection.Assembly.GetExecutingAssembly() 访问您的版本并创建您自己的版本字符串:

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
string myVersion = assembly.GetName().Version + ".";
int major = int.Parse(myVersion.Split('.')[0]); // Get the major version number
int minor = int.Parse(myVersion.Split('.')[1]); // Get the minor version number
myVersion += (major | (minor << 16)) + ""; // Append the rest

Version.Revision Property 的文档中也有很好的例子!他们甚至描述了您问题的答案:

Version interim = new Version(2, 4, 1128, (100 << 16) + 2);

// major.minor.build.majRev/minRev = 2.4.1128.100/2

但还是要考虑它是否真的适合您的用例!