首页 > 解决方案 > 如何从 ASP.NET 应用程序内部访问“Build.BuildNumber”Azure 变量?

问题描述

如何Build.BuildNumber从 ASP.NET 应用程序内部访问 Azure 变量?

它是否与程序集号相同并且可以使用()检索?

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

string myVersion = webName.Version.ToString();

我的意思 Build.BuildNumber

已完成构建的名称,也称为运行编号。您可以指定此值中包含的内容。

此变量的典型用途是使其成为您在存储库选项卡上指定的标签格式的一部分。

注意:此值可以包含空格或其他无效标签字符。在这些情况下,标签格式将失败。

此变量是代理范围的,可以用作脚本中的环境变量和构建任务中的参数,但不能用作构建号的一部分或版本控制标记。

标签: c#azure-devopsazure-pipelinesazure-devops-pipelinesbuild-numbers

解决方案


管道中生成的内部版本号与代码中的版本号之间没有直接关系。怎么会呢,因为为了实现这一点,需要更改代码以使代码包含内部版本号。

但是,有一些构建任务能够做到这一点:获取 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)程序集还有一项任务。


推荐阅读