diff --git a/build/SharedFrameworkOnly.props b/build/SharedFrameworkOnly.props
new file mode 100644
index 000000000000..3b7a2644a8cd
--- /dev/null
+++ b/build/SharedFrameworkOnly.props
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/artifacts.props b/build/artifacts.props
index ff651ec155fa..419c353ee085 100644
--- a/build/artifacts.props
+++ b/build/artifacts.props
@@ -13,166 +13,169 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/dependencies.folderbuilds.props b/build/dependencies.folderbuilds.props
index ef8e16b829ef..f71208b5d81e 100644
--- a/build/dependencies.folderbuilds.props
+++ b/build/dependencies.folderbuilds.props
@@ -2,26 +2,26 @@
3.0.0-build-20181114.5
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
- 0.7.0-alpha1-10717
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
- 3.0.0-alpha1-10717
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 0.7.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
+ 3.0.0-alpha1-10773
diff --git a/build/repo.props b/build/repo.props
index fa1370912ee8..e702f11eba9a 100644
--- a/build/repo.props
+++ b/build/repo.props
@@ -1,5 +1,6 @@
+
diff --git a/build/repo.targets b/build/repo.targets
index 50c2ef8ee392..23a5943ee190 100644
--- a/build/repo.targets
+++ b/build/repo.targets
@@ -22,12 +22,16 @@
$(CompileDependsOn);BuildProjects;PackSharedSources
$(CompileDependsOn);PackProjects;BuildRepositories;BuildSharedFx
$(PackageDependsOn);PackProjects
+ $(PackageDependsOn);RemoveSharedFrameworkOnlyRefsFromNuspec
$(PackageDependsOn);CodeSign
$(TestDependsOn);TestProjects
$(TestDependsOn);_TestRepositories
$(GetArtifactInfoDependsOn);GetProjectArtifactInfo
$(GetArtifactInfoDependsOn);ResolveSharedSourcesPackageInfo
$(GetArtifactInfoDependsOn);ResolveRepoInfo
+
+
+ $(CodeSignDependsOn);RemoveSharedFrameworkOnlyRefsFromNuspec
@@ -282,7 +286,7 @@
-
+
<_UndeclaredPackageArtifact Include="%(ArtifactInfo.PackageId)" Condition="'%(ArtifactInfo.ArtifactType)' == 'NuGetPackage'" />
<_UndeclaredPackageArtifact Remove="@(PackageArtifact)" />
@@ -299,6 +303,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ <_BuildOutput Include="$(BuildDir)%(PackageArtifact.Identity).*.nupkg"
+ Condition=" '%(PackageArtifact.Category)' == 'ship' " />
+
+
+
+
+
diff --git a/build/tasks/RemoveSharedFrameworkDependencies.cs b/build/tasks/RemoveSharedFrameworkDependencies.cs
new file mode 100644
index 000000000000..59373f80671a
--- /dev/null
+++ b/build/tasks/RemoveSharedFrameworkDependencies.cs
@@ -0,0 +1,91 @@
+// 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.Collections.Generic;
+using System.IO;
+using System.IO.Compression;
+using System.Linq;
+using Microsoft.Build.Framework;
+using Microsoft.Build.Utilities;
+using NuGet.Packaging;
+using NuGet.Packaging.Core;
+
+namespace RepoTasks
+{
+ // This is temporary until we can use FrameworkReference to build our own packages
+ public class RemoveSharedFrameworkDependencies : Task
+ {
+ [Required]
+ public ITaskItem[] Files { get; set; }
+
+ [Required]
+ public ITaskItem[] FrameworkOnlyPackages { get; set; }
+
+ public override bool Execute()
+ {
+ var dependencyToRemove = FrameworkOnlyPackages.Select(p => p.ItemSpec).ToHashSet(StringComparer.OrdinalIgnoreCase);
+
+ foreach (var file in Files)
+ {
+ FilterDependencies(file.ItemSpec, dependencyToRemove);
+ }
+ return !Log.HasLoggedErrors;
+ }
+
+ private void FilterDependencies(string targetPath, ISet dependencyToRemove)
+ {
+ var fileName = Path.GetFileName(targetPath);
+ Log.LogMessage($"Updating {fileName}");
+
+ using (var fileStream = File.Open(targetPath, FileMode.Open))
+ using (var package = new ZipArchive(fileStream, ZipArchiveMode.Update))
+ using (var packageReader = new PackageArchiveReader(fileStream, leaveStreamOpen: true))
+ {
+ var dirty = false;
+ var nuspecFile = packageReader.GetNuspecFile();
+ using (var stream = package.OpenFile(nuspecFile))
+ {
+ var reader = Manifest.ReadFrom(stream, validateSchema: true);
+ stream.Position = 0;
+ var packageBuilder = new PackageBuilder(stream, basePath: null);
+ var updatedGroups = new List();
+
+ foreach (var group in packageBuilder.DependencyGroups)
+ {
+ var packages = new List();
+ var updatedGroup = new PackageDependencyGroup(group.TargetFramework, packages);
+ foreach (var dependency in group.Packages)
+ {
+ if (dependencyToRemove.Contains(dependency.Id))
+ {
+ dirty = true;
+ Log.LogMessage($" Remove dependency on '{dependency.Id}'");
+ continue;
+ }
+
+ packages.Add(dependency);
+ }
+
+ updatedGroups.Add(updatedGroup);
+ }
+
+ if (dirty)
+ {
+ packageBuilder.DependencyGroups.Clear();
+ packageBuilder.DependencyGroups.AddRange(updatedGroups);
+
+ var updatedManifest = Manifest.Create(packageBuilder);
+ stream.Position = 0;
+ stream.SetLength(0);
+ updatedManifest.Save(stream);
+ }
+ else
+ {
+ Log.LogMessage($"No changes made to {fileName}");
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/build/tasks/RepoTasks.csproj b/build/tasks/RepoTasks.csproj
index 9410cf69cb77..887291b2a0de 100644
--- a/build/tasks/RepoTasks.csproj
+++ b/build/tasks/RepoTasks.csproj
@@ -2,7 +2,7 @@
- netcoreapp2.0
+ netcoreapp2.1
diff --git a/build/tasks/RepoTasks.tasks b/build/tasks/RepoTasks.tasks
index 329bb5cd0a38..1da0b5915472 100644
--- a/build/tasks/RepoTasks.tasks
+++ b/build/tasks/RepoTasks.tasks
@@ -10,4 +10,5 @@
+