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
+
+
+