Автоинкремент версии/билда проекта Visual Studio

385
26 апреля 2017, 08:54

Best practice автоинкремента версии/билда относительно C# / Visual Studio?

Какой путь лучше использовать при одной ветке апликухи, а как нужно действовать когда веток несколько? ( И почему, если это не очевидно по ответу :)

Есть ли какие подводные камни, на которые нужно обратить внимание при использовании автоинкремента? Как в целом, так и в часности относительно пути который советуете.

Answer 1

Самые подводные грабли тут - место хранения счетчика билдов. В то время когда весь мир пользуется распределенными системами хранения исходников - номер билда все еще должен проставляться в одном месте.

Скорее всего, лучше забить на простановку версий в локальных сборках и проставлять версию только на билд-сервере.

Во время сборки можно генерировать файл, к примеру, CommonAssemblyInfo.cs, который подключен ко всем проектам как ссылка:

<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="..\CommonAssemblyInfo.cs">
  <Link>Properties\CommonAssemblyInfo.cs</Link>
</Compile>

При генерации файла на этапе сборки отталкиваться можно вот от такого шаблона:

using System.Reflection;
// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyCompany("...")]
[assembly: AssemblyProduct("...")]
[assembly: AssemblyCopyright("...")]
[assembly: AssemblyTrademark("...")]
[assembly: AssemblyCulture("ru-RU")]
[assembly: AssemblyVersion("$(VersionFull)")]
[assembly: AssemblyFileVersion("$(VersionFull)")]
[assembly: AssemblyInformationalVersionAttribute("$(ProductVersion)")]
[assembly: AssemblyMetadata("Git:Branch", "$(GitBranch)")]
[assembly: AssemblyMetadata("Git:CommitHash", "$(GitCommitHash)")]

Старшие числа номера версии (Major, Minor, Build/Hotfix) имеет смысл задавать вручную, меняя при выпуске очередного релиза. При работе в подходе Agile в качестве третьей цифры напрашивается номер спринта.

Младшую цифру (Revision) лучше брать из переменных билд-сервера, чтобы она соответствовала номеру билда.

Текущую ветку гита можно прочитать из .git/HEAD Текущий коммит - из .git/refs/heads/{ветка}

READ ALSO
Запуск приложения использующего localdb на разных компьютерах

Запуск приложения использующего localdb на разных компьютерах

Я написал приложение на языке C#, которое работает с базой данных MS SQLЕсли я переношу приложение на другой компьютер и пытаюсь запустить то оно...

330
Windows Forms application with ball walking randomly

Windows Forms application with ball walking randomly

Не могли бы вы,пожалуйста,создать корректно эту программу(по-своему,скорее всего,потому что я еще зеленый и пишу лапшу), чтобы я смог сравнить...

242
(Unity) Проект несовместим с текущим выпуском Visual Studio 2017

(Unity) Проект несовместим с текущим выпуском Visual Studio 2017

Перестал открываться проект Unity/С#, после установки поддержки C++ проектов(До этого все работало) Решение вроде открывается, в самом проекте...

360