如何在MSBuild脚本中转义ASCII代码,保留%80这类特殊字符?
解决MSBuild中保留环境变量里%80的问题
MSBuild会将%开头的字符序列视为特殊转义字符处理,所以环境变量PWD中的%80被解析为无效字符,最终显示为?。要保留原始的%80,需要将%转义为MSBuild可识别的字面量表示:
- 通过MSBuild的字符串替换函数,将环境变量中的
%替换为%25(%25是MSBuild中表示字面%的转义符) - 在
Exec命令中使用转义后的属性值
修改后的MSBuild脚本如下:
<Project ToolsVersion="4.0" DefaultTargets="NetUse"> <PropertyGroup> <!-- 将PWD中的%替换为%25,实现转义 --> <EscapedPWD>$([MSBuild]::Replace($(PWD), '%', '%25'))</EscapedPWD> </PropertyGroup> <Target Name="NetUse"> <Exec Command='net use \location /user:the_user "$(EscapedPWD)"'/> </Target> </Project>
当脚本运行时,MSBuild会将%25还原为%,最终执行的命令即为:net use \location /user:the_user "a%80b"
内容的提问来源于stack exchange,提问作者jing
相关产品推荐
相关产品推荐

