Ejemplo n.º 1
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 2
0
		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);
				}
			}
		}