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;
}
}
}