示例#1
0
        private IEnumerable <T> GetCompatibleInstalledItemsForPackage <T>(string packageId, IEnumerable <T> items, NetPortableProfileTable portableProfileTable) where T : IFrameworkTargetable
        {
            IEnumerable <T> enumerable;
            FrameworkName   targetFrameworkForPackage = this.GetTargetFrameworkForPackage(packageId);

            return((targetFrameworkForPackage != null) ? (!VersionUtility.TryGetCompatibleItems <T>(targetFrameworkForPackage, items, portableProfileTable, out enumerable) ? Enumerable.Empty <T>() : enumerable) : items);
        }
示例#2
0
        private IList <IPackageAssemblyReference> FilterAssemblyReferences(
            IEnumerable <IPackageAssemblyReference> unfilteredAssemblyReferences,
            IList <PackageReferenceSet> packageReferenceSets)
        {
            if (packageReferenceSets.IsEmpty())
            {
                return(unfilteredAssemblyReferences.ToList());
            }

            var results = new List <IPackageAssemblyReference>();

            // we group assembly references by TargetFramework
            var assembliesGroupedByFx = unfilteredAssemblyReferences.ToLookup(d => d.TargetFramework);

            foreach (var group in assembliesGroupedByFx)
            {
                FrameworkName fileTargetFramework = group.Key;

                IEnumerable <PackageReferenceSet> bestMatches;
                if (VersionUtility.TryGetCompatibleItems(fileTargetFramework, PackageReferenceSets, out bestMatches))
                {
                    // now examine each assembly file, check if it appear in the References list for the correponding target framework
                    foreach (var assemblyFile in group)
                    {
                        if (bestMatches.Any(m => m.References.Contains(assemblyFile.Name)))
                        {
                            results.Add(assemblyFile);
                        }
                    }
                }
            }

            return(results);
        }
        internal static IEnumerable <T> GetCompatibleItemsCore <T>(this IProjectSystem projectSystem, IEnumerable <T> items) where T : IFrameworkTargetable
        {
            IEnumerable <T> compatibleItems;

            if (VersionUtility.TryGetCompatibleItems(projectSystem.TargetFramework, items, out compatibleItems))
            {
                return(compatibleItems);
            }
            return(Enumerable.Empty <T>());
        }
示例#4
0
 public static bool TryGetCompatibleItems <T>(this IProjectSystem projectSystem, IEnumerable <T> items, out IEnumerable <T> compatibleItems) where T : IFrameworkTargetable
 {
     if (projectSystem == null)
     {
         throw new ArgumentNullException("projectSystem");
     }
     if (items == null)
     {
         throw new ArgumentNullException("items");
     }
     return(VersionUtility.TryGetCompatibleItems <T>(projectSystem.TargetFramework, items, out compatibleItems));
 }
示例#5
0
        public static IEnumerable<PackageDependency> GetCompatiblePackageDependencies(this IPackageMetadata package, FrameworkName targetFramework)
        {
            IEnumerable<PackageDependencySet> compatibleDependencySets;
            if (targetFramework == null)
            {
                compatibleDependencySets = package.DependencySets;
            }
            else if (!VersionUtility.TryGetCompatibleItems(targetFramework, package.DependencySets, out compatibleDependencySets))
            {
                compatibleDependencySets = new PackageDependencySet[0];
            }

            return compatibleDependencySets.SelectMany(d => d.Dependencies);
        }
示例#6
0
        public static IEnumerable <PackageDependency> GetCompatiblePackageDependencies(this IPackageMetadata package, FrameworkName targetFramework)
        {
            IEnumerable <PackageDependencySet> dependencySets;

            if (targetFramework == null)
            {
                dependencySets = package.DependencySets;
            }
            else if (!VersionUtility.TryGetCompatibleItems <PackageDependencySet>(targetFramework, package.DependencySets, out dependencySets))
            {
                dependencySets = new PackageDependencySet[0];
            }
            return(from d in dependencySets select d.Dependencies);
        }
示例#7
0
        /// <summary>
        /// This method uses the 'targetFramework' attribute in the packages.config to determine compatible items.
        /// Hence, it's only good for uninstall operations.
        /// </summary>
        private IEnumerable<T> GetCompatibleInstalledItemsForPackage<T>(string packageId, IEnumerable<T> items) where T : IFrameworkTargetable
        {
            FrameworkName packageFramework = GetPackageTargetFramework(packageId);
            if (packageFramework == null)
            {
                return items;
            }

            IEnumerable<T> compatibleItems;
            if (VersionUtility.TryGetCompatibleItems(packageFramework, items, out compatibleItems))
            {
                return compatibleItems;
            }
            return Enumerable.Empty<T>();
        }
        /// <summary>
        /// This method uses the 'targetFramework' attribute in the packages.config to determine compatible items.
        /// Hence, it's only good for uninstall operations.
        /// </summary>
        private IEnumerable <T> GetCompatibleInstalledItemsForPackage <T>(string packageId, IEnumerable <T> items, NetPortableProfileTable portableProfileTable) where T : IFrameworkTargetable
        {
            FrameworkName packageFramework = ProjectManagerExtensions.GetTargetFrameworkForPackage(this, packageId);

            if (packageFramework == null)
            {
                return(items);
            }

            IEnumerable <T> compatibleItems;

            if (VersionUtility.TryGetCompatibleItems(packageFramework, items, portableProfileTable, out compatibleItems))
            {
                return(compatibleItems);
            }
            return(Enumerable.Empty <T>());
        }
示例#9
0
        internal static IEnumerable <T> GetCompatibleItemsCore <T>(this IProjectSystem projectSystem, IEnumerable <T> items) where T : IFrameworkTargetable
        {
            IEnumerable <T> enumerable;

            return(!VersionUtility.TryGetCompatibleItems <T>(projectSystem.TargetFramework, items, out enumerable) ? Enumerable.Empty <T>() : enumerable);
        }