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