You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Azure构建号标记INF文件的driverVer版本

解决INF文件中使用Azure构建号动态生成DriverVer的问题

核心思路

INF文件本身不会自动解析Azure Pipeline的环境变量,必须在构建前通过文本替换把占位符替换成实际的构建号。以下是具体步骤:


1. 修改INF文件的占位符

先把INF里的DriverVer行改成带占位符的格式,比如:

DriverVer=04/10/2024,1.0.14.__BUILD_ID__

这里用__BUILD_ID__作为占位符(双下划线避免和其他内容冲突),日期部分可以固定,或者后面也换成动态日期。

2. 在Azure Pipeline中添加替换任务

用Azure DevOps的Replace Tokens任务(在Pipeline市场可添加)来替换INF里的占位符:

  • 在你的azure-pipelines.yml中添加任务:
- task: replacetokens@5
  inputs:
    rootDirectory: '$(Build.SourcesDirectory)'
    targetFiles: '**/*.inf' # 匹配你的INF文件路径,可指定具体文件比如'driver/myDriver.inf'
    encoding: 'auto'
    tokenPattern: 'default'
    tokenPrefix: '__'
    tokenSuffix: '__'
    writeBOM: false
    actionOnMissing: 'warn'
    keepToken: false
    actionOnNoFiles: 'continue'
    enableTransforms: false
    enableRecursion: false
    useLegacyPattern: false
    enableTelemetry: true
  • 在Pipeline的变量里添加BUILD_ID,值设为$(Build.BuildId)(Azure默认的递增构建号),或者你自定义的构建号部分(比如$(Build.BuildNumber)如果是自定义格式)。

3. 可选:动态生成DriverVer的日期部分

如果想让日期也用构建当天的日期,把INF里的日期改成占位符:

DriverVer=__BUILD_DATE__,1.0.14.__BUILD_ID__

然后在Pipeline变量里添加BUILD_DATE,值设为$(Build.StartTime:MM/dd/yyyy)(Azure会自动把构建开始时间格式化成MM/dd/yyyy,符合DriverVer的日期要求)。

4. 同步VCXPROJ的版本(可选)

如果你希望VCXPROJ里的版本属性也包含构建号,可以用PowerShell脚本在替换INF前修改VCXPROJ:

$vcxprojPath = "$(Build.SourcesDirectory)/driver/myDriver.vcxproj"
$xml = [xml](Get-Content $vcxprojPath)
$versionNode = $xml.Project.PropertyGroup | Where-Object { $_.Version }
$versionNode.Version = "1.0.14.$(Build.BuildId)"
$xml.Save($vcxprojPath)

把这段脚本作为Pipeline的一个PowerShell任务放在替换INF的任务之前。

为什么直接用环境变量不行?

驱动项目的INF文件在编译/打包过程中,不会自动读取系统环境变量并替换内容,必须通过构建过程中的主动文本替换来完成占位符的替换,这是INF文件的静态特性决定的。

内容的提问来源于stack exchange,提问作者shravya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 10:04:51