Я работаю с файлами 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?"