private void PopulateExistingReferenceItems()

in src/Tasks/Microsoft.NET.Build.Tasks/PreprocessPackageDependenciesDesignTime.cs [207:259]


        private void PopulateExistingReferenceItems()
        {
            var existingReferenceItemDependencies = new List<ITaskItem>();
            foreach (var reference in References)
            {
                var packageName = reference.GetMetadata(MetadataKeys.NuGetPackageId);
                var packageVersion = reference.GetMetadata(MetadataKeys.NuGetPackageVersion);

                // This is not a "pre-resolved" assembly; skip it.
                if (packageName == null || packageVersion == null)
                {
                    continue;
                }

                // If we don't know about the specified package, skip it.
                var packageId = $"{packageName}/{packageVersion}";
                if (!Packages.TryGetValue(packageId, out ItemMetadata packageItemMetadata))
                {
                    continue;
                }

                // If the file isn't actually a part of the package, skip it.
                var packageMetadata = (PackageMetadata)packageItemMetadata;
                if (!reference.ItemSpec.StartsWith(packageMetadata.Path, StringComparison.OrdinalIgnoreCase))
                {
                    continue;
                }

                var referenceRelativePath = reference.ItemSpec.Substring(packageMetadata.Path.Length).Trim('\\');
                var referenceKey = $"{packageId}/{referenceRelativePath.Replace('\\', '/')}";

                // If we already know about the assembly file, skip it.
                if (Assemblies.TryGetValue(referenceKey, out ItemMetadata assemblyItemMetadata))
                {
                    continue;
                }

                // Create the appropriate metadata.
                var name = Path.GetFileName(referenceKey);
                var facadeMetadata = reference.GetBooleanMetadata("Facade");
                var visible = facadeMetadata.HasValue ? !facadeMetadata.Value : true;
                var assembly = new ExistingReferenceItemMetadata(name, reference.ItemSpec, visible);
                Assemblies[referenceKey] = assembly;

                // Create the file dependency.
                existingReferenceItemDependencies.Add(new ExistingReferenceItemDependency(
                    referenceKey,
                    TargetFrameworkMoniker,
                    packageId));
            }

            ExistingReferenceItemDependencies = existingReferenceItemDependencies.ToArray();
        }