Динамически генерировать версию сборки во время сборки в .NET Core? - PullRequest
0 голосов
/ 11 июля 2019

Я бы хотел программно назначить номер версии моей сборки .NET Core во время сборки с использованием кода C #.

Вот пример кода, который я использовал бы для генерации номера версии:

string vString = DateTime.UtcNow.ToString("yy.M.d.") + ((DateTime.UtcNow - DateTime.UtcNow.Date).TotalSeconds / 10).ToString("F0");
Version v = Version.Parse(vString);

Теперь v содержит версию, которую я хотел бы назначить сборке.

Я хочу быть в состоянии сделать это из кода C #, чтобы я мог выполнять любые произвольные вычисления, которые я хочу.Вот еще один пример:

string major = DateTime.UtcNow.ToString("yyMM");
string minor_rev = (DateTime.UtcNow - DateTime.UtcNow.Date).TotalSeconds.ToString("F3");
string vString = major + "." + minor_rev;
Version v = Version.Parse(vString);

Или даже, возможно, получить номер текущей версии из удаленного источника - чтение его из файла или даже из конечной точки в Интернете.Другими словами, я не хочу использовать встроенную автоматическую нумерацию версий .NET, и простого автоинкремента недостаточно.

Ближайшая вещь, которую я видел, которая могла сделать что-то подобное, - это T4процессор, но похоже, что это специфично для классического .NET Framework 4.x, а также поддерживается только в Windows (так как текстовый процессор является Windows EXE).Мне нужно, чтобы это работало везде, где я мог бы скомпилировать сборку .NET Core - Windows или Unix.

Все выполненные мной поиски дают результаты, связанные с T4, или требующие передачи номера версии в dotnet buildкоманда.Хотя я, конечно, мог бы создать собственный инструмент, который мог бы сгенерировать этот номер версии, а затем каким-то образом добавить его на хост сборки CI, запустить его и экспортировать его значение в переменную среды ... ну, вы поняли.Совсем не идеально.

...