Ich möchte mit PowerShell eine Liste aller Projektreferenzen in meiner csproj-Datei abrufen. Zur Zeit habe ich den folgenden Ansatz:PowerShell XML SelectNodes kann XPath nicht verarbeiten
[xml]$csproj = Get-Content MyProject.csproj
$refs = $csproj.SelectNodes("//ProjectReference")
foreach($ref in $refs) {
# Later on output more useful information
Write-Host $ref.Name
}
Allerdings ist das Skript nicht ausgegeben nichts, obwohl es sicherlich ProjectReference Elemente in der angegebenen csproj Datei ist. Die folgende funktioniert:
[xml]$csproj = Get-Content MyProject.csproj
foreach($l in $csproj.Project.ItemGroup.ProjectReference) { Write-Host $l.Include }
Aber ich XPath müssen auch später + es gibt Fehler für jede ItemGroup, die keine ProjectReference enthält - so wie XPath Arbeit mit der SelectNodes
Funktion zu machen?
XML-Beispiel (im Wesentlichen jede VS csproj Datei mit Projektreferenzen tun wird):
<?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>
Würden Sie in der Lage sein, eine Probe XML-Dokument hinzufügen, die das beschriebene Verhalten liefert? – vonPryz