Microsoft.VisualStudio.Project.DesignTimeAssemblyResolution.FilterResults C# (CSharp) Method

FilterResults() protected static method

protected static FilterResults ( IEnumerable resolvedFiles ) : string>>.IEnumerable
resolvedFiles IEnumerable
return string>>.IEnumerable
        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);
                }
            }
        }