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); } }
static void RemovePropertyIfHasDefaultValue( MSBuildPropertyGroup propertyGroup, string propertyName, string defaultPropertyValue) { if (!propertyGroup.HasProperty(propertyName)) { return; } if (propertyGroup.GetValue(propertyName) == defaultPropertyValue) { propertyGroup.RemoveProperty(propertyName); } }
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(); }
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(); }
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); }
public MSBuildItem() { metadata = new MSBuildPropertyGroup(); metadata.UppercaseBools = true; metadata.ParentNode = this; }