在 SemVer 中,当向公众发布测试版时,程序集+文件版本应该是啥? [关闭]

Posted

技术标签:

【中文标题】在 SemVer 中,当向公众发布测试版时,程序集+文件版本应该是啥? [关闭]【英文标题】:In SemVer what should the assembly+file versions be when release a beta to the public? [closed]在 SemVer 中,当向公众发布测试版时,程序集+文件版本应该是什么? [关闭] 【发布时间】:2013-11-22 17:15:51 【问题描述】:

假设我们是第一次发布 .net 库。我们希望通过 Beta + Release Candidate 阶段从早期采用者那里获得反馈。

因此,在SemVer 的上下文中,我们最初将发布版本1.0.0-Beta1。此后随着 Beta 版和候选版本的增加。

为了争论,假设我们当前的版本号是0.3.0

因此,我们需要从 SemVer 推导出要放置在各种 .net 版本占位符中的内容。那些是:

1。 Nuget 版本

用于命名 nuget 包,也被 nuget 用于对包进行排序和派生(如果它是预发布版)

2。汇编版本

记住程序集可能是强命名的,并且当程序集版本更改时,绑定重定向可能会使 beta 之间的移动变得复杂

3。程序集文件版本

映射到文件属性对话框中的“文件版本”

4。装配信息版

在文件属性对话框中映射到“产品版本”

【问题讨论】:

我不确定这只是基于意见,因为有 rules around using the assembly & file version 具有特定后果,它们是 hard to follow 并且会从这里的明确答案中受益。 以下是我的想法:保持文件版本号与 nuget 版本相同,遵循 semver。程序集版本更改表示重大更改和不兼容,因此仅在您升级主要版本时进行更改。参考techblog.ranjanbanerji.com/post/2008/06/26/… & semver.org 【参考方案1】:

我不认为 SemVer 旨在解决您列出的所有 4 个项目,而是第一个项目。它为最终用户提供了一种了解他们是否使用最新版本以及使用哪种构建类型(稳定版、beta 版、alpha 版等)的方法。它不适用于大多数版本号场景,因为这些场景需要 4 个纯数字段。

因此,对于我自己的 NuGet 包,我遵循 SemVer 设置 NuGet 包版本,但在编译二进制文件时坚持AssemblyInfo Task。

嗯,这就是我处理版本号的方式,其他人可能有自己的风格。

【讨论】:

好的,但是如果 SemVer 是 1.0.0-Beta1,那么其他人用什么? 刚刚更新了我的答案。我使用AssemblyInfo Task修改了AssemblyInfo.cs(或.vb或其他),以便在编译时设置Assembly Version、Assembly File Version等。 链接断开 :'-( (AssemblyInfo 任务) 存档链接 web.archive.org/web/20130509173926/http://… - 不知道它做了什么

以上是关于在 SemVer 中,当向公众发布测试版时,程序集+文件版本应该是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

SemVer 对于持续交付来说是多余的吗?

npm:在linux ubuntu中使用npm命令时找不到模块semver错误[重复]

SemVer 是不是大升级?

package.json 中的版本是不是应该始终遵循 semver?

npm 是不是支持 semver 中较新的预发布版本?

SemVer 中 MINOR vs PATCH 规则的原因