0

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はnullです。私も"//x:PropertyGroup[1]//AssemblyName"無駄に使ってみました。私が試してみて、"//x:PropertyGroup"それがうまくいくことがわかった場合、私の問題は、すべてのPropertyGroupノードにAssemblyNameノードがあるわけではないということだと思います。

このスレッドの提案に従ってNamespaceManagerを使用しており、ここで提案されているようにXLinqを介してAssemblyName値を取得できましたが、値を読み取るだけでなく、更新する必要があります。

私は何が欠けていますか?

4

1 に答える 1

0

これはコメントによって解決されているようです:

推測するだけですが、AssemblyNameは、このXPathのxで示される名前空間にも含まれます:// x:PropertyGroup//AssemblyName。つまり(データを知らなくても)// x:PropertyGroup // x:AssemblyName –dkackmanである必要があります

于 2012-05-08T01:00:10.270 に答える