Как получить доступ к переменной Azure Build.BuildNumber из приложения ASP.NET?

Как получить доступ к переменной Azure Build.BuildNumber из приложения ASP.NET?

Это то же самое, что и номер сборки, и его можно получить с помощью (источника) ?

Assembly web = Assembly.Load("App_Code");
AssemblyName webName = web.GetName();

string myVersion = webName.Version.ToString();

Я имею в виду это Build.BuildNumber:

Имя завершенной сборки, также известное как номер запуска. Вы можете указать, что входит в это значение.

Типичное использование этой переменной — сделать ее частью формата метки, который вы указываете на вкладке репозитория.

Примечание. Это значение может содержать пробелы или другие недопустимые символы метки. В этих случаях формат этикетки не будет выполнен.

Эта переменная находится в области действия агента и может использоваться как переменная среды в скрипте и как параметр в задаче сборки, но не как часть номера сборки или как тег контроля версий.


person manymanymore    schedule 19.04.2021    source источник


Ответы (2)


Между номером сборки, сгенерированной в конвейере, и номером версии в коде нет прямой связи. Как бы там быть, потому что для этого код нужно изменить, чтобы код содержал номер сборки.

Однако есть задачи сборки, способные сделать именно это: взять номер сборки конвейера devops и внедрить его в код.

Для этого я использую задачи VersionAssemblies и VersionDotNetCoreAssemblies из этого проекта.

Необходимо указать, как настроен номер сборки, см. документы. Затем вам нужно запустить задачу непосредственно перед выполнением фактической сборки.

Затем конвейер yaml выглядит примерно так:

name: '1.$(date:yyyy).$(DayOfYear)$(rev:.r)'

<snip>

          - task: VersionDotNetCoreAssemblies@2
            inputs:
              Path: '$(Build.SourcesDirectory)'
              VersionNumber: '$(Build.BuildNumber)'
              Injectversion: False
              VersionRegex: '\d+\.\d+\.\d+\.\d+'
              FilenamePattern: '.csproj'
              AddDefault: true
              OutputVersion: 'OutputedVersion'

Затем в коде мы можем сделать это:

var version = assembly.GetName().Version.ToString();

Вывод будет примерно таким:

1.2021.109.1

Полная документация по задаче сборки находится здесь. Также есть задача для сборок .Net Framework (не .Net Core).

person Peter Bons    schedule 19.04.2021

Если вы хотите использовать версию DLL с номером сборки, лучше всего, как @Peter Bons ответил здесь.

Но если вы хотите получить доступ к номеру сборки внутри вашего кода, вы можете сделать это следующим образом:

var buildNumber = Environment.GetEnvironmentVariable("Build_BuildNumber", EnvironmentVariableTarget.Process);
person Shayki Abramczyk    schedule 19.04.2021