为应用程序开发版本编号

时间:2011-07-27 16:13:53

标签: c# winforms versioning

首先,我认为这个论坛不适合我的问题,所以如果它在错误的地方,请在适当的地方请原谅和放置。我没有为我的问题找到合适的论坛。

我开发了一个C#应用程序(Win Forms)。现在我需要处理它的版本编号。我无法弄清楚什么是最好的方法。我希望版本号简单,如1.2或1.2.1。我读到了关于SVN版本的内容,但在这个阶段看起来似乎并不那么令人困惑。应用程序有不同的版本类型 - 1个带安装程序,1个没有安装程序。

我认为发布版本和开发版本应该是相同的 - 如果我错了,请纠正我。它应该自动处理还是手动更改?处理应用程序版本编号的最佳,简单和简单方法是什么。

4 个答案:

答案 0 :(得分:7)

我们使用major.minor [.build [.revision]]。我们给出了语义:

major =主要版本。 (一种很大的变化,甚至可能是UI刷新)。 minor =作为中等变化集。 (也许是新的内部流程或引擎的重构)。

关于构建和修订:

0 - 表示其alpha阶段。
1 - Beta。
2 - 发布候选人。
3 - 生产。

所以,如果您的应用程序在3.2.1.0上。你知道你正处于3.2版本的alpha阶段。等等。

注意:虽然包含修订版似乎有点大,但我们发现这是一个很好的做法,因为如果我们发现了一些错误或意外行为,我们只需修复并增加修订而不是构建。

答案 1 :(得分:2)

我认为 - 这来自我的经验,而不仅仅是一个想法 - 你应该使用4部分版本编号 - 非常像@Randolf。但是我会对部件和版本进行不同的定义。

major - 当版本是新版本时,这应该增加,与没有升级过程的先前版本不兼容,或者当构建/开发平台发生变化时(因此从.net 2.0迁移到.net 4.0)。

minor - 当应用程序底层的数据结构发生变化时(无论这是否为db),这应该会增加。这意味着将需要数据构建或更新,客户端将指示升级可能需要的工作级别。

build - 每当完成一个完整的生产构建时,它应该总是递增,作为候选版本。

版本 - 应该针对每个版本进行更新,并用于发布候选版本的错误修复。

这意味着您可以使用版本号确定该版本中的哪些更改和修订,这对于支持至关重要。

手动或自动 - 此路线意味着手动更新,这对于您确定版本包含的内容非常重要。

发布和开发版本号通常应该相同,因为版本号只应在构建潜在版本时增加。话虽如此,如果新版本正在测试中,您还应该确保可以在任何支持的版本上进行开发,这些版本可能低于当前开发版本。

答案 2 :(得分:1)

据许多人说,令人沮丧的是,.Net似乎认为内置数字是“错误的”。 AssemblyInfo将内部版本号指定为[Major][Minor][Build][Revision],这对我来说没有任何意义。当然,夜间构建比修改规范更常见,因此是“最小的”变化吗?我不打算反对这个框架,所以我只能忍受它。

也许这与美国人以错误的顺序指定日期的现象有着相同的根本原因。同样,常识会一直指示大 - 小。

关于在概念上组织这个问题,我想说四个部分编号的每个部分应该表明最近适当幅度的变化;即:

主要:应用程序的重大升级,如果是商业项目,您希望用户为此付费。用户应该面临基础设施问题,例如服务包和新的.Net版本;

轻微:错误修复和更改请求的大量汇总,可以实现“小功能”的描述。可以说已经存在于程序中的任何东西都可以归结为次要版本;

构建:个人选择,但对我来说这将是唯一的构建号。如果从集成服务器获取二进制文件,则可能会遇到数万个。可能是夜间建造,但也可以在PM说“去”时按需建造。构建号应该唯一对应于在集成服务器上启动完整生产构建的事件。

修订版:至少在概念上应该对应于对规范的修订。通常会匹配更改日志中的项目,即所有增量更改,包括更改请求x。

答案 3 :(得分:1)

BuildMaster中,我们认为#。#。#。#release number格式代表:

[major version].[minor version].[maintenance version].[build number]

由于我大多数时候都会反复从我们的博客反馈信息,所以我只会给你一个链接到我的同事写的文章:http://blog.inedo.com/2011/03/15/release-numbering-best-practices/

在更新版本号时,我会将本地开发版本保留为0.0.0.0,让您的自动构建过程担心编号。