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" ... />
有没有办法使用以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" ... />