Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: user740986Ответов: 1

Я добавляю файлы в проект 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;

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

Спасибо.

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

csprojlinq-to-xmlxelement

Ответы

Ответ 1 · рейтинг 1 · Daniel Hilgarth

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы