MSBuild,MSBuild.ExtensionPack.Xml.XmlFile未更新文件

MSBuild,MSBuild.ExtensionPack.Xml.XmlFile未更新文件,msbuild,msbuildextensionpack,xml,Msbuild,Msbuildextensionpack,Xml,我得到了以下测试代码: <Target Name="TestTarget"> <MSBuild.ExtensionPack.Xml.XmlFile TaskAction="UpdateElement" File="@(ConfigurationFile)" XPath="/MyConfiguration/Settings/RetentionTime" InnerText="$(RetentionTime)"/> &l

我得到了以下测试代码:

<Target Name="TestTarget">
    <MSBuild.ExtensionPack.Xml.XmlFile
        TaskAction="UpdateElement"
    File="@(ConfigurationFile)"
    XPath="/MyConfiguration/Settings/RetentionTime"
        InnerText="$(RetentionTime)"/>
</Target>

(ConfigurationFile位于ItemGroup中,在其他地方我需要全名,因此它很方便)

输出为: XmlFile:C:\Development\Test\build\Test.xml 更新元素:/MyConfiguration/Settings/RetentionTime。内部文本:30

没有错误,生成成功。但是,当我随后打开XML文件时,RetentionTime元素仍然是空的


如果我将XPath更改为不存在的元素,则会出现错误,因此这应该是正确的。你知道我是否遗漏了什么吗?我不明白…

一个陷阱是当目标文件声明默认名称空间时。必须在xpath中提供此命名空间:

<Target Name="TestTarget">
    <ItemGroup
      <_namespaces Include="MyNamespace">
        <Prefix>mns</Prefix>
        <Uri>http://myNamespace</Uri>
      </_namespaces>
    </ItemGroup>

    <MSBuild.ExtensionPack.Xml.XmlFile
        TaskAction="UpdateElement"
    File="@(ConfigurationFile)"
    XPath="/mns:MyConfiguration/mns:Settings/mns:RetentionTime"
        InnerText="$(RetentionTime)"
        Namespaces="@(_namespaces)"/>
</Target>


已解决:尽管文档中另有说明,但似乎必须在XPath中指定名称空间属性并使用名称空间!