Merge pull request #4453 from lambdageek/bug-49721
[mono.git] / mcs / class / Microsoft.Build.Engine / Microsoft.Build.BuildEngine / BuildProperty.cs
index 006fe2b3fa2ec2c44ff4703d567edf0ca283f14f..f0936a3f65be3a40311e12ecc59e3300bfba0591 100644 (file)
@@ -30,6 +30,7 @@
 using System;
 using System.Text;
 using System.Xml;
+using System.Collections.Generic;
 
 using Microsoft.Build.Framework;
 using Microsoft.Build.Utilities;
@@ -120,10 +121,8 @@ namespace Microsoft.Build.BuildEngine {
                        BuildProperty evaluated = new BuildProperty (Name, Value);
 
                        // In evaluate phase, properties are not expanded
-                       Expression exp = new Expression ();
-                       exp.Parse (Value, ParseOptions.None);
-                       evaluated.finalValue = (string) exp.ConvertTo (parentProject, typeof (string),
-                                       ExpressionOptions.DoNotExpandItemRefs);
+                       evaluated.finalValue = Expression.ParseAs<string> (Value, ParseOptions.None, 
+                               parentProject, ExpressionOptions.DoNotExpandItemRefs);
 
                        parentProject.EvaluatedProperties.AddProperty (evaluated);
                }
@@ -241,6 +240,14 @@ namespace Microsoft.Build.BuildEngine {
                internal XmlElement XmlElement {
                        get { return propertyElement; }
                }
+
+               internal IEnumerable<string> GetAttributes ()
+               {
+                       if (!FromXml)
+                               yield break;
+                       foreach (XmlAttribute attr in propertyElement.Attributes)
+                               yield return attr.Value;
+               }
        }
 
        internal enum PropertyType {