我想问一个老朋友的后续问题(但古蒂)
Reading the list of References from csproj files
(尽管我不是那个问题的作者)。
在分析csproj文件时,我需要选择全部
编译
具有
链接
元素作为子元素。
我首先尝试将答案扩展到以下链接问题:
IEnumerable<string> links = csprojFile
Element(msbuild + "Project")
.Elements(msbuild + "ItemGroup")
.Elements(msbuild + "Compile")
.Where(element => element.HasElements)
.Attributes("Include")
这显然是不够的,因为它选择了所有具有任何类型子元素的元素(因此,在选择我想要的元素时,它还选择了额外的元素)。所以我试着:
IEnumerable<string> links = csprojFile
.Element(msbuild + "Project")
.Elements(msbuild + "ItemGroup")
.Elements(msbuild + "Compile")
.Where(element => element.HasElements && element.Descendants("Link").Any())
.Attributes("Include")
.Select(element => element.Value);
…它什么也不回。我是Linq的初学者,尤其是Linq2XML,但对我来说,“where”子句说:“where元素有子元素,其中至少一个子元素被命名为link”。错了吗?
非常感谢您的帮助。