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

时间:2012-09-07 14:16:02

标签: msbuild msbuildextensionpack xml

我得到了以下测试代码:

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

(ConfigurationFile在ItemGroup中,在其他地方我需要FullName,因此它派上用场)

输出是: XmlFile:C:\ Development \ Test \ build \ Test.xml 更新元素:/ MyConfiguration / Settings / RetentionTime。 InnerText:30

没有错误,构建成功。但是,当我之后打开XML文件时,RetentionTime元素仍为空。

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

1 个答案:

答案 0 :(得分:2)

当目标文件声明默认命名空间时,一个缺陷就是。必须在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>