通过xml方式更改项目文件的元素

时间:2014-01-25 15:38:09

标签: c# xml linq-to-xml csproj

有时我需要将最多60个winforms或类库项目加载到解决方案中..并更改每个项目的输出路径和参考路径。

所以我为同一个

写了一个wpf应用程序
private void Button_Click(object sender, RoutedEventArgs e)
{
    var path = txtRootPath.Text;
    var projFiles = System.IO.Directory.GetFiles(path, "*.csproj", SearchOption.AllDirectories);

    foreach (var item in projFiles)
    {
        var xDoc = XDocument.Load(item);
        var outputNodes = xDoc.Root.Descendants("OutputPath");
        foreach (var outoutNode in outputNodes)
        {
            //this part is never hit..
            outoutNode.Value = txtOutputPath.Text;
        }

        //similarly for referencePath
    }

    lblResult.Content = string.Format("Files: {0}", projFiles.Count());
}

outputNodes集合将为空

有人可以告诉我这里做错了吗

修改

我发现问题出在Project元素中的xmlns="http://schemas.microsoft.com/developer/msbuild/2003"属性..

解决方案:

在此解决方案中给出 -
Parsing Visual Studio Project File as XML
Linq-to-XML with XDocument namespace issue

1 个答案:

答案 0 :(得分:0)

引用“OutputPath”元素时必须使用默认命名空间。

    XNamespace ns = "http://schemas.microsoft.com/developer/msbuild/2003";
    var outputNodes = xDoc.Root.Descendants(ns + "OutputPath");