XmlPoke и уникальные узлы - PullRequest
       35

XmlPoke и уникальные узлы

5 голосов
/ 06 апреля 2010

Я пытаюсь использовать задачу xmlpoke для обновления файла проекта VS (который является XML). В корне проекта есть несколько узлов PropertyGroup, я пытаюсь выбрать первый. XML выглядит так

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

Я использую xpath, равный //Project/PropertyGroup[1], чтобы получить первую группу PropertyGroup, но я получаю сообщение об ошибке: «Неуникальный xpath задан //Project/PropertyGroup[1]ustoms.

edit: извините, я не думал, что это имеет значение (но это так), у Project есть пространство имен. Я поставил правильный XML с правильным xmlpoke в качестве ответа для будущих пользователей.

1 Ответ

9 голосов
/ 06 апреля 2010

Хорошо, я упростил приведенный выше фрагмент XML - я думаю, что кто-то понял бы это, если бы я этого не сделал.Ответ заключается в том, что, поскольку у Project есть пространство имен, оно должно выглядеть следующим образом:

   <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 выглядит следующим образом:

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