是否可以使用以空格结尾的值作为XmlPoke值?当我执行任务时,值将被替换,但末尾没有空格。
复制:
测试目标:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Build">
<Copy SourceFiles="test.xml" DestinationFiles="output.xml"/>
<XmlPoke Query="/root/element/@attr[.='replaceme']|/root/replaceme" Value="X " XmlInputPath="output.xml"/>
</Target>
</Project>
test.xml:
<root>
<element attr="replaceme" />
<replaceme/>
</root>
当我跑步时:
MSBuild /v:detailed test.targets
我得到的output.xml没有空格:
<root>
<element attr="X" />
<replaceme>X</replaceme>
</root>
是否有一种方法可以强制XmlPoke设置正确的值(末尾带有空格)?
答案 0 :(得分:5)
值是MSBuild "Item",通常,项目代表文件路径,MSBuild以特殊的方式(秘密)对待它们。
因此,该问题与XML转义无关,而与MSBuild item escaping有关。这样可以强制使用空格字符:
<XmlPoke ... Value="X%20" ... />