Pergunta
Estou tentando usar uma tarefa xmlpoke para atualizar um arquivo de projeto vs (que é XML). Na raiz do projeto, existem vários nós de grupo de propriedades, estou tentando selecionar o primeiro. O XML se parece com isso
<Project>
<PropertyGroup>
</PropertyGroup>
<PropertyGroup>
</PropertyGroup>
<PropertyGroup>
</PropertyGroup>
</Project>
Estou usando um XPath de //Project/PropertyGroup[1]
Para obter o primeiro grupo de propriedades, mas recebo o erro: “XPATH não exclusivo dado // Project/PropertyGroup [1]”.
EDIT: Desculpe, eu não achei que importava (mas o faz), o Project tem um espaço para nome. Coloquei o XML correto com o XMLPoke correto como resposta para futuros pesquisadores.
Solução
OK, simplifiquei o trecho XML acima demais - acho que alguém teria descoberto se eu não tivesse. A resposta é que, como o projeto tem um espaço para nome, precisa ser assim
<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>
Para referência, a tag do projeto se parece com a seguinte:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">