Xpath не оператор в Select-Xml через Powershell

Я работаю с файлами csproj и пытаюсь написать командлет, который извлекает все файлы, на которые ссылается файл проекта. Это будет включать все элементы Compile, EmbeddedResource, Resource, Content и None (что более важно, их значения @Include), но я специально хочу исключить элементы Reference, так как они ссылаются на dll, которые меня не интересуют.

У меня нет тонны опыта, но я думаю, что выражение xpath, которое я хотел бы, выглядело бы примерно так

$projectFile | Select-Xml -namespace @{msb="http://schemas.microsoft.com/developer/msbuild/2003"} -xpath "//msb:ItemGroup/*[not(self::node() = msb:Reference) and @Include]"

Однако, как только я пытаюсь ввести self::node(), мое выражение не возвращает узлов. Я не уверен на 100%, что self::node() - верный способ сделать это. Любая идея, что я хотел бы изменить, чтобы он возвращал, концептуально, "все значения атрибутов Включить для узлов , которые не являются ссылочными элементами, которые являются дочерними элементами элемента ItemGroup?"

1 ответ

Решение

Я думаю, что вам нужно:

//msb:ItemGroup/*[not(self::msb:Reference)]/@Include

Значение: все Include атрибуты любого потомка msb:ItemGroup кроме msb:Reference во всем документе

Другие вопросы по тегам