题
我试图使用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">
不隶属于 StackOverflow