diff --git a/build/repo.targets b/build/repo.targets index 8be9e67790..3e226726b5 100644 --- a/build/repo.targets +++ b/build/repo.targets @@ -32,11 +32,34 @@ - + + + <_DependencyPackagesDirectory>$([MSBuild]::NormalizeDirectory($(_DependencyPackagesDirectory))) + + + + <_DependencyPackageFiles Include="$(_DependencyPackagesDirectory)*.nupkg" Exclude="$(_DependencyPackagesDirectory)*.symbols.nupkg" /> + + + + + + + + + + <_Dependency Remove="@(_Dependency)" /> + + + <_Dependency Include="@(PackagesProduced)" /> + <_Dependency Include="@(ExternalDependency)" Exclude="@(_Dependency)" /> + <_Dependency Include="@(ArtifactDependency)" Exclude="@(_Dependency)" /> + + + Dependencies="@(_Dependency)"> diff --git a/build/tasks/ReadPackageIdentity.cs b/build/tasks/ReadPackageIdentity.cs new file mode 100644 index 0000000000..354a226422 --- /dev/null +++ b/build/tasks/ReadPackageIdentity.cs @@ -0,0 +1,37 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using NuGet.Packaging; + +namespace RepoTasks +{ + public class ReadPackageIdentity : Task + { + [Required] + public ITaskItem[] PackageFiles { get; set; } + + [Output] + public ITaskItem[] PackageDefinitions { get; set; } + + public override bool Execute() + { + PackageDefinitions = PackageFiles.Select(item => + { + using (var package = new PackageArchiveReader(item.ItemSpec)) + { + var identity = package.GetIdentity(); + var packageItem = new TaskItem(identity.Id); + packageItem.SetMetadata("Version", identity.Version.ToString()); + return packageItem; + } + }) + .ToArray(); + + return true; + } + } +} diff --git a/build/tasks/RepoTasks.tasks b/build/tasks/RepoTasks.tasks index 6e18f84994..bc0262b318 100644 --- a/build/tasks/RepoTasks.tasks +++ b/build/tasks/RepoTasks.tasks @@ -5,4 +5,5 @@ +