我正在使用 Cake Build 脚本来构建我们的 .NET 软件,我需要一个唯一的构建号来烘焙到 DLL 中,主要是因为我们需要知道我们使用的确切二进制文件,以防我们需要使用二进制文件调试转储文件。
首先,这是我当前的 Cake 版本任务:
Task("Version")
.Does(() =>
{
Information("Versioning software for configuration {0} of {1}...", configuration, solution);
var gitVersionSettings = new GitVersionSettings {
UpdateAssemblyInfo = true
};
var Version = GitVersion(gitVersionSettings);
});
非常简单,但它使用正确的 FileVersion 和 ProductVersion 更新程序集文件,从而更新 DLL。
其次,我发现 Azure DevOps 中的内部版本号无处不在。以下是一些示例:
2.1.0-PullRequest0019.7
2.0.1-beta.1+4
2.1.0-alpha.4
2.1.0-PullRequest0017.4
2.0.1-beta.1+2
2.0.0
0.1.0+70
这些是最后 7 个内部版本号,它们来自不同分支的内部版本,包括将修补程序合并到 master 和 dev 中。我注意到这个构建管道,构建号是空的,所以我认为它只是使用我的最后一组标签(到目前为止只标记了 2.0.0 和 2.0.1)将任何内容转储到构建管道中。
存在三个问题:
- 如何在我的 Azure DevOps 管道中获取唯一的内部版本号(我有 3 个,并且每个内部版本,无论管道如何,都必须是唯一的)?
- 如何在我的语义版本控制中获取唯一的内部版本号并尊重我在 Master 中的标签?
- 当我在 Azure DevOps 构建服务器上构建以及在我的机器上本地构建(调试)时,如何将内部版本号输入到我的 Cake 脚本中?
编辑
我发现您可以使用 $(BuildId) 获取 Azure DevOps 生成的唯一内部版本号,以便回答问题 1。我还认为我可以通过一个很好的参数将内部版本号从 Azure DevOps 传递到我的 Cake 脚本。现在更多的是本地构建以及如何为它们获取唯一构建号的问题。另外,什么格式应该保存我的版本控制。我正在尝试对标签使用 1.0.0 格式,所以我应该将第四个数字作为始终增加的内部版本号吗?应该如何将其保存到 AssemblyInfo.cs 文件中?
从我的第一次编辑开始编辑......在运行成功构建后,构建号从构建 ID 更改为其他“2.1.0-alpha.7”,我不知道为什么,因为我指定使用构建 ID我的管道。