【发布时间】:2020-03-25 04:34:37
【问题描述】:
上下文:
我使用 MSBuild 来构建我的项目。目前我使用的版本号发布日期,不幸的是,当多个版本在同一天发生时,它缺乏明确性。在Directory.Build.props:
<PropertyGroup>
<Version>
$([System.DateTime]::Now.Year).
$([System.DateTime]::Now.Month).
$([System.DateTime]::Now.Day).
$([System.Convert]::ToUInt16(
$([MSBuild]::Divide(
$([System.DateTime]::Now.TimeOfDay.TotalSeconds),
1.32
))
))
</Version>
</PropertyGroup>
目标:
创建如下所示的版本控制方案:
20 年 3 月 23 日:
- 发布版本:2020.3.23.0
20 年 3 月 24 日:
- 调试版本:2020.3.24.0
- 调试版本:2020.3.24.1
- 调试版本:2020.3.24.2
- 发布版本:2020.3.24.0
- 调试版本:2020.3.24.3
- 发布版本:2020.3.24.1
基本上:前三个数字是年/月/日,因为发布日期通常很重要。然后使用自动递增的版本号在同一天内发布。调试增量很有用,因此我可以确认正在加载和运行正确版本的软件,但我不希望发布版本中出现令人困惑的高数字。我可能会尝试一些额外的调试构建指标,但我应该能够自己解决。
问题:
如何在同一天自动增加构建版本,并为调试和发布提供单独的版本?理想情况下,不添加额外依赖的解决方案是首选,但如果没有no,那么它是可以接受的。
【问题讨论】:
-
请编辑您的问题,以客观的方式明确说明您的“最佳方式”指标是什么。
-
@TylerH 将其更改为“最简单”而不是“最佳”,并添加了我能想到的唯一规定。虽然我觉得这里的“最佳”是相当不言自明的,因为“通常遵循良好的编码实践和常识”。
-
问题是良好的编码习惯因人而异。当然,常识也是一个不同的东西。最简单的稍微好一点,但仍然模糊。你的意思是代码行数最少吗?最少的依赖项(如您提到的其他软件包)?等等。客观性的一个很好的指导是:如果一个新手和一个 20 年的专业人士都看这个问题,他们会为你的要求提出相同的描述吗?他们是否都同意给定的解决方案满足问题陈述的需求?等等。
-
@TylerH 这感觉很挑剔。最简单显然不可能客观地定义 100%。最少的代码行很可能是超级不清楚和hacky。鉴于此,我将对其进行更改以消除所有主观性 - 任何有效的答案都可以。
-
"最简单显然不可能定义 100% 目标" 没错!这就是为什么你应该跳过“最简单”、“最好”、“最惯用”等术语,而只是询问你的意思是什么客观可回答的术语:-)
标签: c# visual-studio msbuild