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
во всем документе