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.

È stato utile?

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">
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top