Domanda
Sto provando ad usare un compito xmlpoke per aggiornare un file VS progetto (che è XML). Nella radice del progetto, ci sono più nodi PropertyGroup, sto cercando di selezionare il primo. Gli sguardi di XML come questo
<Project>
<PropertyGroup>
</PropertyGroup>
<PropertyGroup>
</PropertyGroup>
<PropertyGroup>
</PropertyGroup>
</Project>
Se si utilizza una XPath di //Project/PropertyGroup[1]
per ottenere il primo PropertyGroup, ma ottengo l'errore: “xpath non unico dato // Progetto / PropertyGroup [1]”
Edit: Scusa, non pensavo fosse importante (ma lo fa), Project ha uno spazio dei nomi. Ho messo il codice XML corretto con il xmlpoke corretta come una risposta per eventuali futuri ricercatori.
Soluzione
Ok, ho semplificato il frammento di codice XML sopra troppo - credo che qualcuno avrebbe capito se non avevo. La risposta è che, poiché Progetto ha uno spazio dei nomi, ha bisogno di essere come questo
<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>
Per riferimento, il progetto sembra tag come questo:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">