void AddAndRemoveMetadata(Project project, BuildItem item) { if (!string.IsNullOrEmpty(removeMetadata)) { var removeExpr = new Expression(); removeExpr.Parse(removeMetadata, ParseOptions.AllowItemsNoMetadataAndSplit); var removeSpec = (string[])removeExpr.ConvertTo( project, typeof(string[]), ExpressionOptions.ExpandItemRefs); foreach (var remove in removeSpec) { item.DeleteMetadata(remove); } } if (!string.IsNullOrEmpty(keepMetadata)) { var keepExpr = new Expression(); keepExpr.Parse(keepMetadata, ParseOptions.AllowItemsNoMetadataAndSplit); var keepSpec = (string[])keepExpr.ConvertTo( project, typeof(string[]), ExpressionOptions.ExpandItemRefs); var metadataNames = new string [item.evaluatedMetadata.Count]; item.evaluatedMetadata.Keys.CopyTo(metadataNames, 0); foreach (string name in metadataNames) { if (!keepSpec.Contains(name)) { item.DeleteMetadata(name); } } } }
void AddAndRemoveMetadata (Project project, BuildItem item) { if (!string.IsNullOrEmpty (removeMetadata)) { var removeExpr = new Expression (); removeExpr.Parse (removeMetadata, ParseOptions.AllowItemsNoMetadataAndSplit); var removeSpec = (string[]) removeExpr.ConvertTo ( project, typeof (string[]), ExpressionOptions.ExpandItemRefs); foreach (var remove in removeSpec) { item.DeleteMetadata (remove); } } if (!string.IsNullOrEmpty (keepMetadata)) { var keepExpr = new Expression (); keepExpr.Parse (keepMetadata, ParseOptions.AllowItemsNoMetadataAndSplit); var keepSpec = (string[]) keepExpr.ConvertTo ( project, typeof (string[]), ExpressionOptions.ExpandItemRefs); var metadataNames = new string [item.evaluatedMetadata.Count]; item.evaluatedMetadata.Keys.CopyTo (metadataNames, 0); foreach (string name in metadataNames) { if (!keepSpec.Contains (name)) item.DeleteMetadata (name); } } }