public static HashSet GetProjectFileDependencySet()

in src/Tasks/Microsoft.NET.Build.Tasks/LockFileExtensions.cs [107:146]


        public static HashSet<string> GetProjectFileDependencySet(this LockFile lockFile)
        {
            // Get package name from e.g. Microsoft.VSSDK.BuildTools >= 15.0.25604-Preview4
            string GetPackageNameFromDependency(string dependency)
            {
                int indexOfWhiteSpace = IndexOfWhiteSpace(dependency);
                if (indexOfWhiteSpace < 0)
                {
                    return dependency;
                }

                return dependency.Substring(0, indexOfWhiteSpace);
            }

            int IndexOfWhiteSpace(string s)
            {
                for (int i = 0; i < s.Length; i++)
                {
                    if (char.IsWhiteSpace(s[i]))
                    {
                        return i;
                    }
                }

                return -1;
            }

            var set = new HashSet<string>(StringComparer.OrdinalIgnoreCase);

            foreach (var group in lockFile.ProjectFileDependencyGroups)
            {
                foreach (string dependency in group.Dependencies)
                {
                    string packageName = GetPackageNameFromDependency(dependency);
                    set.Add(packageName);
                }
            }

            return set;
        }