如何在MSBuild脚本中转义百分号字符?
解决MSBuild中Exec命令含%密码的转义问题
在MSBuild里直接用$(PSW).replace('%','%%')是无效的,因为MSBuild的属性替换需要使用**.NET静态方法调用语法**,而非脚本式的简单replace写法。你可以按以下方式处理:
定义转义后的密码属性
在MSBuild项目文件中,先创建一个转义后的密码属性,将单个%替换为%%:<PropertyGroup> <EscapedPSW>$([System.String]::Replace('$(PSW)', '%', '%%'))</EscapedPSW> </PropertyGroup>在Exec命令中引用转义属性
修改原Exec命令,使用转义后的$(EscapedPSW),同时保留MSBuild对双引号的转义语法":<Exec Command='net use \\myshare /user:$(USR) "$(EscapedPSW)"'/>
关键说明
MSBuild的属性函数必须遵循.NET静态方法调用格式,$([System.String]::Replace(原字符串, 目标字符, 替换字符))才是正确的字符串替换写法,之前的.replace()语法不符合MSBuild的规则,因此无法生效。
如果密码中还包含其他CMD需要转义的特殊字符(如&、|等),需额外处理,但针对%的场景,上述方案已能解决问题。
内容的提问来源于stack exchange,提问作者jing
相关产品推荐
相关产品推荐

