XmlPoke и уникальные узлы
Я пытаюсь использовать задачу xmlpoke для обновления файла проекта VS (который является XML). В корне проекта есть несколько узлов PropertyGroup, я пытаюсь выбрать первый. XML выглядит так
<Project>
<PropertyGroup>
</PropertyGroup>
<PropertyGroup>
</PropertyGroup>
<PropertyGroup>
</PropertyGroup>
</Project>
Я использую xpath //Project/PropertyGroup[1]
чтобы получить первую группу PropertyGroup, но я получаю сообщение об ошибке: "Не уникальный путь xpath задан //Project/PropertyGroup[1]".
редактировать: извините, я не думаю, что это имеет значение (но это имеет), Project имеет пространство имен. Я поставил правильный XML с правильным xmlpoke в качестве ответа для любых будущих искателей.
1 ответ
Хорошо, я слишком сильно упростил приведенный выше фрагмент 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">