سؤال
أحاول استخدام مهمة 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">
لا تنتمي إلى StackOverflow