Chcę uzyskać listę wszystkich odniesień projektu w moim pliku csproj przy użyciu PowerShell. Obecnie mam następujące podejście:PowerShell XML SelectNodes nie przetwarza XPath
[xml]$csproj = Get-Content MyProject.csproj
$refs = $csproj.SelectNodes("//ProjectReference")
foreach($ref in $refs) {
# Later on output more useful information
Write-Host $ref.Name
}
Jednak skrypt nie emituje nic, choć z pewnością są elementami ProjectReference w danym pliku csproj. Poniższy pracuje:
[xml]$csproj = Get-Content MyProject.csproj
foreach($l in $csproj.Project.ItemGroup.ProjectReference) { Write-Host $l.Include }
Ale muszę XPath później także + wyprowadza błędów dla każdego ItemGroup który nie zawiera ProjectReference - tak jak uczynić pracę XPath przy użyciu funkcji SelectNodes
?
XML próbki (w zasadzie każdy plik csproj VS odniesieniami projektowych zrobi):
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup></ItemGroup>
<ItemGroup>
<ProjectReference Include="Text"></ProjectReference>
<ProjectReference Include="Text2"></ProjectReference>
</ItemGroup>
<ItemGroup></ItemGroup>
</Project>
Byłbyś w stanie dodać przykładowy dokument XML, który zapewnia opisanego zachowania? – vonPryz