我试图使用xmlpoke任务更新VS项目文件(这是XML)。在项目的根,有多个节点的PropertyGroup,我想选择第一个。的XML看起来像这样

 <Project>
    <PropertyGroup>
    </PropertyGroup>
    <PropertyGroup>
    </PropertyGroup>
    <PropertyGroup>
    </PropertyGroup>
 </Project>

我使用//Project/PropertyGroup[1]的XPath来获得所述第一的PropertyGroup,但我得到的错误:“非唯一的xpath给出//项目/的PropertyGroup [1]”

编辑:对不起,我认为这并不重要(但它),项目有一个命名空间。我把正确的XML具有正确xmlpoke作为未来任何搜索答案。

有帮助吗?

解决方案

好吧,我简化了XML片段上方太多 - 我想有人会想到这一点,如果我没有。答案是因为项目具有名称空间,它需要是这样的

   <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 ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top