in src/Microsoft.NuGet.Build.Tasks/ResolveNuGetPackageAssets.cs [982:1013]
private IEnumerable<NuGetPackageObject> GetPackagesFromTarget(JObject lockFile, JObject target)
{
foreach (var package in target)
{
SplitPackageName(package.Key, out string id, out string version);
var libraryObject = (JObject)lockFile["libraries"][package.Key];
Func<string> fullPackagePathGenerator;
if (libraryObject == null)
{
var errorMessage = IsLockFileProjectJsonBased(ProjectLockFile) ?
nameof(Strings.MissingPackageInTargetsForProjectJson) :
nameof(Strings.MissingPackageInTargetsSectionForProjectFile);
throw new ExceptionFromResource(errorMessage, package.Key);
}
// If this is a project then we need to figure out it's relative output path
if ("project".Equals((string)libraryObject["type"], StringComparison.OrdinalIgnoreCase))
{
continue;
}
else
{
fullPackagePathGenerator = () => GetNuGetPackagePath(id, version, (string)libraryObject["path"]);
}
yield return new NuGetPackageObject(id, version, fullPackagePathGenerator, (JObject)package.Value, libraryObject);
}
}