Pregunta

Estoy tratando de utilizar una tarea xmlpoke para actualizar un archivo de proyecto VS (que es XML). En la raíz del proyecto, hay múltiples nodos PropertyGroup, estoy tratando de seleccionar la primera. Las miradas XML como este

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

Estoy utilizando un XPath de //Project/PropertyGroup[1] para conseguir el primer PropertyGroup, pero me sale el error: “XPath para no único dado // Proyecto / PropertyGroup [1]”

Edit: Lo siento, yo no creo que importaba (pero lo hace), el Proyecto cuenta con un espacio de nombres. Pongo el XML correcto con el xmlpoke correcta como una respuesta para cualquier buscadores futuras.

¿Fue útil?

Solución

Ok, simplifica el fragmento de XML anterior demasiado - Creo que alguien se habría dado cuenta si no lo hubiera hecho. La respuesta es que, dado que tiene un espacio de nombres del proyecto, tiene que ser así

   <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>

Como referencia, el proyecto parece etiqueta como esta:

  <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top