private IReadOnlyDictionary <string, PackageReferenceInfo> GetDependencies(ProjectInstance project) { var references = new Dictionary <string, PackageReferenceInfo>(StringComparer.OrdinalIgnoreCase); foreach (var item in project.GetItems("PackageReference")) { bool.TryParse(item.GetMetadataValue("IsImplicitlyDefined"), out var isImplicit); var noWarn = item.GetMetadataValue("NoWarn"); IReadOnlyList <string> noWarnItems = string.IsNullOrEmpty(noWarn) ? Array.Empty <string>() : noWarn.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); var info = new PackageReferenceInfo(item.EvaluatedInclude, item.GetMetadataValue("Version"), isImplicit, noWarnItems); if (references.ContainsKey(info.Id)) { _logger.LogThunderBuildWarning(project.ProjectFileLocation.File, ThunderBuildErrors.DuplicatePackageReference, $"Found a duplicate PackageReference for {info.Id}. Restore results may be unpredictable."); } references[info.Id] = info; } return(references); }