Example #1
0
        /// <summary>
        /// Removes a &lt;ItemGroup&gt; from the main project file.
        /// </summary>
        /// <param name="itemGroupToRemove"></param>
        /// <owner>RGoel</owner>
        public void RemoveItemGroup
        (
            BuildItemGroup itemGroupToRemove
        )
        {
            error.VerifyThrowArgumentNull(itemGroupToRemove, "itemGroupToRemove");

            // Confirm that it's not an imported item group.
            error.VerifyThrowInvalidOperation(!itemGroupToRemove.IsImported,
                "CannotModifyImportedProjects");

            // Confirm that it's actually a persisted BuildItemGroup in the current project.
            error.VerifyThrowInvalidOperation(
                (itemGroupToRemove.ParentProject == this) && (itemGroupToRemove.ItemGroupElement != null),
                "IncorrectObjectAssociation", "BuildItemGroup", "Project");

            // Clear out the children of the BuildItemGroup.
            itemGroupToRemove.Clear();

            XmlElement parentElement = itemGroupToRemove.ParentElement;
            ErrorUtilities.VerifyThrow(parentElement != null, "Why doesn't this IG have a parent XML element?");
            parentElement.RemoveChild(itemGroupToRemove.ItemGroupElement);

            // Remove the item group from our collection.
            ErrorUtilities.VerifyThrow(itemGroupToRemove.ParentCollection != null, "Why doesn't this IG have a parent collection?");
            itemGroupToRemove.ParentCollection.RemoveItemGroup(itemGroupToRemove);

            itemGroupToRemove.ClearParentProject();
            this.MarkProjectAsDirty();
        }