我正在尝试使用xmlpoke任务来更新VS Project文件(即XML)。在Project根目录中,有多个PropertyGroup节点,我试图选择第一个节点。 XML看起来像这样
<Project>
<PropertyGroup>
</PropertyGroup>
<PropertyGroup>
</PropertyGroup>
<PropertyGroup>
</PropertyGroup>
</Project>
我使用//Project/PropertyGroup[1]
的xpath来获取第一个PropertyGroup,但是我收到错误:“给定的非唯一xpath // Project / PropertyGroup [1]”。
编辑:抱歉,我认为这不重要(但确实如此),Project有一个名称空间。我把正确的XML和正确的xmlpoke作为未来搜索者的答案。
答案 0 :(得分:9)
好的,我上面简化了上面的XML片段 - 我想如果我没有,我会想出来的。答案是,由于Project有一个命名空间,它需要像这样
<xmlpoke file="project_file.csproj" value="v4.0" xpath="//x:Project/x:PropertyGroup[1]/x:TargetFrameworkVersion">
<namespaces>
<namespace prefix="x" uri="http://schemas.microsoft.com/developer/msbuild/2003" />
</namespaces>
</xmlpoke>
作为参考,Project标签如下所示:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">