public IEnumerable <FrameworkSpecificGroup> GetBuildItems() { string id = GetIdentity().Id; List <FrameworkSpecificGroup> results = new List <FrameworkSpecificGroup>(); foreach (FrameworkSpecificGroup group in GetFileGroups("build")) { FrameworkSpecificGroup filteredGroup = group; if (group.Items.Any(e => !IsAllowedBuildFile(id, e))) { // create a new group with only valid files filteredGroup = new FrameworkSpecificGroup(group.TargetFramework, group.Items.Where(e => IsAllowedBuildFile(id, e))); if (!filteredGroup.Items.Any()) { // nothing was useful in the folder, skip this group completely filteredGroup = null; } } if (filteredGroup != null) { results.Add(filteredGroup); } } return(results); }
public virtual IEnumerable <FrameworkSpecificGroup> GetBuildItems() { var id = GetIdentity().Id; var results = new List <FrameworkSpecificGroup>(); foreach (var group in GetFileGroups(PackagingConstants.Folders.Build)) { var filteredGroup = group; if (group.Items.Any(e => !IsAllowedBuildFile(id, e))) { // create a new group with only valid files filteredGroup = new FrameworkSpecificGroup(group.TargetFramework, group.Items.Where(e => IsAllowedBuildFile(id, e))); if (!filteredGroup.Items.Any()) { // nothing was useful in the folder, skip this group completely filteredGroup = null; } } if (filteredGroup != null) { results.Add(filteredGroup); } } return(results); }
/// <summary> /// Framework assembly groups /// </summary> public IEnumerable <FrameworkSpecificGroup> GetFrameworkAssemblyGroups() { var results = new List <FrameworkSpecificGroup>(); var ns = Xml.Root.GetDefaultNamespace().NamespaceName; var groups = new Dictionary <NuGetFramework, HashSet <string> >(new NuGetFrameworkFullComparer()); foreach (var group in MetadataNode.Elements(XName.Get(FrameworkAssemblies, ns)).Elements(XName.Get(FrameworkAssembly, ns)) .GroupBy(n => GetAttributeValue(n, TargetFramework))) { // Framework references may have multiple comma delimited frameworks var frameworks = new List <NuGetFramework>(); // Empty frameworks go under Any if (string.IsNullOrEmpty(group.Key)) { frameworks.Add(NuGetFramework.AnyFramework); } else { foreach (var fwString in group.Key.Split(CommaArray, StringSplitOptions.RemoveEmptyEntries)) { if (!string.IsNullOrEmpty(fwString)) { frameworks.Add(NuGetFramework.Parse(fwString.Trim(), _frameworkProvider)); } } } // apply items to each framework foreach (var framework in frameworks) { HashSet <string> items = null; if (!groups.TryGetValue(framework, out items)) { items = new HashSet <string>(StringComparer.OrdinalIgnoreCase); groups.Add(framework, items); } // Merge items and ignore duplicates items.UnionWith(group.Select(item => GetAttributeValue(item, AssemblyName)).Where(item => !string.IsNullOrEmpty(item))); } } // Sort items to make this deterministic for the caller foreach (var framework in groups.Keys.OrderBy(e => e, new NuGetFrameworkSorter())) { var group = new FrameworkSpecificGroup(framework, groups[framework].OrderBy(item => item, StringComparer.OrdinalIgnoreCase)); results.Add(group); } return(results); }
private bool IsValid(NuGet.Packaging.FrameworkSpecificGroup frameworkSpecificGroup) { if (frameworkSpecificGroup != null) { return(frameworkSpecificGroup.HasEmptyFolder || frameworkSpecificGroup.Items.Any() || !frameworkSpecificGroup.TargetFramework.Equals(NuGetFramework.AnyFramework)); } return(false); }