我将XmlElemnt添加到另一个文件的csproj文件中:
//load the orginal file
XmlDocument xd = new XmlDocument();
xd.Load(fileName);
//load the csproj file to setting
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(project.FullName);
//copy a XmlNode from the orginal file
XmlNode copiedNode = xmlDoc.ImportNode(xd.SelectSingleNode(nodeName), true);
//add the XmlNode to the csproj file
xmlDoc.DocumentElement.InsertAfter(copiedNode,xmlDoc.GetElementsByTagName(nodeName).Item(0));
并且源代码自动将属性xmlns =“”添加到添加的节点:
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'AAA|x86'" xmlns="">
我在帖子中看到了类似的问题: Remove xmlns=“” attribute when adding Reference element into csproj。 解决方案是添加命名空间,但我没有找到如何将命名空间添加到我的代码中。
我该怎么做?或者还有其他方法可以避免添加xmlns属性吗?
答案 0 :(得分:1)
您有两种可能的解决方案:
第一个是设置原始文件的根节点的命名空间:
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'AAA|x86'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
在这种情况下,原始元素的命名空间将与目标根命名空间相同,并且不会添加xmlns属性。
如果不可能,则需要更改程序中的命名空间。但是不允许按设计修改加载的XNode。 It can help.