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