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

Azure Pipeline从.NET Maui项目文件获取版本号出现尾随空格问题

.NET Maui Azure DevOps流水线版本变量空格问题解决

1. 空格的常见来源

  • XML节点空白字符:.csproj中的<Version>节点可能包含尾随空格、换行或缩进空白,比如节点内容写成多行带缩进,或是手动输入时误加空格:
    <Version>
      1.2.3
    </Version>
    
    这种情况下读取到的InnerText会包含换行和缩进空格。
  • PowerShell读取XML的默认行为:直接通过SelectSingleNode获取节点的InnerText时,会保留节点内所有空白字符(包括换行、制表符),而非仅版本号本身。
  • 变量设置时的额外空格:如果PowerShell脚本中设置流水线变量的语句不小心引入空格,比如Write-Host "##vso[task.setvariable variable=AppVersion] $version"(注意$version前的空格),也会导致变量带空格。

2. 去除Pipeline变量空格的有效方法

  • 使用Trim()方法(推荐):专门去除字符串首尾的空白字符(空格、换行、制表符均包含),读取版本后立即处理:
    $xml = [xml](Get-Content YourProject.csproj)
    $version = $xml.SelectSingleNode("//Version").InnerText.Trim()
    Write-Host "##vso[task.setvariable variable=AppVersion]$version"
    
  • 正则精准替换首尾空白:用正则表达式仅删除首尾空白,不影响中间内容(版本号一般无中间空格):
    $version = $version -replace '^\s+|\s+$',''
    
  • 从源头避免:检查并修改.csproj文件,确保<Version>节点内容为单行且无首尾空格:
    <Version>1.2.3</Version>
    
  • 验证变量值:设置变量后可加PowerShell任务输出变量值,用单引号包裹清晰查看首尾是否有空格:
    Write-Host "当前版本变量值:'$(AppVersion)'"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 19:52:06