如何让 Visual Studio 项目的内部版本号增加?

Posted

技术标签:

【中文标题】如何让 Visual Studio 项目的内部版本号增加?【英文标题】:How can I get the build number of a Visual Studio project to increment? 【发布时间】:2015-02-17 20:33:45 【问题描述】:

为什么在 Visual Studio 中构建项目不会增加内部版本号?

我在 AssemblyInfo.cs 中有这个:

[assembly: AssemblyVersion("1.5.*")]

...frmAbout 的构造函数中的 this:

Version versionInfo = Assembly.GetExecutingAssembly().GetName().Version;
String versionStr = String.Format("0.1.2.3", versionInfo.Major.ToString(), versionInfo.Minor.ToString(), versionInfo.Build.ToString(), versionInfo.Revision.ToString());
lblVersion.Text = String.Format("Version 0", versionStr);

然而,在更改代码并构建项目(右键单击项目名称 > 构建)后,versionInfo 的构建部分并未增加。 “关于”框中的标签来自:

Version 1.5.5465.25383

...到:

Version 1.5.5465.25999

为什么内部版本号没有从 5465 增加到 5466?为什么“修订版”会跳 616 个档次?后者只是一个随机值,还是源中已更改的字节数,还是什么?

那么我怎样才能让内部版本号实际增加呢?

更新

是的,razcor 是对的,因为它显示“5465”(今天,YMWV 之后的任何一天):

DateTime startDate = new DateTime(2000, 1, 1);
DateTime todaysDate = DateTime.Today;
int diffDays = (todaysDate.Date - startDate.Date).Days;
MessageBox.Show(diffDays.ToString());

并且,知道内部版本号(例如 5465),可以计算并显示构建日期:

DateTime computedDate = startDate.AddDays(diffDays);
MessageBox.Show(computedDate.ToLongDateString()); // shows today's date (such as what it is today, namely: "Thursday, December 18, 2014")

【问题讨论】:

我什至不知道VS中有这样的功能,感谢您启发我:-)。 【参考方案1】:

当您将“0”替换为“*”版本号时,修订号会自动增加,但不会以您(和我)想像的方式。此自动增量的规则是:内部版本号是自 1.1.2000 以来的天数,修订版是自午夜以来的秒数除以 2。

【讨论】:

这太疯狂了,如果是真的(或者即使不是)!因此,如果我周一进行构建,它将是 5469,但即使我当天再进行 50 次构建,构建编号也不会增加到 5470,直到周二进行构建 - 或者它甚至需要是一个新构建?你可能是对的,但正如我所说,这太疯狂了。想出这种方法/逻辑的猫简直是疯了! 这种古怪的好处是您可以推断/计算构建日期。不过,在我看来更好的是,将 Revision 设置为日期值,并且 Build 号实际上应该随着每次构建而增加(或者用 Jiminy 将其命名为其他名称!)

以上是关于如何让 Visual Studio 项目的内部版本号增加?的主要内容,如果未能解决你的问题,请参考以下文章

如果构建成功,如何让 Visual Studio 向我发出哔哔声?

如何让 Visual Studio 自动升级项目?

如何让 Visual Studio ToolBox 自动填充项目组件?

如何找到 Visual Studio 项目的 .NET 框架版本?

visual studio 2013 中更改C#项目的 Framework 版本

如何让 Visual Studio Code 检查整个项目的错误?