diff --git a/build/RuntimeStore.targets b/build/RuntimeStore.targets index a6f91b12c0..1706cba3d3 100644 --- a/build/RuntimeStore.targets +++ b/build/RuntimeStore.targets @@ -33,7 +33,7 @@ - + - + + + + $(_WorkRoot)RS.References\ + + + + + + + + + + + + + + + + + + + + + + + @@ -91,7 +125,7 @@ - + <__ComposeStoreProps /> <_ComposeStoreProps>$(_ComposeStoreProps);$(_RsManifestProps) diff --git a/build/artifacts.props b/build/artifacts.props index e9aa8e3a92..fe06653938 100644 --- a/build/artifacts.props +++ b/build/artifacts.props @@ -2,6 +2,8 @@ false + false + false false false @@ -10,52 +12,52 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + - - + + - + - - - + + + - - - - - - - + + + + + + + @@ -65,88 +67,88 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - + - - + + - - + + - - - - - - + + + + + + - - - + + + - - - - + + + + - - - + + + - + - - - + + + - + - - + + - + - - - + + + - - - - - - - - + + + + + + + + - + diff --git a/build/dependencies.props b/build/dependencies.props index 5f901f3a7e..d3d5ad054c 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -14,6 +14,10 @@ false false + + false + + false false @@ -293,46 +297,46 @@ not building again in this patch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/tasks/AddMetapackageReferences.cs b/build/tasks/AddMetapackageReferences.cs index fab06c38ba..5488dec22e 100644 --- a/build/tasks/AddMetapackageReferences.cs +++ b/build/tasks/AddMetapackageReferences.cs @@ -27,8 +27,8 @@ namespace RepoTasks public override bool Execute() { // Parse input - var metapackageArtifacts = PackageArtifacts.Where(p => p.GetMetadata("Metapackage") != "false"); - var externalArtifacts = ExternalDependencies.Where(p => p.GetMetadata("Metapackage") != "false"); + var metapackageArtifacts = PackageArtifacts.Where(p => p.GetMetadata("Metapackage") == "true"); + var externalArtifacts = ExternalDependencies.Where(p => p.GetMetadata("Metapackage") == "true"); var buildArtifacts = BuildArtifacts.Select(ArtifactInfo.Parse) .OfType() .Where(p => !p.IsSymbolsArtifact); @@ -41,7 +41,7 @@ namespace RepoTasks // Items var itemGroupElement = xmlDoc.CreateElement("ItemGroup"); - Log.LogMessage(MessageImportance.High, $"Runtime store will include the following packages"); + Log.LogMessage(MessageImportance.High, $"Metapackage will include the following packages"); foreach (var package in metapackageArtifacts) { diff --git a/build/tasks/AddRSReferences.cs b/build/tasks/AddRSReferences.cs new file mode 100644 index 0000000000..1cbc504661 --- /dev/null +++ b/build/tasks/AddRSReferences.cs @@ -0,0 +1,85 @@ +// 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 System.Xml; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using RepoTasks.Utilities; + +namespace RepoTasks +{ + public class AddRSReferences : Task + { + [Required] + public string ReferencePackagePath { get; set; } + + [Required] + public ITaskItem[] BuildArtifacts { get; set; } + + [Required] + public ITaskItem[] PackageArtifacts { get; set; } + + [Required] + public ITaskItem[] ExternalDependencies { get; set; } + + public override bool Execute() + { + // Parse input + var runtimeStoreArtifacts = PackageArtifacts.Where(p => p.GetMetadata("RuntimeStore") == "true"); + var externalArtifacts = ExternalDependencies.Where(p => p.GetMetadata("RuntimeStore") == "true"); + var buildArtifacts = BuildArtifacts.Select(ArtifactInfo.Parse) + .OfType() + .Where(p => !p.IsSymbolsArtifact); + + var xmlDoc = new XmlDocument(); + xmlDoc.Load(ReferencePackagePath); + + // Project + var projectElement = xmlDoc.FirstChild; + + // Items + var itemGroupElement = xmlDoc.CreateElement("ItemGroup"); + Log.LogMessage(MessageImportance.High, $"Runtime store will include the following packages"); + + foreach (var package in runtimeStoreArtifacts) + { + var packageName = package.ItemSpec; + var packageVersion = buildArtifacts + .Single(p => string.Equals(p.PackageInfo.Id, packageName, StringComparison.OrdinalIgnoreCase)) + .PackageInfo.Version.ToString(); + Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersion}"); + + var packageReferenceElement = xmlDoc.CreateElement("PackageReference"); + packageReferenceElement.SetAttribute("Include", packageName); + packageReferenceElement.SetAttribute("Version", packageVersion); + packageReferenceElement.SetAttribute("PrivateAssets", "None"); + + itemGroupElement.AppendChild(packageReferenceElement); + } + + foreach (var package in externalArtifacts) + { + var packageName = package.ItemSpec; + var packageVersion = package.GetMetadata("Version"); + Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersion}"); + + var packageReferenceElement = xmlDoc.CreateElement("PackageReference"); + packageReferenceElement.SetAttribute("Include", packageName); + packageReferenceElement.SetAttribute("Version", packageVersion); + packageReferenceElement.SetAttribute("PrivateAssets", "None"); + + itemGroupElement.AppendChild(packageReferenceElement); + } + + projectElement.AppendChild(itemGroupElement); + + // Save updated file + xmlDoc.AppendChild(projectElement); + xmlDoc.Save(ReferencePackagePath); + + return true; + } + } +} diff --git a/build/tasks/RepoTasks.tasks b/build/tasks/RepoTasks.tasks index 0d8e3fca8c..b390901779 100644 --- a/build/tasks/RepoTasks.tasks +++ b/build/tasks/RepoTasks.tasks @@ -11,6 +11,7 @@ + diff --git a/build/tasks/ResolveHostingStartupPackages.cs b/build/tasks/ResolveHostingStartupPackages.cs index 0d5b0838f4..8bfc27399c 100644 --- a/build/tasks/ResolveHostingStartupPackages.cs +++ b/build/tasks/ResolveHostingStartupPackages.cs @@ -21,7 +21,7 @@ namespace RepoTasks public override bool Execute() { // Parse input - var hostingStartupArtifacts = PackageArtifacts.Where(p => p.GetMetadata("Metapackage") == "hostingstartup"); + var hostingStartupArtifacts = PackageArtifacts.Where(p => p.GetMetadata("HostingStartup") == "true"); HostingStartupArtifacts = BuildArtifacts.Where(p => hostingStartupArtifacts.Any(h => h.GetMetadata("Identity") == p.GetMetadata("PackageId"))).ToArray(); return true; diff --git a/build/tools/templates/RS.Manifest/RS.Manifest.csproj b/build/tools/templates/RS.Manifest/RS.Manifest.csproj index 514fd38948..e8c8261383 100644 --- a/build/tools/templates/RS.Manifest/RS.Manifest.csproj +++ b/build/tools/templates/RS.Manifest/RS.Manifest.csproj @@ -19,7 +19,7 @@ - + diff --git a/build/tools/templates/RS.References/RS.References.csproj b/build/tools/templates/RS.References/RS.References.csproj new file mode 100644 index 0000000000..91977d96d5 --- /dev/null +++ b/build/tools/templates/RS.References/RS.References.csproj @@ -0,0 +1,18 @@ + + + + + + $(DotNetRestoreSources) + + $(RestoreSources); + https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json; + + + $(RestoreSources); + https://api.nuget.org/v3/index.json; + + netcoreapp2.0 + + +