diff --git a/build/artifacts.props b/build/artifacts.props index 6c1bad7f21..9fd0624246 100644 --- a/build/artifacts.props +++ b/build/artifacts.props @@ -29,7 +29,7 @@ - + diff --git a/build/repo.targets b/build/repo.targets index df1859dd07..bd7246818c 100644 --- a/build/repo.targets +++ b/build/repo.targets @@ -93,6 +93,7 @@ <_LineupPackages Include="@(ExternalDependency)" /> <_LineupPackages Include="%(ArtifactInfo.PackageId)" Version="%(ArtifactInfo.Version)" Condition=" '%(ArtifactInfo.ArtifactType)' == 'NuGetPackage' " /> <_LineupPackages Include="Microsoft.AspNetCore.All" Version="$(PackageVersion)" /> + <_LineupPackages Include="Microsoft.AspNetCore.App" Version="$(PackageVersion)" /> <_RestoreSources Include="$(DotNetAdditionalRestoreSources)" Condition="'$(DotNetAdditionalRestoreSources)' != ''" /> <_RestoreSources Include="$(DependencyPackageDir)" Condition="'$(DependencyPackageDir)' != '' AND Exists('$(DependencyPackageDir)')" /> diff --git a/build/tasks/AddArchiveReferences.cs b/build/tasks/AddArchiveReferences.cs index 12367cf835..a912e965f7 100644 --- a/build/tasks/AddArchiveReferences.cs +++ b/build/tasks/AddArchiveReferences.cs @@ -52,12 +52,31 @@ namespace RepoTasks foreach (var package in archiveArtifacts) { var packageName = package.ItemSpec; - var packageVersion = string.Equals(packageName, "Microsoft.AspNetCore.All", StringComparison.OrdinalIgnoreCase) ? - MetaPackageVersion : - buildArtifacts - .Single(p => string.Equals(p.PackageInfo.Id, packageName, StringComparison.OrdinalIgnoreCase)) - .PackageInfo.Version.ToString(); + string packageVersion; + + if (string.Equals(packageName, "Microsoft.AspNetCore.All", StringComparison.OrdinalIgnoreCase) + || string.Equals(packageName, "Microsoft.AspNetCore.App", StringComparison.OrdinalIgnoreCase)) + { + packageVersion = MetaPackageVersion; + } + else + { + var packageVersionCandidates = buildArtifacts.Where(p => string.Equals(p.PackageInfo.Id, packageName, StringComparison.OrdinalIgnoreCase)); + + if (!packageVersionCandidates.Any()) + { + Log.LogError($"Missing Package: {packageName} from artifacts archive."); + return false; + } + else if (packageVersionCandidates.Count() > 1) + { + Log.LogError($"Duplicate Packages: {packageName} from artifacts archive."); + return false; + } + + packageVersion = packageVersionCandidates.Single().PackageInfo.Version.ToString(); + } Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersion}"); var packageReferenceElement = xmlDoc.CreateElement("PackageReference"); @@ -83,9 +102,21 @@ namespace RepoTasks foreach (var package in archiveTools) { var packageName = package.ItemSpec; - var packageVersion = buildArtifacts - .Single(p => string.Equals(p.PackageInfo.Id, packageName, StringComparison.OrdinalIgnoreCase)) - .PackageInfo.Version.ToString(); + + var packageVersionCandidates = buildArtifacts.Where(p => string.Equals(p.PackageInfo.Id, packageName, StringComparison.OrdinalIgnoreCase)); + + if (!packageVersionCandidates.Any()) + { + Log.LogError($"Missing Package: {packageName} from tools archive."); + return false; + } + else if (packageVersionCandidates.Count() > 1) + { + Log.LogError($"Duplicate Packages: {packageName} from tools archive."); + return false; + } + + var packageVersion = packageVersionCandidates.Single().PackageInfo.Version.ToString(); Log.LogMessage(MessageImportance.High, $" - Tool: {packageName} Version: {packageVersion}");