XmlPoke 任务修整值

XmlPoke task trims value

有没有办法使用以space结尾的值作为XmlPoke值?当我执行任务时,值被替换但最后没有 space。

复制:

test.targets:

<?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 没有 space:

<root>
  <element attr="X" />
  <replaceme>X</replaceme>
</root>

有没有办法强制 XmlPoke 设置正确的值(以 space 结尾)?

值是一个 MSBuild "Item" 通常,项目表示文件路径,MSBuild 以特殊(隐蔽)方式处理这些。

因此,问题与 XML 转义无关,而与 MSBuild item escaping 有关。这是强制 space 字符的方法:

<XmlPoke ... Value="X%20" ... />