XmlPoke任务调整值

时间:2018-12-04 13:21:19

标签: c# xpath msbuild msbuild-task xmlpoke

是否可以使用以空格结尾的值作为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设置正确的值(末尾带有空格)?

1 个答案:

答案 0 :(得分:5)

值是MSBuild "Item",通常,项目代表文件路径,MSBuild以特殊的方式(秘密)对待它们。

因此,该问题与XML转义无关,而与MSBuild item escaping有关。这样可以强制使用空格字符:

<XmlPoke ... Value="X%20" ... />
相关问题