public static PackageReferencesItemGroupXElement AddPackageReferencesItemGroupXElement(this ProjectXElement projectXElement) { var xItemGroupXElement = projectXElement.AddItemGroupXElement(); var packageReferencesItemGroupXElement = PackageReferencesItemGroupXElement.New(xItemGroupXElement); return(packageReferencesItemGroupXElement); }
// I don't want to create <ItemGroup> elements with no child elements. // Maybe this is a final formatting thing before serialization? 1) Ensure XText nodes sandwich all <Project> element children, 2) Ensure that all empty <ItemGroup> elements are removed. // YES! But, I will also do my best to prevent adding empty <ItemGroup> elements. Doing so at the ProjectXElement extensions level of abstraction might be the wrong level, but . // Is there an <ItemGroup> element with a <PackageReference> child? // Yes? Use return that <ItemGroup> as a PackageReferencesItemGroupXElement. // No? Create public static bool HasPackageReferencesItemGroupElement(this ProjectXElement projectXElement, out PackageReferencesItemGroupXElement packageReferencesItemGroupXElement) { var hasItemGroupElement = projectXElement.HasItemGroupElementWithChildSingleOrDefault(ProjectFileXmlElementName.PackageReference, out var itemGroupElement); packageReferencesItemGroupXElement = hasItemGroupElement ? PackageReferencesItemGroupXElement.New(itemGroupElement) : default; return(hasItemGroupElement); }