有时我需要将最多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
答案 0 :(得分:0)
引用“OutputPath”元素时必须使用默认命名空间。
XNamespace ns = "http://schemas.microsoft.com/developer/msbuild/2003";
var outputNodes = xDoc.Root.Descendants(ns + "OutputPath");