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.

Foi útil?

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">
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top