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
相关产品推荐
相关产品推荐

