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