Как лучше всего получить этот XElement при чтении csproj с помощью XDocument?

Я добавляю файлы в проект cs за пределами vs.net (изображения, css и т. д., файлы вне нашей группы, но они необходимы для публикации). Я загружаю csproj и запрашиваю ItemGroup, содержащую узлы «Содержание».

XNamespace msbuild = "http://schemas.microsoft.com/developer/msbuild/2003";
XDocument projectDocument = XDocument.Load("someproject.csproj");

var itemGroup = projectDocument.Element(msbuild + "Project")
                               .Elements(msbuild + "ItemGroup")
                               .Descendants()
                               .Where(x => x.Name == msbuild +"Content")
                               .First().Parent;

Есть ли лучший способ получить эту группу?

Спасибо.


person user740986    schedule 30.05.2011    source источник
comment
Ничего плохого, мне было интересно, есть ли более прямой вызов, который можно было бы сделать   -  person user740986    schedule 31.05.2011
comment
Похоже, мой комментарий не по делу. Единственное, что я вижу, это то, что вы можете получить исключение, если нет элементов, соответствующих частям вашего оператора LINQ.   -  person cchamberlain    schedule 31.05.2011


Ответы (1)


Вы можете сделать это следующим образом:

var itemGroup = 
    projectDocument.Element(msbuild + "Project")
                   .Elements(msbuild + "ItemGroup")
                   .Where(x => x.Descendants()
                                .Any(y => y.Name == msbuild +"Content")
                         )
                   .FirstOrDefault();
person Daniel Hilgarth    schedule 31.05.2011