private IEnumerable GetPackagesFromTarget()

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