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値を取得できましたが、値を読み取るだけでなく、更新する必要があります。
私は何が欠けていますか?