在代码中更改CSProj中的AssemblyName

时间:2012-05-07 22:34:54

标签: c# xpath csproj

我正在编写一个实用程序,它将更改csproj文件的程序集名称。我知道csproj本质上是XML,因此XPath应该可以工作。事实上,我可以让它为某些信息工作。这是我的代码:

var xmlDoc = new XmlDocument();
xmlDoc.Load(file);
XmlNamespaceManager mgr = new XmlNamespaceManager(xmlDoc.NameTable);
mgr.AddNamespace("x", xmlDoc.DocumentElement.NamespaceURI);

XmlNode node = xmlDoc.SelectSingleNode("//x:PropertyGroup//AssemblyName", mgr);
node.Value = newValue;
xmlDoc.Save(file);

但是,node为空。我也尝试使用"//x:PropertyGroup[1]//AssemblyName"无济于事。如果我只是尝试找到"//x:PropertyGroup"它会正常工作,所以我假设我的问题是并非每个PropertyGroup节点都有一个AssemblyName节点。

我根据this thread中的建议使用了NamespaceManager,并且我已经能够通过建议here通过XLinq检索AssemblyName值,但我需要更新值,而不仅仅是读取它。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

似乎通过评论解决了这个问题:

只是猜测,但是在这个XPath:// x:PropertyGroup // AssemblyName中,AssemblyName也不会出现在x表示的命名空间中。即(不知道数据)我敢打赌它应该是// x:PropertyGroup // x:AssemblyName - dkackman

相关问题