我正在尝试添加和删除C#.csproj文件中的元素。该文件部分显示在下方。有人能告诉我如何做以下两件事吗?
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
</PropertyGroup>
<ItemGroup>
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
</ItemGroup>
<ItemGroup>
<Compile Include="Generate\DatabaseContext.cs" />
<Compile Include="Generate\EntityClasses.cs" />
<Compile Include="Generate\Extensions.cs" />
<Compile Include="Schema\Column.cs" />
<Compile Include="Schema\EntityRef.cs" />
<Compile Include="SerializedData\Tables.xml" /> //I want to add this
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
答案 0 :(得分:4)
您可以通过以下方式添加指定的行:
XNamespace ns = "http://schemas.microsoft.com/developer/msbuild/2003";
XDocument xDoc = XDocument.Load(fileName);
var b = xDoc.Descendants(ns + "Compile").First();
b.Parent.Add(
new XElement(ns + "Compile",
new XAttribute("Include", @"SerializedData\Tables.xml")
)
);
xDoc.Save(fileName);
要删除指定的行,请尝试以下操作:
XNamespace ns = "http://schemas.microsoft.com/developer/msbuild/2003";
XDocument xDoc = XDocument.Load(fileName);
var b = xDoc.Descendants(ns + "Compile")
.Where(el => el.Attribute("Include").Value == @"SerializedData\Tables.xml");
if (b != null)
{
b.Remove();
xDoc.Save(fileName);
}
答案 1 :(得分:1)
我认为这应该没问题
XDocument xmlDoc = XDocument.Load(Server.MapPath("People.xml"));
xmlDoc.Element("Persons").Add(new XElement("Person", new XElement("Name", txtName.Text),
new XElement("City", txtCity.Text), new XElement("Age", txtAge.Text)));
xmlDoc.Save(Server.MapPath("People.xml"));
答案 2 :(得分:1)
XDocument projects = XDocument.Load(fileName);
XNamespace xmlns = "http://schemas.microsoft.com/developer/msbuild/2003";
// Delete element (<Compile Include="SerializedData\Tables.xml" />);
var query1 = from p in projects.Descendants(xmlns + "Project").Descendants(xmlns + "ItemGroup").Descendants(xmlns + "Compile")
where p.Attribute("Include").Value == @"SerializedData\Tables.xml" select p;
if (query1.Any())
{
XElement node = query1.Single();
node.Remove();
}
//System.Diagnostics.Debug.WriteLine(projects);
projects.Save(fileName);
// Add the element.
var query2 = from p in projects.Descendants(xmlns + "Project").Descendants(xmlns + "ItemGroup") where p.Descendants(xmlns + "Compile").Any() select p;
if (query2.Any())
{
query2.Single().Add(new XElement(xmlns + "Compile", new XAttribute("Include", @"SerializedData\Tables.xml")));
}
//System.Diagnostics.Debug.WriteLine(projects);
projects.Save(fileName);