2010-04-06 18 views
5

VS Project Dosyasını (XML olan) güncelleştirmek için bir xmlpoke görevi kullanmaya çalışıyorum. Proje kökünde, birden çok PropertyGroup düğüm vardır, ilkini seçmeye çalışıyorum. XML İlk PropertyGroup almak için //Project/PropertyGroup[1] bir xpath kullanıyorum buXmlPoke ve benzersiz düğümler

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

gibi görünüyor, ama ben hatayı alıyorum: “Benzersiz Olmayan xpath verilen // Proje/PropertyGroup [1]”.

düzenleme: Üzgünüm, önemli olduğunu düşünmedim (ama yapar), Project'in bir ad alanı vardır. Doğru XML'yi, gelecekteki arama yapanlar için bir cevap olarak doğru xmlpoke ile koydum.

cevap

9

Tamam, XML snippet'ini çok fazla basitleştirdim - Sanırım olmasaydı birileri onu anlardı. Cevap Projesi ad sahip olduğundan, bu Referans için bu

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

gibi olması gerekiyor yani, Proje etiketi şuna benzer:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build"> 
+4

1+ kendinizi bulmak için. BTW: Yapmanız gerekmedikçe '//' kullanmayın. 'X: Project' belge öğesi ise, '/ x: Project/...' kullanın. – Tomalak

+1

Teşekkürler @Tomalak. Sadece bir soruda kodu çok basitleştirmemelisiniz. Neyin önemli olduğu konusunda yanlış olabilirsiniz, bu yüzden ilk başta bunu anlayamazsınız. –

+0

Kesinlikle. Kod örneklerini oluşturan pek çok insanı, problemlerini soyut bir şekilde yönetmelerini kolaylaştıracak şekilde çok gördüm. :-) – Tomalak