Значение XmlPoke урезает значение - PullRequest
0 голосов
/ 04 декабря 2018

Есть ли способ использовать значение, заканчивающееся пробелом, в качестве значения 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>

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 голосов
/ 08 декабря 2018

Значением является MSBuild "Элемент" Обычно элементы представляют пути к файлам, и MSBuild обрабатывает их особым образом (под прикрытием).

Таким образом, проблема не связана с экранированием XMLно для MSBuild элемент, выходящий за пределы .Вот как вы можете использовать символ пробела:

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