XmlPoke任务修剪值

Fil*_*lip 8 c# msbuild xpath msbuild-task xmlpoke

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

再生产:

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>
Run Code Online (Sandbox Code Playgroud)

的test.xml:

<root>
    <element attr="replaceme" />
    <replaceme/>
</root>
Run Code Online (Sandbox Code Playgroud)

当我跑:

MSBuild /v:detailed test.targets
Run Code Online (Sandbox Code Playgroud)

我得到output.xml没有空格:

<root>
  <element attr="X" />
  <replaceme>X</replaceme>
</root>
Run Code Online (Sandbox Code Playgroud)

有没有办法强制XmlPoke设置正确的值(末尾有空格)?

Sim*_*ier 5

值是MSBuild "Item"通常,items代表文件路径,MSBuild以特殊(秘密)方式处理它们.

因此,该问题与XML转义无关,而与MSBuild 项目转义无关.这是你如何强制空间角色:

<XmlPoke ... Value="X%20" ... />
Run Code Online (Sandbox Code Playgroud)