我的project.csproj文件包含以下三个编译包含。我想立刻删除所有三个编译包含。
<Compile Include="Orkut\Cart\Cart.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Cart.resx"></DependentUpon>
</Compile>
<Compile Include="Orkut\Cart\Cart.Designer.de-DE.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Cart.de-DE.resx"></DependentUpon>
</Compile>
<Compile Include="Orkut\Cart\Cart.Designer.sv-SE.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Cart.sv-SE.resx"></DependentUpon>
</Compile>
我已为此编写代码,但在检查值
后它正在删除 string fileName=@"D:\projectpath\abc.csproj";
XNamespace ns = "http://schemas.microsoft.com/developer/msbuild/2003";
XDocument xDoc = XDocument.Load(fileName);
var b1 = xDoc.Descendants(ns + "Compile")
.Where(el => el.Attribute("Include").Value == @"Orkut\abc.Designer.cs");
if (b1 != null)
{
b1.Remove();
xDoc.Save(fileName);
}
答案 0 :(得分:1)
使用IEnumerable<T>.Remove()
扩展名从其父节点中删除每个匹配节点:
xDoc.Descendants(ns + "Compile")
.Where(el => (string)el.Attribute("Include") == @"Orkut\abc.Designer.cs")
.Remove();
xDoc.Save(fileName);
如果要删除包含Compile
的所有Orkut\Cart\Cart.Designer
元素,请使用以下条件选择这些元素:
Where(e => e.Attribute("Include").Value.StartsWith(@"Orkut\Cart\Cart.Designer"))