我有一个像这样的XML文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\XYZ.MyAPP.EntityModel\AppContext.cs" Link="AppContext.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
我想删除<ItemGroup>
的属性“链接”的<ItemGroup>
。
注意:可能有多个<ItemGroup>
节点(如本例中所示)发生多次或没有属性“链接”。
我尝试过这样的事情:
[Xml]$xml = Get-Content -Path .\XYZ.MyApp.Model.csproj
$nodes = $xml.SelectNodes("//Project/ItemGroup")
foreach ($node in $nodes) {
if ($node.HasChildNodes) {
foreach ($child in $node.ChildNodes) {
if ($child.Name -eq "Compile") {
Write-Host "BINGO"
$child.ParentNode.ParentNode.RemoveChild("//Project/ItemGroup")
}
}
}
}
注意:此代码无效。我遇到错误:
对于“ RemoveChild”类型为“ System.Xml.XmlNode”,无法将参数“ 0”转换为值“ // Project / ItemGroup”:“无法转换类型为” // Project / ItemGroup”的值System.String”以键入“ System.Xml.XmlNode”。”
目标:查找所有<ItemGroup>
节点,并仅删除具有链接属性的节点。