使用c#在.csproj文件中查找节点

本文关键字:查找 节点 文件 csproj 使用 | 更新日期: 2023-09-27 18:04:26

我在尝试从一个.csproj文件中选择一个特定的节点时遇到了麻烦。

XDocument xmldoc = XDocument.Load("The full path of the .csproj file");

这会将.csproj文件加载到XDocument中。我已经尝试了Descendants, Elements等,试图获得TheNodeIWant及其值,但无法弄清楚为什么我一直没有得到结果。

<?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
        <PropertyGroup>
            <TheNodeIWant>The String I Want </TheNodeIWant>
        </PropertyGroup>
        <PropertyGroup>
        .......
        </PropertyGroup>
    </Project>

如何选择TheNodeIWant并检索其值?

使用c#在.csproj文件中查找节点

参见https://stackoverflow.com/a/4171468/1301310

XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(@"c:'test.txt");
XmlNamespaceManager ns = new XmlNamespaceManager(xmldoc.NameTable);
ns.AddNamespace("msbld", "http://schemas.microsoft.com/developer/msbuild/2003");
XmlNode node = xmldoc.SelectSingleNode("//msbld:TheNodeIWant", ns);
if (node != null)
{
    MessageBox.Show(node.InnerText);
}

您可以使用MSBuild Project类来更好地从代码中使用csproj

我建议使用Xpath在您的csproj文件中导航。