csprojファイルから参照のリストを読んでいる古い(しかし良い)人にフォローアップの質問をしたいと思います(ただし、私はその質問の作成者ではありません)。
csproj ファイルの解析では、子としてLink要素を持つすべてのCompile要素を選択する必要があります。
最初に、リンクされた質問への回答を次のように拡張しようとしました。
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」節には、「要素には子があり、それらの子の少なくとも1つはLinkという名前です」と書かれています。それは間違っていますか?
助けていただければ幸いです。