Вопрос

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

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

Я использую XPath //Project/PropertyGroup[1] Чтобы получить первую не свойственную группу, но я получаю ошибку: «Уникальный XPath Endite // 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