public IEnumerable ComputeAssembliesToRemove()

in src/lib/Microsoft.Fx.Portability/Analysis/AnalysisEngine.cs [330:362]


        public IEnumerable<string> ComputeAssembliesToRemove(
            IEnumerable<AssemblyInfo> userAssemblies,
            IEnumerable<FrameworkName> targets,
            IEnumerable<NuGetPackageInfo> nugetPackagesForUserAssemblies)
        {
            foreach (var assembly in userAssemblies)
            {
                // If the user specified this assembly, we want to skip it.
                if (assembly == default(AssemblyInfo) || assembly.IsExplicitlySpecified)
                {
                    continue;
                }

                bool supportedOnAllTargets = true;
                foreach (var target in targets)
                {
                    var packagesExist = nugetPackagesForUserAssemblies.Any(
                        p => string.Equals(p.AssemblyInfo, assembly.AssemblyIdentity, StringComparison.Ordinal)
                        && p.SupportedVersions.TryGetValue(target, out var version) && !string.IsNullOrEmpty(version));

                    if (!packagesExist)
                    {
                        supportedOnAllTargets = false;
                        break;
                    }
                }

                if (supportedOnAllTargets)
                {
                    yield return assembly.AssemblyIdentity;
                }
            }
        }