سؤال

أحاول استخدام مهمة XMLPOKE لتحديث ملف مشروع VS (وهو XML). في جذر المشروع ، هناك العديد من العقد PropertyGroup ، أحاول تحديد أول واحد. يبدو XML هكذا

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

أنا أستخدم xpath من //Project/PropertyGroup[1] للحصول على الممتلكات الأولى ، لكنني أحصل على الخطأ: "غير محدد XPath غير المعطى // Project/PropertyGroup [1].

تحرير: آسف ، لم أكن أعتقد أنه مهم (لكنه يفعل) ، يحتوي المشروع على مساحة اسم. أضع XML الصحيح مع XMLPOKE الصحيح كإجابة لأي باحثين في المستقبل.

هل كانت مفيدة؟

المحلول

حسنًا ، لقد قمت بتبسيط مقتطف XML أعلاه كثيرًا - أعتقد أن شخصًا ما كان سيحسب ذلك إذا لم أفعل. الجواب هو أنه نظرًا لأن المشروع يحتوي على مساحة اسم ، يجب أن يكون هكذا

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

للرجوع إليها ، تبدو علامة المشروع هكذا:

  <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top