object o;
foreach (XmlNode xmlNode in taskElement.ChildNodes) {
- if (xmlNode is XmlElement) {
- xmlElement = (XmlElement) xmlNode;
-
- if (xmlElement.Name != "Output")
- throw new InvalidProjectFileException ("Only Output elements can be Task's child nodes.");
- if (xmlElement.GetAttribute ("ItemName") != String.Empty && xmlElement.GetAttribute ("PropertyName") != String.Empty)
- throw new InvalidProjectFileException ("Only one of ItemName and ProperytyName attributes can be specified.");
- if (xmlElement.GetAttribute ("TaskParameter") == String.Empty)
- throw new InvalidProjectFileException ("TaskParameter attribute must be specified.");
-
- taskParameter = xmlElement.GetAttribute ("TaskParameter");
- itemName = xmlElement.GetAttribute ("ItemName");
- propertyName = xmlElement.GetAttribute ("PropertyName");
-
- propertyInfo = taskType.GetProperty (taskParameter);
- if (propertyInfo == null)
- throw new Exception ("Could not get property info.");
- if (propertyInfo.IsDefined (outputAttribute, false) == false)
- throw new Exception ("This is not output property.");
-
- o = propertyInfo.GetValue (task, null);
- if (o == null)
- continue;
+ if (!(xmlNode is XmlElement))
+ continue;
+
+ xmlElement = (XmlElement) xmlNode;
+
+ if (xmlElement.Name != "Output")
+ throw new InvalidProjectFileException ("Only Output elements can be Task's child nodes.");
+ if (xmlElement.GetAttribute ("ItemName") != String.Empty && xmlElement.GetAttribute ("PropertyName") != String.Empty)
+ throw new InvalidProjectFileException ("Only one of ItemName and PropertyName attributes can be specified.");
+ if (xmlElement.GetAttribute ("TaskParameter") == String.Empty)
+ throw new InvalidProjectFileException ("TaskParameter attribute must be specified.");
- if (itemName != String.Empty) {
- PublishItemGroup (propertyInfo, o, itemName);
- } else {
- PublishProperty (propertyInfo, o, propertyName);
- }
+ taskParameter = xmlElement.GetAttribute ("TaskParameter");
+ itemName = xmlElement.GetAttribute ("ItemName");
+ propertyName = xmlElement.GetAttribute ("PropertyName");
+
+ propertyInfo = taskType.GetProperty (taskParameter);
+ if (propertyInfo == null)
+ throw new Exception ("Could not get property info.");
+ if (propertyInfo.IsDefined (outputAttribute, false) == false)
+ throw new Exception ("This is not output property.");
+
+ o = propertyInfo.GetValue (task, null);
+ if (o == null)
+ continue;
+
+ if (itemName != String.Empty) {
+ PublishItemGroup (propertyInfo, o, itemName);
+ } else {
+ PublishProperty (propertyInfo, o, propertyName);
}
}
}
string itemName)
{
BuildItemGroup newItems = CollectItemGroup (propertyInfo, o, itemName);
- if (parentProject.EvaluatedItemsByName.Contains (itemName)) {
- BuildItemGroup big = (BuildItemGroup) parentProject.EvaluatedItemsByName [itemName];
+
+ if (parentProject.EvaluatedItemsByName.ContainsKey (itemName)) {
+ BuildItemGroup big = parentProject.EvaluatedItemsByName [itemName];
big.Clear ();
parentProject.EvaluatedItemsByName.Remove (itemName);
parentProject.EvaluatedItemsByName.Add (itemName, newItems);
} else {
parentProject.EvaluatedItemsByName.Add (itemName, newItems);
}
+ foreach (BuildItem bi in newItems)
+ parentProject.EvaluatedItems.AddItem (bi);
}
private void PublishProperty (PropertyInfo propertyInfo,
private object GetObjectFromString (string raw, Type type)
{
- OldExpression e;
+ Expression e;
object result;
- e = new OldExpression (parentProject);
- e.ParseSource (raw);
+ e = new Expression ();
+ e.Parse (raw);
- if ((string) e.ConvertTo (typeof (string)) == String.Empty)
+ if ((string) e.ConvertTo (parentProject, typeof (string)) == String.Empty)
return null;
- result = e.ConvertTo (type);
+ result = e.ConvertTo (parentProject, type);
return result;
}