protected static IEnumerable<KeyValuePair<string, string>> FilterResults(IEnumerable<ITaskItem> resolvedFiles)
{
foreach (ITaskItem resolvedFile in resolvedFiles)
{
bool bAddResolvedAssemblyToResultList = true;
// excludeVersionWarningsFromResult
string foundAssemblyVersion = resolvedFile.GetMetadata(FoundAssemblyVersion);
string highestVersionInRedist = resolvedFile.GetMetadata(HighestVersionInRedistList);
Version asmVersion = null;
bool parsedAsmVersion = Version.TryParse(foundAssemblyVersion, out asmVersion);
Version redistVersion = null;
bool parsedRedistVersion = Version.TryParse(highestVersionInRedist, out redistVersion);
if ((parsedAsmVersion && parsedRedistVersion) && asmVersion > redistVersion)
{
// if the version of the assembly is greater than the highest version - for that assembly - found in
// the chained(possibly) redist lists; then the assembly does not belong to the target framework
bAddResolvedAssemblyToResultList = false;
}
// check outOfRangeDependencies
string outOfRangeDependencies = resolvedFile.GetMetadata(OutOfRangeDependencies);
if (!String.IsNullOrEmpty(outOfRangeDependencies))
{
// This metadata is a semi-colon delimited list of dependent assembly names which target
// a higher framework. If this metadata is NOT EMPTY then
// the current assembly does have dependencies which are greater than the current target framework
// so let's exclude this assembly
bAddResolvedAssemblyToResultList = false;
}
if (bAddResolvedAssemblyToResultList)
{
yield return new KeyValuePair<string, string>(resolvedFile.GetMetadata(OriginalItemSpec), resolvedFile.ItemSpec);
}
}
}