Я использую сценарий 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.
Во-вторых, я обнаружил, что номера сборки в DevOps Azure повсюду. Вот несколько примеров:
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).
Есть три вопроса:
- Как получить уникальный номер сборки в моих конвейерах DevOps Azure (у меня их 3, и каждая сборка, независимо от конвейера, должна быть уникальной)?
- Как мне получить уникальный номер сборки в моем семантическом управлении версиями и уважать мои теги в Master?
- Как получить номер сборки в моем скрипте Cake для сборки как на сервере сборки Azure DevOps, так и при локальной сборке на моем компьютере (для отладки)?
EDIT
Я понял, что вы можете получить уникальный номер сборки, созданный DevOps Azure, используя $ (BuildId), чтобы ответить на вопрос 1. Я также думаю, что я могу передать номер сборки из Devure Azure в мой скрипт Cake через аргумент, который хорошо. Это больше проблема с локальными сборками и как получить уникальные номера сборок для них. Кроме того, какой формат должен сохранить мои версии. Я пытаюсь использовать формат 1.0.0 для тегов, поэтому я должен иметь четвертое число в качестве постоянно увеличивающегося номера сборки? И как это сохранить в файле AssemblyInfo.cs?
Редактировать из моего первого редактирования ... после запуска успешной сборки номер сборки изменился с идентификатора сборки на что-то другое "2.1.0-alpha.7", и я не знаю почему, потому что я указал использовать идентификатор сборки в моем конвейере.