コード例 #1
0
        private List <ProjectItemInstance> FindItemsUsingMatchOnMetadata(
            ICollection <ProjectItemInstance> items,
            ProjectItemGroupTaskItemInstance child,
            ItemBucket bucket,
            HashSet <string> matchOnMetadata,
            MatchOnMetadataOptions options)
        {
            ErrorUtilities.VerifyThrowArgumentNull(matchOnMetadata, nameof(matchOnMetadata));

            var itemSpec = new ItemSpec <ProjectPropertyInstance, ProjectItemInstance>(child.Remove, bucket.Expander, child.RemoveLocation, Project.Directory, true);

            ProjectFileErrorUtilities.VerifyThrowInvalidProjectFile(
                itemSpec.Fragments.Count == 1 &&
                itemSpec.Fragments.First() is ItemSpec <ProjectPropertyInstance, ProjectItemInstance> .ItemExpressionFragment &&
                matchOnMetadata.Count == 1,
                new BuildEventFileInfo(string.Empty),
                "OM_MatchOnMetadataIsRestrictedToOnlyOneReferencedItem",
                child.RemoveLocation,
                child.Remove);

            return(items.Where(item => itemSpec.MatchesItemOnMetadata(item, matchOnMetadata, options)).ToList());
        }