public void LinkToGroup(MSBuildPropertyGroup group)
 {
     LinkedGroup = group;
     group.PropertyGroupListener = this;
     foreach (var p in group.GetProperties())
     {
         var ep = (MSBuildPropertyEvaluated)GetProperty(p.Name);
         if (ep == null)
         {
             ep = AddProperty(p.Name);
         }
         ep.LinkToProperty(p);
     }
 }
Example #2
0
        static void RemovePropertyIfHasDefaultValue(
            MSBuildPropertyGroup propertyGroup,
            string propertyName,
            string defaultPropertyValue)
        {
            if (!propertyGroup.HasProperty(propertyName))
            {
                return;
            }

            if (propertyGroup.GetValue(propertyName) == defaultPropertyValue)
            {
                propertyGroup.RemoveProperty(propertyName);
            }
        }
Example #3
0
        public void AddPropertyGroup(MSBuildPropertyGroup group, bool insertAtEnd)
        {
            AssertCanModify();
            if (group.ParentProject != null)
            {
                throw new InvalidOperationException("Group already belongs to a project");
            }

            group.ParentNode = this;

            bool added = false;

            if (insertAtEnd)
            {
                var last = ChildNodes.FindLastIndex(g => g is MSBuildPropertyGroup);
                if (last != -1)
                {
                    ChildNodes = ChildNodes.Insert(last + 1, group);
                    added      = true;
                }
            }
            else
            {
                var first = ChildNodes.FindIndex(g => g is MSBuildPropertyGroup);
                if (first != -1)
                {
                    ChildNodes = ChildNodes.Insert(first, group);
                    added      = true;
                }
            }

            if (!added)
            {
                var first = ChildNodes.FindIndex(g => g is MSBuildItemGroup);
                if (first != -1)
                {
                    ChildNodes = ChildNodes.Insert(first, group);
                }
                else
                {
                    ChildNodes = ChildNodes.Add(group);
                }
            }

            group.ResetIndent(true);
            NotifyChanged();
        }
Example #4
0
        internal override void ReadChildElement(MSBuildXmlReader reader)
        {
            MSBuildObject ob = null;

            switch (reader.LocalName)
            {
            case "ItemGroup": ob = new MSBuildItemGroup(); break;

            case "PropertyGroup": ob = new MSBuildPropertyGroup(); break;

            case "ImportGroup": ob = new MSBuildImportGroup(); break;

            case "Choose": ob = new MSBuildChoose(); break;

            default: ob = new MSBuildXmlElement(); break;
            }
            ob.ParentNode = this;
            ob.Read(reader);
            ChildNodes = ChildNodes.Add(ob);
        }
        internal void CopyFrom(MSBuildPropertyGroup other)
        {
            AssertCanModify();
            foreach (var node in other.ChildNodes)
            {
                var prop = node as MSBuildProperty;
                if (prop != null)
                {
                    var cp = prop.Clone();
                    var currentPropIndex = ChildNodes.FindIndex(p => (p is MSBuildProperty) && ((MSBuildProperty)p).Name == prop.Name);
                    if (currentPropIndex != -1)
                    {
                        var currentProp = (MSBuildProperty)ChildNodes [currentPropIndex];
                        ChildNodes = ChildNodes.SetItem(currentPropIndex, cp);
                    }
                    else
                    {
                        ChildNodes = ChildNodes.Add(cp);
                    }
                    properties [cp.Name] = cp;
                    cp.ParentNode        = PropertiesParent;
                    cp.Owner             = this;
                    cp.ResetIndent(false);
                }
                else
                {
                    ChildNodes = ChildNodes.Add(node);
                }
            }
            foreach (var prop in ChildNodes.OfType <MSBuildProperty> ().ToArray())
            {
                if (!other.HasProperty(prop.Name))
                {
                    RemoveProperty(prop);
                }
            }

            NotifyChanged();
        }
Example #6
0
        internal override void ReadChildElement(MSBuildXmlReader reader)
        {
            MSBuildObject ob = null;

            switch (reader.LocalName)
            {
            case "ItemGroup": ob = new MSBuildItemGroup(); break;

            case "PropertyGroup": ob = new MSBuildPropertyGroup(); break;
            }
            if (ob != null)
            {
                ob.ParentNode = this;
                ob.Read(reader);
                ChildNodes = ChildNodes.Add(ob);
                return;
            }

            var task = new MSBuildTask();

            task.ParentNode = this;
            task.Read(reader);
            ChildNodes = ChildNodes.Add(task);
        }
 internal IPropertySet GetPropertiesLinkedToGroup(MSBuildPropertyGroup group)
 {
     evaluatedProperties.LinkToGroup(group);
     return(evaluatedProperties);
 }
Example #8
0
 public MSBuildItem()
 {
     metadata = new MSBuildPropertyGroup();
     metadata.UppercaseBools = true;
     metadata.ParentNode     = this;
 }