else
return Evaluator.ProjectInstance.GetItems (name);
}
+
+ public IEnumerable<object> GetAllItems ()
+ {
+ if (Evaluator.Project != null)
+ return Evaluator.Project.AllEvaluatedItems;
+ else
+ return Evaluator.ProjectInstance.AllEvaluatedItems;
+ }
public string EvaluateItem (string itemType, object item)
{
public override string EvaluateAsString (EvaluationContext context)
{
- string itemType = this.Access.ItemType.Name;
+ string itemType = this.Access.ItemType != null ? this.Access.ItemType.Name : null;
string metadataName = Access.Metadata.Name;
IEnumerable<object> items;
if (this.Access.ItemType != null)
else if (context.ContextItem != null)
items = new Object [] { context.ContextItem };
else
- throw new InvalidProjectFileException (Location, null, string.Format ("Unexpected occurence of metadata reference: {0}{1}", itemType != null ? itemType + '.' : null, metadataName), null, null);
+ items = context.GetAllItems ();
var values = items.Select (i => (i is ProjectItem) ? ((ProjectItem) i).GetMetadataValue (metadataName) : ((ProjectItemInstance) i).GetMetadataValue (metadataName)).Where (s => !string.IsNullOrEmpty (s));
return string.Join (";", values);