From 3fd8a97af2e8cf2885a8d5836cb5d4f199458d22 Mon Sep 17 00:00:00 2001
From: Nate McMaster <natemcmaster@users.noreply.github.com>
Date: Tue, 12 Feb 2019 23:00:19 -0800
Subject: [PATCH] Add targets to generate the list of shared framework
 assemblies from project property (#7510)

Changes:
* Add support for a property, `IsAspNetCoreApp`, in the .csproj file of assemblies which are part of the shared framework.
* Remove unused dependencies
* Remove reference which have become part of 'netcoreapp3.0'
---
 Directory.Build.props                         |   2 +
 build/SharedFrameworkOnly.props               |  26 ---
 build/repo.props                              |   4 +-
 build/repo.targets                            |  33 +++-
 docs/ProjectProperties.md                     |   1 +
 docs/SharedFramework.md                       |  11 +-
 eng/Dependencies.props                        |   4 -
 eng/SharedFramework.External.props            | 105 ++++++++++++
 eng/SharedFramework.Local.props               |  91 ++++++++++
 eng/Version.Details.xml                       |  12 --
 eng/Versions.props                            |   4 -
 eng/targets/ResolveReferences.targets         |  41 +++++
 .../Microsoft.AspNetCore.Antiforgery.csproj   |   1 +
 ...osoft.AspNetCore.Components.Browser.csproj |   1 +
 .../Microsoft.AspNetCore.Components.csproj    |   1 +
 ...NetCore.DataProtection.Abstractions.csproj |   1 +
 ...ft.AspNetCore.Cryptography.Internal.csproj |   1 +
 ...pNetCore.Cryptography.KeyDerivation.csproj |   1 +
 ...Microsoft.AspNetCore.DataProtection.csproj |   1 +
 ...spNetCore.DataProtection.Extensions.csproj |   1 +
 .../src/Microsoft.AspNetCore.csproj           |   1 +
 src/Framework/Microsoft.AspNetCore.App.props  | 158 ------------------
 src/Framework/pkg/Metapackage.targets         |  13 +-
 .../pkg/Microsoft.AspNetCore.App.pkgproj      |   2 -
 .../ref/Microsoft.AspNetCore.App.Ref.csproj   |   5 +-
 .../src/Microsoft.AspNetCore.App.shfxproj     |   2 -
 src/Framework/src/SharedFx.targets            |   8 +-
 .../Microsoft.AspNetCore.App.UnitTests.csproj |   4 +-
 ...oft.AspNetCore.Hosting.Abstractions.csproj |   1 +
 .../src/Microsoft.AspNetCore.Hosting.csproj   |   5 +-
 ...NetCore.Hosting.Server.Abstractions.csproj |   1 +
 ...rosoft.AspNetCore.Html.Abstractions.csproj |   1 +
 ...NetCore.Authentication.Abstractions.csproj |   3 +-
 ...soft.AspNetCore.Authentication.Core.csproj |   1 +
 .../src/Microsoft.Net.Http.Headers.csproj     |   2 +-
 ...rosoft.AspNetCore.Http.Abstractions.csproj |   3 +-
 ...icrosoft.AspNetCore.Http.Extensions.csproj |   2 +-
 .../Microsoft.AspNetCore.Http.Features.csproj |   1 +
 .../Http/src/Microsoft.AspNetCore.Http.csproj |   1 +
 ...oft.AspNetCore.Routing.Abstractions.csproj |   1 +
 .../src/Microsoft.AspNetCore.Routing.csproj   |   3 +-
 .../Microsoft.AspNetCore.WebUtilities.csproj  |   1 +
 .../src/Microsoft.AspNetCore.Identity.csproj  |   1 +
 .../Microsoft.Extensions.Identity.Core.csproj |   2 +-
 ...icrosoft.Extensions.Identity.Stores.csproj |   2 +-
 .../CORS/src/Microsoft.AspNetCore.Cors.csproj |   1 +
 ...AspNetCore.Diagnostics.Abstractions.csproj |   1 +
 .../Microsoft.AspNetCore.Diagnostics.csproj   |   5 +-
 ...AspNetCore.Diagnostics.HealthChecks.csproj |   3 +-
 .../Microsoft.AspNetCore.HostFiltering.csproj |   3 +-
 .../Microsoft.AspNetCore.HttpOverrides.csproj |   1 +
 .../Microsoft.AspNetCore.HttpsPolicy.csproj   |   3 +-
 ...oft.AspNetCore.Localization.Routing.csproj |   1 +
 .../Microsoft.AspNetCore.Localization.csproj  |   1 +
 ...osoft.AspNetCore.MiddlewareAnalysis.csproj |   1 -
 ...etCore.ResponseCaching.Abstractions.csproj |   1 +
 ...icrosoft.AspNetCore.ResponseCaching.csproj |   1 +
 ...soft.AspNetCore.ResponseCompression.csproj |   1 +
 .../src/Microsoft.AspNetCore.Rewrite.csproj   |   1 +
 .../src/Microsoft.AspNetCore.Session.csproj   |   1 +
 .../Microsoft.AspNetCore.StaticFiles.csproj   |   1 +
 .../Microsoft.AspNetCore.WebSockets.csproj    |   1 +
 ...crosoft.AspNetCore.Mvc.Abstractions.csproj |   3 +-
 ...icrosoft.AspNetCore.Mvc.ApiExplorer.csproj |   1 +
 .../Microsoft.AspNetCore.Mvc.Core.csproj      |   9 +-
 .../Microsoft.AspNetCore.Mvc.Cors.csproj      |   1 +
 ...soft.AspNetCore.Mvc.DataAnnotations.csproj |   3 +-
 ...soft.AspNetCore.Mvc.Formatters.Json.csproj |   1 +
 ...osoft.AspNetCore.Mvc.Formatters.Xml.csproj |   1 +
 ...crosoft.AspNetCore.Mvc.Localization.csproj |   1 +
 .../Microsoft.AspNetCore.Mvc.Razor.csproj     |   1 +
 ...Microsoft.AspNetCore.Mvc.RazorPages.csproj |   1 +
 ...Microsoft.AspNetCore.Mvc.TagHelpers.csproj |   1 +
 ...crosoft.AspNetCore.Mvc.ViewFeatures.csproj |   1 +
 .../Microsoft.AspNetCore.Mvc.csproj           |   1 +
 .../Microsoft.AspNetCore.Razor.Runtime.csproj |   1 +
 .../src/Microsoft.AspNetCore.Razor.csproj     |   3 +-
 ...t.AspNetCore.Authentication.Cookies.csproj |   1 +
 ...Microsoft.AspNetCore.Authentication.csproj |   1 +
 ...oft.AspNetCore.Authentication.OAuth.csproj |   1 +
 .../Microsoft.AspNetCore.Authorization.csproj |   1 +
 ...oft.AspNetCore.Authorization.Policy.csproj |   1 +
 .../Microsoft.AspNetCore.CookiePolicy.csproj  |   1 +
 ...AspNetCore.Connections.Abstractions.csproj |   3 +-
 ...Microsoft.AspNetCore.Server.HttpSys.csproj |   1 +
 .../Microsoft.AspNetCore.Server.IIS.csproj    |   1 +
 ...ft.AspNetCore.Server.IISIntegration.csproj |   4 +-
 ...soft.AspNetCore.Server.Kestrel.Core.csproj |   4 +-
 ...spNetCore.Server.Kestrel.Core.Tests.csproj |   1 -
 ...Microsoft.AspNetCore.Server.Kestrel.csproj |   1 +
 ...rver.Kestrel.Transport.Abstractions.csproj |   1 +
 ...re.Server.Kestrel.Transport.Sockets.csproj |   1 +
 ....AspNetCore.Http.Connections.Common.csproj |  11 +-
 ...crosoft.AspNetCore.Http.Connections.csproj |   4 +-
 ...re.SignalR.Protocols.NewtonsoftJson.csproj |   2 +
 ...Microsoft.AspNetCore.SignalR.Common.csproj |  10 +-
 .../Microsoft.AspNetCore.SignalR.Core.csproj  |   1 +
 .../src/Microsoft.AspNetCore.SignalR.csproj   |   1 +
 98 files changed, 406 insertions(+), 268 deletions(-)
 delete mode 100644 build/SharedFrameworkOnly.props
 create mode 100644 eng/SharedFramework.External.props
 create mode 100644 eng/SharedFramework.Local.props
 delete mode 100644 src/Framework/Microsoft.AspNetCore.App.props

diff --git a/Directory.Build.props b/Directory.Build.props
index e9b788e01dd..a33ef67d4f4 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -154,6 +154,8 @@
   <Import Project="eng\Dependencies.props" />
   <Import Project="eng\PatchConfig.props" />
   <Import Project="eng\ProjectReferences.props" />
+  <Import Project="eng\SharedFramework.Local.props" />
+  <Import Project="eng\SharedFramework.External.props" />
   <Import Project="eng\targets\Cpp.Common.props"  Condition="'$(MSBuildProjectExtension)' == '.vcxproj'" />
   <Import Project="eng\targets\CSharp.Common.props"  Condition="'$(MSBuildProjectExtension)' == '.csproj'" />
   <Import Project="eng\targets\Wix.Common.props"  Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
diff --git a/build/SharedFrameworkOnly.props b/build/SharedFrameworkOnly.props
deleted file mode 100644
index 58f688c6784..00000000000
--- a/build/SharedFrameworkOnly.props
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-  This lists all assemblies which are part of the Microsoft.AspNetCore.App shared framework
-  and should not ship as NuGet packages.
--->
-<Project>
-
-  <Import Project="..\src\Framework\Microsoft.AspNetCore.App.props" />
-
-  <ItemGroup>
-    <!-- Packages to be removed from the shared framework but not done yet due to JSON.net dependency. -->
-    <SharedFrameworkAndPackage Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" />
-
-    <!-- Assemblies required by components and WebAssembly -->
-    <SharedFrameworkAndPackage Include="Microsoft.AspNetCore.Components" />
-    <SharedFrameworkAndPackage Include="Microsoft.AspNetCore.Components.Browser" />
-
-    <!-- Assemblies required by the SignalR client. -->
-    <SharedFrameworkAndPackage Include="Microsoft.AspNetCore.Http.Features" />
-    <SharedFrameworkAndPackage Include="Microsoft.AspNetCore.SignalR.Common" />
-    <SharedFrameworkAndPackage Include="Microsoft.AspNetCore.Connections.Abstractions" />
-    <SharedFrameworkAndPackage Include="Microsoft.AspNetCore.Http.Connections.Common" />
-
-    <SharedFrameworkOnlyPackage Include="@(Dependency)" Exclude="@(SharedFrameworkAndPackage);@(ExternalDependency)" />
-  </ItemGroup>
-
-</Project>
diff --git a/build/repo.props b/build/repo.props
index b8a6ec4e6e7..588fc15d847 100644
--- a/build/repo.props
+++ b/build/repo.props
@@ -1,6 +1,4 @@
 <Project>
-  <Import Project="SharedFrameworkOnly.props" />
-
   <PropertyGroup>
     <TargetRuntimeIdentifier Condition="'$(TargetRuntimeIdentifier)' == ''">$(TargetOsName)-$(TargetArchitecture)</TargetRuntimeIdentifier>
   </PropertyGroup>
@@ -180,6 +178,8 @@
   </Choose>
 
   <Import Project="..\eng\Versions.props" />
+  <Import Project="..\eng\SharedFramework.Local.props" />
+  <Import Project="..\eng\SharedFramework.External.props" />
   <Import Project="runtimes.props" />
   <Import Project="CodeSign.props" />
 </Project>
diff --git a/build/repo.targets b/build/repo.targets
index ae6bd42c127..eaf4a9fb1fa 100644
--- a/build/repo.targets
+++ b/build/repo.targets
@@ -67,6 +67,11 @@
       <Output TaskParameter="TargetOutputs" ItemName="_ProjectReferenceProvider"/>
     </MSBuild>
 
+    <ItemGroup>
+      <_SharedFrameworkAndPackageRef Include="@(_ProjectReferenceProvider->WithMetadataValue('IsAspNetCoreApp','true')->WithMetadataValue('IsShippingPackage', 'true')->Distinct())" />
+      <_SharedFrameworkRef Include="@(_ProjectReferenceProvider->WithMetadataValue('IsAspNetCoreApp','true')->WithMetadataValue('IsShippingPackage', 'false')->Distinct())" />
+    </ItemGroup>
+
     <PropertyGroup>
       <ProjectListFile>$(MSBuildThisFileDirectory)..\eng\ProjectReferences.props</ProjectListFile>
       <ProjectListContent>
@@ -86,6 +91,32 @@
     </PropertyGroup>
 
     <WriteLinesToFile File="$(ProjectListFile)" Lines="$(ProjectListContent)" Overwrite="true" />
+
+    <PropertyGroup>
+      <SharedFxDepList>$(MSBuildThisFileDirectory)..\eng\SharedFramework.Local.props</SharedFxDepList>
+      <SharedFxDepListContent>
+      <![CDATA[
+<!--
+  This file is automatically generated. Run `./eng/scripts/GenerateProjectList.ps1` to update.
+
+  This file contains a complete list of the assemblies which are part of the shared framework.
+
+  This project is generated using the <IsAspNetCoreApp> and <IsShippingPackage> properties from each .csproj in this repository.
+-->
+<Project>
+  <ItemGroup>
+    <!-- These assemblies are available as both a NuGet package and in the shared framework -->
+    @(_SharedFrameworkAndPackageRef->'<AspNetCoreAppReferenceAndPackage Include="%(Identity)" />', '%0A    ')
+
+    <!-- These assemblies are only in the shared framework -->
+    @(_SharedFrameworkRef->'<AspNetCoreAppReference Include="%(Identity)" />', '%0A    ')
+  </ItemGroup>
+</Project>
+      ]]>
+      </SharedFxDepListContent>
+    </PropertyGroup>
+
+    <WriteLinesToFile File="$(SharedFxDepList)" Lines="$(SharedFxDepListContent)" Overwrite="true" />
   </Target>
 
   <!-- This is temporary until we can use FrameworkReference to build our own packages. -->
@@ -97,7 +128,7 @@
 
     <RepoTasks.RemoveSharedFrameworkDependencies Condition="@(_BuildOutput->Count()) != 0"
       Files="@(_BuildOutput)"
-      FrameworkOnlyPackages="@(SharedFrameworkOnlyPackage)" />
+      FrameworkOnlyPackages="@(AspNetCoreAppReference)" />
   </Target>
 
   <Target Name="GenerateBuildAssetManifest">
diff --git a/docs/ProjectProperties.md b/docs/ProjectProperties.md
index fe5bba6bafc..939c7c8bcd5 100644
--- a/docs/ProjectProperties.md
+++ b/docs/ProjectProperties.md
@@ -6,3 +6,4 @@ In addition to the standard set of MSBuild properties supported by Microsoft.NET
 Property name      | Meaning
 -------------------|--------------------------------------------------------------------------------------------
 IsShippingPackage  | When set to `true`, the package produced by from project is intended for use by customers. Defaults to  `false`, which means the package is intended for internal use only by Microsoft teams.
+IsAspNetCoreApp    | Set to `true` when the assembly is part of the [Microsoft.AspNetCore.App shared framework](./SharedFramework.md)
\ No newline at end of file
diff --git a/docs/SharedFramework.md b/docs/SharedFramework.md
index b24cde5706a..fa872150614 100644
--- a/docs/SharedFramework.md
+++ b/docs/SharedFramework.md
@@ -7,7 +7,7 @@ Guidance on developing the ASP.NET Core shared framework (`Microsoft.AspNetCore.
 
 The ASP.NET Core shared framework contains assemblies that are fully developed, supported, and serviceable by Microsoft. You can think of this as constituting the ASP.NET Core *platform*. As such, all assemblies which are included in the shared framework are expected to meet specific requirements. Here are the principles we are using to guide our decisions about what is allowed in the shared framework.
 
-* Breaking changes are highly discouraged. Therefore, 
+* Breaking changes are highly discouraged. Therefore,
   * If it's in, it must be broadly useful and expected to be supported for at least several years.
   * The API for all assemblies in shared framework MUST NOT make breaking changes in patch or minor releases.
 * The complete closure of all assemblies must be in the shared framework, or must be in the "base framework", Microsoft.NETCore.App
@@ -19,3 +19,12 @@ The ASP.NET Core shared framework contains assemblies that are fully developed,
    * API we believe is essential for central experiences in .NET Core should be in the shared framework
    * Examples of central experiences: MVC, Kestrel, Razor, SignalR
 * New API can ship as out-of-band packages first, and move into the base framework later when it meets these standards
+
+### How to adjust what is in the shared framework
+
+The contents of the shared framework are defined in two ways:
+
+* [src/Framework/LocalDependencies.props](/src/Framework/LocalDependencies.props) - this file is generated from the .csproj files in this repo
+  by looking for projects which have set `<IsAspNetCoreApp>true</IsAspNetCoreApp>`.
+* [src/Framework/Microsoft.AspNetCore.App.props](/src/Framework/Microsoft.AspNetCore.App.props) - this file lists all assemblies shipped
+  in Microsoft.AspNetCore.App which are built by source code found in other repositories.
\ No newline at end of file
diff --git a/eng/Dependencies.props b/eng/Dependencies.props
index 88323dff63f..841d7a086d5 100644
--- a/eng/Dependencies.props
+++ b/eng/Dependencies.props
@@ -134,17 +134,13 @@ and are generated based on the last package release.
     <LatestPackageReference Include="StackExchange.Redis" Version="$(StackExchangeRedisPackageVersion)" />
     <LatestPackageReference Include="System.Buffers" Version="$(SystemBuffersPackageVersion)" />
     <LatestPackageReference Include="System.CodeDom" Version="$(SystemCodeDomPackageVersion)" />
-    <LatestPackageReference Include="System.ComponentModel.Annotations" Version="$(SystemComponentModelAnnotationsPackageVersion)" />
     <LatestPackageReference Include="System.Data.SqlClient" Version="$(SystemDataSqlClientPackageVersion)" />
-    <LatestPackageReference Include="System.Diagnostics.DiagnosticSource" Version="$(SystemDiagnosticsDiagnosticSourcePackageVersion)" />
     <LatestPackageReference Include="System.Diagnostics.EventLog" Version="$(SystemDiagnosticsEventLogPackageVersion)" />
     <LatestPackageReference Include="System.IdentityModel.Tokens.Jwt" Version="$(SystemIdentityModelTokensJwtPackageVersion)" />
     <LatestPackageReference Include="System.IO.Pipelines" Version="$(SystemIOPipelinesPackageVersion)" />
-    <LatestPackageReference Include="System.Memory" Version="$(SystemMemoryPackageVersion)" />
     <LatestPackageReference Include="System.Net.Http.WinHttpHandler" Version="$(SystemNetHttpWinHttpHandlerPackageVersion)" />
     <LatestPackageReference Include="System.Net.Http" Version="$(SystemNetHttpPackageVersion)" />
     <LatestPackageReference Include="System.Net.WebSockets.WebSocketProtocol" Version="$(SystemNetWebSocketsWebSocketProtocolPackageVersion)" />
-    <LatestPackageReference Include="System.Numerics.Vectors" Version="$(SystemNumericsVectorsPackageVersion)" />
     <LatestPackageReference Include="System.Reactive.Linq" Version="$(SystemReactiveLinqPackageVersion)" />
     <LatestPackageReference Include="System.Reflection.Metadata" Version="$(SystemReflectionMetadataPackageVersion)" />
     <LatestPackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="$(SystemRuntimeCompilerServicesUnsafePackageVersion)" />
diff --git a/eng/SharedFramework.External.props b/eng/SharedFramework.External.props
new file mode 100644
index 00000000000..3d3f44d186b
--- /dev/null
+++ b/eng/SharedFramework.External.props
@@ -0,0 +1,105 @@
+<!--
+
+  This lists all assemblies which are part of the Microsoft.AspNetCore.App shared framework
+  and are built as packages in another repo.
+
+-->
+<Project>
+
+  <ItemGroup>
+    <!-- Dependencies from aspnet/Extensions -->
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Caching.Abstractions"                    Version="$(MicrosoftExtensionsCachingAbstractionsPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Caching.Memory"                          Version="$(MicrosoftExtensionsCachingMemoryPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Configuration.Abstractions"              Version="$(MicrosoftExtensionsConfigurationAbstractionsPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Configuration.Binder"                    Version="$(MicrosoftExtensionsConfigurationBinderPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Configuration.CommandLine"               Version="$(MicrosoftExtensionsConfigurationCommandLinePackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables"      Version="$(MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Configuration.FileExtensions"            Version="$(MicrosoftExtensionsConfigurationFileExtensionsPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Configuration.Ini"                       Version="$(MicrosoftExtensionsConfigurationIniPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Configuration.Json"                      Version="$(MicrosoftExtensionsConfigurationJsonPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Configuration.KeyPerFile"                Version="$(MicrosoftExtensionsConfigurationKeyPerFilePackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Configuration.UserSecrets"               Version="$(MicrosoftExtensionsConfigurationUserSecretsPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Configuration.Xml"                       Version="$(MicrosoftExtensionsConfigurationXmlPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Configuration"                           Version="$(MicrosoftExtensionsConfigurationPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.DependencyInjection.Abstractions"        Version="$(MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.DependencyInjection"                     Version="$(MicrosoftExtensionsDependencyInjectionPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions"   Version="$(MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Diagnostics.HealthChecks"                Version="$(MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion)"  />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.FileProviders.Abstractions"              Version="$(MicrosoftExtensionsFileProvidersAbstractionsPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.FileProviders.Composite"                 Version="$(MicrosoftExtensionsFileProvidersCompositePackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.FileProviders.Embedded"                  Version="$(MicrosoftExtensionsFileProvidersEmbeddedPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.FileProviders.Physical"                  Version="$(MicrosoftExtensionsFileProvidersPhysicalPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.FileSystemGlobbing"                      Version="$(MicrosoftExtensionsFileSystemGlobbingPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Hosting.Abstractions"                    Version="$(MicrosoftExtensionsHostingAbstractionsPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Hosting"                                 Version="$(MicrosoftExtensionsHostingPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Http"                                    Version="$(MicrosoftExtensionsHttpPackageVersion)"  />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Localization.Abstractions"               Version="$(MicrosoftExtensionsLocalizationAbstractionsPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Localization"                            Version="$(MicrosoftExtensionsLocalizationPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Logging.Abstractions"                    Version="$(MicrosoftExtensionsLoggingAbstractionsPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Logging.Configuration"                   Version="$(MicrosoftExtensionsLoggingConfigurationPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Logging.Console"                         Version="$(MicrosoftExtensionsLoggingConsolePackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Logging.Debug"                           Version="$(MicrosoftExtensionsLoggingDebugPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Logging.EventSource"                     Version="$(MicrosoftExtensionsLoggingEventSourcePackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Logging.TraceSource"                     Version="$(MicrosoftExtensionsLoggingTraceSourcePackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Logging"                                 Version="$(MicrosoftExtensionsLoggingPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.ObjectPool"                              Version="$(MicrosoftExtensionsObjectPoolPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Options.ConfigurationExtensions"         Version="$(MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Options.DataAnnotations"                 Version="$(MicrosoftExtensionsOptionsDataAnnotationsPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Options"                                 Version="$(MicrosoftExtensionsOptionsPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Primitives"                              Version="$(MicrosoftExtensionsPrimitivesPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.WebEncoders"                             Version="$(MicrosoftExtensionsWebEncodersPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="Microsoft.JSInterop"                                          Version="$(MicrosoftJSInteropPackageVersion)" />
+
+    <!-- Dependencies from dotnet/corefx -->
+    <ExternalAspNetCoreAppReference Include="System.IO.Pipelines"                                          Version="$(SystemIOPipelinesPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="System.Runtime.CompilerServices.Unsafe"                       Version="$(SystemRuntimeCompilerServicesUnsafePackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="System.Security.Cryptography.Xml"                             Version="$(SystemSecurityCryptographyXmlPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="System.Text.Encodings.Web"                                    Version="$(SystemTextEncodingsWebPackageVersion)" />
+    <ExternalAspNetCoreAppReference Include="System.Threading.Channels"                                    Version="$(SystemThreadingChannelsPackageVersion)" />
+
+    <!-- Dependencies from dotnet/core-setup -->
+    <ExternalAspNetCoreAppReference Include="Microsoft.Extensions.DependencyModel"                         Version="$(MicrosoftExtensionsDependencyModelPackageVersion)" />
+
+    <!--
+      Transitive dependencies of other assemblies in the shared framework. These are listed separately and should not be included directly
+      when setting `<Reference>`. These are listed for the purpose of tests and servicing builds only.
+
+      If implementation details change and these assemblies are no longer showing up in the shared framework as a result of that,
+      it is okay to remove these transitive dependencies.
+
+      If these are needed as direct dependencies, it is okay to change them to ExternalAspNetCoreAppReference and move up into sections above.
+    -->
+    <_TransitiveExternalAspNetCoreAppReference Include="Microsoft.DotNet.PlatformAbstractions"              Version="$(MicrosoftDotNetPlatformAbstractionsPackageVersion)" />
+    <_TransitiveExternalAspNetCoreAppReference Include="Newtonsoft.Json"                                    Version="$(NewtonsoftJsonPackageVersion)" />
+    <_TransitiveExternalAspNetCoreAppReference Include="System.Security.Cryptography.Pkcs"                  Version="$(SystemSecurityCryptographyPkcsPackageVersion)" />
+    <_TransitiveExternalAspNetCoreAppReference Include="System.Security.Permissions"                        Version="$(SystemSecurityPermissionsPackageVersion)" />
+  </ItemGroup>
+
+  <ItemGroup Condition=" '$(IsServicingBuild)' == 'true' ">
+    <!--
+      Once we start to build a servicing release, hoist transitive dependencies to be direct dependencies.
+      This will help us ensure servicing builds carry the latest versions of dependencies, even if we aren't rebuilding
+      the original direct dependency that pulled in the transitive reference.
+    -->
+    <ExternalAspNetCoreAppReference Include="@(_TransitiveExternalAspNetCoreAppReference)" />
+  </ItemGroup>
+
+  <!--
+    These compilation references are necessary to compile netstandard2.0 assemblies which are in the shared framework.
+    This references are part of Microsoft.NETCore.App, so are listed here as references to be used during compilation only.
+  -->
+  <ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
+    <_CompilationOnlyReference Include="System.Buffers" />
+  </ItemGroup>
+
+  <!--
+    These compilation references are necessary to workaround the mismatch of what is found in the ref pack for NETCore.App and what
+    is actually present at runtime. See https://github.com/dotnet/corefx/issues/34906
+  -->
+  <ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.0'">
+    <_CompilationOnlyReference Include="Microsoft.Win32.Registry" />
+    <_CompilationOnlyReference Include="System.Security.Cryptography.Cng" />
+    <_CompilationOnlyReference Include="System.Security.Principal.Windows" />
+  </ItemGroup>
+
+</Project>
diff --git a/eng/SharedFramework.Local.props b/eng/SharedFramework.Local.props
new file mode 100644
index 00000000000..4907c5f4338
--- /dev/null
+++ b/eng/SharedFramework.Local.props
@@ -0,0 +1,91 @@
+<!--
+  This file is automatically generated. Run `./eng/scripts/GenerateProjectList.ps1` to update.
+
+  This file contains a complete list of the assemblies which are part of the shared framework.
+
+  This project is generated using the <IsAspNetCoreApp> and <IsShippingPackage> properties from each .csproj in this repository.
+-->
+<Project>
+  <ItemGroup>
+    <!-- These assemblies are available as both a NuGet package and in the shared framework -->
+    <AspNetCoreAppReferenceAndPackage Include="Microsoft.AspNetCore.Http.Features" />
+    <AspNetCoreAppReferenceAndPackage Include="Microsoft.AspNetCore.Connections.Abstractions" />
+    <AspNetCoreAppReferenceAndPackage Include="Microsoft.AspNetCore.Http.Connections.Common" />
+    <AspNetCoreAppReferenceAndPackage Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" />
+    <AspNetCoreAppReferenceAndPackage Include="Microsoft.AspNetCore.SignalR.Common" />
+    <AspNetCoreAppReferenceAndPackage Include="Microsoft.AspNetCore.Components.Browser" />
+    <AspNetCoreAppReferenceAndPackage Include="Microsoft.AspNetCore.Components" />
+
+    <!-- These assemblies are only in the shared framework -->
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.DataProtection.Abstractions" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Cryptography.Internal" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.DataProtection" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.DataProtection.Extensions" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Antiforgery" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Hosting.Abstractions" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Hosting" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Hosting.Server.Abstractions" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Authentication.Abstractions" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Authentication.Core" />
+    <AspNetCoreAppReference Include="Microsoft.Net.Http.Headers" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Http.Abstractions" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Http.Extensions" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Http" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Routing.Abstractions" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Routing" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.WebUtilities" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Html.Abstractions" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Identity" />
+    <AspNetCoreAppReference Include="Microsoft.Extensions.Identity.Core" />
+    <AspNetCoreAppReference Include="Microsoft.Extensions.Identity.Stores" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Server.HttpSys" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Server.IISIntegration" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Server.IIS" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Server.Kestrel.Core" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Server.Kestrel" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Authentication.Cookies" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Authentication" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Authentication.OAuth" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Authorization" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Authorization.Policy" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.CookiePolicy" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Cors" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Diagnostics.Abstractions" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Diagnostics" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.HostFiltering" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.HttpOverrides" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.HttpsPolicy" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Localization.Routing" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Localization" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.ResponseCaching.Abstractions" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.ResponseCaching" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.ResponseCompression" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Rewrite" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Session" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.StaticFiles" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.WebSockets" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Razor.Runtime" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Razor" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Mvc.Abstractions" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Mvc.ApiExplorer" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Mvc.Core" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Mvc.Cors" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Mvc.DataAnnotations" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Mvc.Formatters.Json" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Mvc.Formatters.Xml" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Mvc.Localization" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Mvc.RazorPages" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Mvc.Razor" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Mvc.TagHelpers" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Mvc.ViewFeatures" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Mvc" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.Http.Connections" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.SignalR.Core" />
+    <AspNetCoreAppReference Include="Microsoft.AspNetCore.SignalR" />
+  </ItemGroup>
+</Project>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index ccca0f73cde..d23e550a66f 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -289,18 +289,10 @@
       <Uri>https://github.com/dotnet/corefx</Uri>
       <Sha>c38c10d28e223aeea2f363a6ef0bf4a63d00a776</Sha>
     </Dependency>
-    <Dependency Name="System.ComponentModel.Annotations" Version="4.6.0-preview.19106.2">
-      <Uri>https://github.com/dotnet/corefx</Uri>
-      <Sha>c38c10d28e223aeea2f363a6ef0bf4a63d00a776</Sha>
-    </Dependency>
     <Dependency Name="System.Data.SqlClient" Version="4.7.0-preview.19106.2">
       <Uri>https://github.com/dotnet/corefx</Uri>
       <Sha>c38c10d28e223aeea2f363a6ef0bf4a63d00a776</Sha>
     </Dependency>
-    <Dependency Name="System.Diagnostics.DiagnosticSource" Version="4.6.0-preview.19106.2">
-      <Uri>https://github.com/dotnet/corefx</Uri>
-      <Sha>c38c10d28e223aeea2f363a6ef0bf4a63d00a776</Sha>
-    </Dependency>
     <Dependency Name="System.Diagnostics.EventLog" Version="4.6.0-preview.19106.2">
       <Uri>https://github.com/dotnet/corefx</Uri>
       <Sha>c38c10d28e223aeea2f363a6ef0bf4a63d00a776</Sha>
@@ -317,10 +309,6 @@
       <Uri>https://github.com/dotnet/corefx</Uri>
       <Sha>c38c10d28e223aeea2f363a6ef0bf4a63d00a776</Sha>
     </Dependency>
-    <Dependency Name="System.Numerics.Vectors" Version="4.6.0-preview.19106.2">
-      <Uri>https://github.com/dotnet/corefx</Uri>
-      <Sha>c38c10d28e223aeea2f363a6ef0bf4a63d00a776</Sha>
-    </Dependency>
     <Dependency Name="System.Reflection.Metadata" Version="1.7.0-preview.19106.2">
       <Uri>https://github.com/dotnet/corefx</Uri>
       <Sha>c38c10d28e223aeea2f363a6ef0bf4a63d00a776</Sha>
diff --git a/eng/Versions.props b/eng/Versions.props
index 22f4977dc5e..7652805fe69 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -25,14 +25,11 @@
     <MicrosoftBclJsonSourcesPackageVersion>4.6.0-preview.19106.2</MicrosoftBclJsonSourcesPackageVersion>
     <MicrosoftCSharpPackageVersion>4.6.0-preview.19106.2</MicrosoftCSharpPackageVersion>
     <MicrosoftWin32RegistryPackageVersion>4.6.0-preview.19106.2</MicrosoftWin32RegistryPackageVersion>
-    <SystemComponentModelAnnotationsPackageVersion>4.6.0-preview.19106.2</SystemComponentModelAnnotationsPackageVersion>
     <SystemDataSqlClientPackageVersion>4.7.0-preview.19106.2</SystemDataSqlClientPackageVersion>
-    <SystemDiagnosticsDiagnosticSourcePackageVersion>4.6.0-preview.19106.2</SystemDiagnosticsDiagnosticSourcePackageVersion>
     <SystemDiagnosticsEventLogPackageVersion>4.6.0-preview.19106.2</SystemDiagnosticsEventLogPackageVersion>
     <SystemIOPipelinesPackageVersion>4.6.0-preview.19106.2</SystemIOPipelinesPackageVersion>
     <SystemNetHttpWinHttpHandlerPackageVersion>4.6.0-preview.19106.2</SystemNetHttpWinHttpHandlerPackageVersion>
     <SystemNetWebSocketsWebSocketProtocolPackageVersion>4.6.0-preview.19106.2</SystemNetWebSocketsWebSocketProtocolPackageVersion>
-    <SystemNumericsVectorsPackageVersion>4.6.0-preview.19106.2</SystemNumericsVectorsPackageVersion>
     <SystemReflectionMetadataPackageVersion>1.7.0-preview.19106.2</SystemReflectionMetadataPackageVersion>
     <SystemRuntimeCompilerServicesUnsafePackageVersion>4.6.0-preview.19106.2</SystemRuntimeCompilerServicesUnsafePackageVersion>
     <SystemSecurityCryptographyCngPackageVersion>4.6.0-preview.19106.2</SystemSecurityCryptographyCngPackageVersion>
@@ -136,7 +133,6 @@
     <!-- Stable dotnet/corefx packages no longer updated for .NET Core 3 -->
     <SystemBuffersPackageVersion>4.5.0</SystemBuffersPackageVersion>
     <SystemCodeDomPackageVersion>4.4.0</SystemCodeDomPackageVersion>
-    <SystemMemoryPackageVersion>4.5.2</SystemMemoryPackageVersion>
     <SystemNetHttpPackageVersion>4.3.2</SystemNetHttpPackageVersion>
     <SystemThreadingTasksExtensionsPackageVersion>4.5.2</SystemThreadingTasksExtensionsPackageVersion>
     <!-- Packages developed by @aspnet, but manually updated as necessary. -->
diff --git a/eng/targets/ResolveReferences.targets b/eng/targets/ResolveReferences.targets
index 149ec438222..c397c09ded1 100644
--- a/eng/targets/ResolveReferences.targets
+++ b/eng/targets/ResolveReferences.targets
@@ -58,6 +58,18 @@
 
     <_UnusedProjectReferenceProvider Include="@(ProjectReferenceProvider)" Exclude="@(Reference)" />
 
+    <_CompilationOnlyReference Condition="'$(TargetFramework)' == 'netstandard2.0'" Include="@(Reference->WithMetadataValue('NuGetPackageId','NETStandard.Library'))" />
+
+    <_InvalidReferenceToNonSharedFxAssembly Condition="'$(IsAspNetCoreApp)' == 'true'"
+      Include="@(Reference)"
+      Exclude="
+        Newtonsoft.Json;
+        @(AspNetCoreAppReference);
+        @(AspNetCoreAppReferenceAndPackage);
+        @(ExternalAspNetCoreAppReference);
+        @(_CompilationOnlyReference)" />
+    <!-- TODO: remove Newtonsoft.Json from this list once https://github.com/aspnet/AspNetCore/issues/4260 is resolved -->
+
     <!--
       Turn Reference items into a ProjectReference when UseProjectReferences is true.
       Order matters. This comes before package resolution because projects should be used when possible instead of packages.
@@ -75,6 +87,27 @@
     <Reference Remove="@(Reference)" />
   </ItemGroup>
 
+  <ItemDefinitionGroup>
+    <Reference>
+      <SharedSources>false</SharedSources>
+    </Reference>
+  </ItemDefinitionGroup>
+
+  <!--
+    This target resolves remaining Referene items to Packages, if possible. If not, they are left as Reference items fo the SDK to resolve.
+    This target helps ensure projects within the shared framework do no unintentionally add new references,
+    and that assemblies outside the shared framework reference the framework as a whole instead of using
+    individual assemblies.
+  -->
+  <Target Name="_CheckForReferenceBoundaries" BeforeTargets="CollectPackageReferences;ResolveReferences">
+
+    <Error Condition="@(_InvalidReferenceToSharedFxOnlyAssembly->Count()) != 0"
+           Text="Cannot reference &quot;%(_InvalidReferenceToSharedFxOnlyAssembly.Identity)&quot; directly because it is part of the shared framework and this project is not. Use &lt;FrameworkReference Include=&quot;Microsoft.AspNetCore.App&quot; /&gt; instead." />
+
+    <Error Condition="@(_InvalidReferenceToNonSharedFxAssembly->Count()) != 0 AND '%(_InvalidReferenceToNonSharedFxAssembly.SharedSources)' != 'true'"
+           Text="Cannot reference &quot;%(_InvalidReferenceToNonSharedFxAssembly.Identity)&quot;. This dependency is not in the shared framework. See docs/SharedFramework.md for instructions on how to modify what is in the shared framework." />
+  </Target>
+
   <!--
     This target resolves remaining Referene items to Packages, if possible. If not, they are left as Reference items fo the SDK to resolve.
     This executes on NuGet restore and during DesignTimeBuild. It should not run in the outer, cross-targeting build.
@@ -84,6 +117,12 @@
       <Reference Include="@(_ReferenceTemp)" />
       <_ReferenceTemp Remove="@(_ReferenceTemp)" />
 
+      <!-- Ensure only content asset are consumed from .Sources packages -->
+      <Reference>
+        <IncludeAssets Condition="'%(SharedSources)' == 'true'">ContentFiles</IncludeAssets>
+        <PrivateAssets Condition="'%(SharedSources)' == 'true'">All</PrivateAssets>
+      </Reference>
+
       <!-- Identify if any references were present in the last release of this package, but have been removed. -->
       <UnusedBaselinePackageReference Include="@(BaselinePackageReference)" Exclude="@(Reference);@(_ProjectReferenceByAssemblyName);@(PackageReference)" />
 
@@ -165,6 +204,8 @@
   <Target Name="_GetReferencesProvided" Returns="@(ProvidesReference)">
     <ItemGroup Condition=" '$(IsProjectReferenceProvider)' == 'true' ">
       <ProvidesReference Include="$(AssemblyName)">
+        <IsAspNetCoreApp>$([MSBuild]::ValueOrDefault($(IsAspNetCoreApp),'false'))</IsAspNetCoreApp>
+        <IsShippingPackage>$([MSBuild]::ValueOrDefault($(IsShippingPackage),'false'))</IsShippingPackage>
         <ProjectFileRelativePath>$([MSBuild]::MakeRelative($(RepositoryRoot), $(MSBuildProjectFullPath)))</ProjectFileRelativePath>
       </ProvidesReference>
     </ItemGroup>
diff --git a/src/Antiforgery/src/Microsoft.AspNetCore.Antiforgery.csproj b/src/Antiforgery/src/Microsoft.AspNetCore.Antiforgery.csproj
index a157b130ccd..c34c52157b7 100644
--- a/src/Antiforgery/src/Microsoft.AspNetCore.Antiforgery.csproj
+++ b/src/Antiforgery/src/Microsoft.AspNetCore.Antiforgery.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>An antiforgery system for ASP.NET Core designed to generate and validate tokens to prevent Cross-Site Request Forgery attacks.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;antiforgery</PackageTags>
diff --git a/src/Components/Browser/src/Microsoft.AspNetCore.Components.Browser.csproj b/src/Components/Browser/src/Microsoft.AspNetCore.Components.Browser.csproj
index b203e931a2f..b1e7c375487 100644
--- a/src/Components/Browser/src/Microsoft.AspNetCore.Components.Browser.csproj
+++ b/src/Components/Browser/src/Microsoft.AspNetCore.Components.Browser.csproj
@@ -2,6 +2,7 @@
 
   <PropertyGroup>
     <TargetFramework>netstandard2.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <Description>Support for rendering ASP.NET Core components for browsers.</Description>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <IsShippingPackage>true</IsShippingPackage>
diff --git a/src/Components/Components/src/Microsoft.AspNetCore.Components.csproj b/src/Components/Components/src/Microsoft.AspNetCore.Components.csproj
index 497f023f73e..b9026cff096 100644
--- a/src/Components/Components/src/Microsoft.AspNetCore.Components.csproj
+++ b/src/Components/Components/src/Microsoft.AspNetCore.Components.csproj
@@ -5,6 +5,7 @@
     <Description>Components feature for ASP.NET Core.</Description>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <IsShippingPackage>true</IsShippingPackage>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
   </PropertyGroup>
 
   <ItemGroup>
diff --git a/src/DataProtection/Abstractions/src/Microsoft.AspNetCore.DataProtection.Abstractions.csproj b/src/DataProtection/Abstractions/src/Microsoft.AspNetCore.DataProtection.Abstractions.csproj
index 8cdcf5d18c7..14606b7db75 100644
--- a/src/DataProtection/Abstractions/src/Microsoft.AspNetCore.DataProtection.Abstractions.csproj
+++ b/src/DataProtection/Abstractions/src/Microsoft.AspNetCore.DataProtection.Abstractions.csproj
@@ -6,6 +6,7 @@ Commonly used types:
 Microsoft.AspNetCore.DataProtection.IDataProtectionProvider
 Microsoft.AspNetCore.DataProtection.IDataProtector</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;dataprotection</PackageTags>
   </PropertyGroup>
diff --git a/src/DataProtection/Cryptography.Internal/src/Microsoft.AspNetCore.Cryptography.Internal.csproj b/src/DataProtection/Cryptography.Internal/src/Microsoft.AspNetCore.Cryptography.Internal.csproj
index 9859f30a111..1ee230c0e11 100644
--- a/src/DataProtection/Cryptography.Internal/src/Microsoft.AspNetCore.Cryptography.Internal.csproj
+++ b/src/DataProtection/Cryptography.Internal/src/Microsoft.AspNetCore.Cryptography.Internal.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>Infrastructure for ASP.NET Core cryptographic packages. Applications and libraries should not reference this package directly.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
diff --git a/src/DataProtection/Cryptography.KeyDerivation/src/Microsoft.AspNetCore.Cryptography.KeyDerivation.csproj b/src/DataProtection/Cryptography.KeyDerivation/src/Microsoft.AspNetCore.Cryptography.KeyDerivation.csproj
index 69982996dc7..016ac5a57a7 100644
--- a/src/DataProtection/Cryptography.KeyDerivation/src/Microsoft.AspNetCore.Cryptography.KeyDerivation.csproj
+++ b/src/DataProtection/Cryptography.KeyDerivation/src/Microsoft.AspNetCore.Cryptography.KeyDerivation.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core utilities for key derivation.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;dataprotection</PackageTags>
diff --git a/src/DataProtection/DataProtection/src/Microsoft.AspNetCore.DataProtection.csproj b/src/DataProtection/DataProtection/src/Microsoft.AspNetCore.DataProtection.csproj
index c843a00dd40..067f987981d 100644
--- a/src/DataProtection/DataProtection/src/Microsoft.AspNetCore.DataProtection.csproj
+++ b/src/DataProtection/DataProtection/src/Microsoft.AspNetCore.DataProtection.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core logic to protect and unprotect data, similar to DPAPI.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
diff --git a/src/DataProtection/Extensions/src/Microsoft.AspNetCore.DataProtection.Extensions.csproj b/src/DataProtection/Extensions/src/Microsoft.AspNetCore.DataProtection.Extensions.csproj
index 7a4c008f784..fff474980f9 100644
--- a/src/DataProtection/Extensions/src/Microsoft.AspNetCore.DataProtection.Extensions.csproj
+++ b/src/DataProtection/Extensions/src/Microsoft.AspNetCore.DataProtection.Extensions.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>Additional APIs for ASP.NET Core data protection.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;dataprotection</PackageTags>
   </PropertyGroup>
diff --git a/src/DefaultBuilder/src/Microsoft.AspNetCore.csproj b/src/DefaultBuilder/src/Microsoft.AspNetCore.csproj
index 60c7a459d51..23c9ec38520 100644
--- a/src/DefaultBuilder/src/Microsoft.AspNetCore.csproj
+++ b/src/DefaultBuilder/src/Microsoft.AspNetCore.csproj
@@ -2,6 +2,7 @@
 
   <PropertyGroup>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <PackageTags>aspnetcore</PackageTags>
     <Description>Microsoft.AspNetCore</Description>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
diff --git a/src/Framework/Microsoft.AspNetCore.App.props b/src/Framework/Microsoft.AspNetCore.App.props
deleted file mode 100644
index 23785af4dfc..00000000000
--- a/src/Framework/Microsoft.AspNetCore.App.props
+++ /dev/null
@@ -1,158 +0,0 @@
-<!--
-  This lists all assemblies which are part of the Microsoft.AspNetCore.App metapackage and shared framework.
--->
-<Project>
-
-  <ItemGroup>
-    <Dependency Include="Microsoft.AspNetCore.Antiforgery" />
-    <Dependency Include="Microsoft.AspNetCore.Authentication.Abstractions" />
-    <Dependency Include="Microsoft.AspNetCore.Authentication.Cookies" />
-    <Dependency Include="Microsoft.AspNetCore.Authentication.Core" />
-    <Dependency Include="Microsoft.AspNetCore.Authentication.OAuth" />
-    <Dependency Include="Microsoft.AspNetCore.Authentication" />
-    <Dependency Include="Microsoft.AspNetCore.Authorization.Policy" />
-    <Dependency Include="Microsoft.AspNetCore.Authorization" />
-    <Dependency Include="Microsoft.AspNetCore.Components.Browser" />
-    <Dependency Include="Microsoft.AspNetCore.Components" />
-    <Dependency Include="Microsoft.AspNetCore.Connections.Abstractions" />
-    <Dependency Include="Microsoft.AspNetCore.CookiePolicy" />
-    <Dependency Include="Microsoft.AspNetCore.Cors" />
-    <Dependency Include="Microsoft.AspNetCore.Cryptography.Internal" />
-    <Dependency Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" />
-    <Dependency Include="Microsoft.AspNetCore.DataProtection.Abstractions" />
-    <Dependency Include="Microsoft.AspNetCore.DataProtection.Extensions" />
-    <Dependency Include="Microsoft.AspNetCore.DataProtection" />
-    <Dependency Include="Microsoft.AspNetCore.Diagnostics.Abstractions" />
-    <Dependency Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" />
-    <Dependency Include="Microsoft.AspNetCore.Diagnostics" />
-    <Dependency Include="Microsoft.AspNetCore.HostFiltering" />
-    <Dependency Include="Microsoft.AspNetCore.Hosting.Abstractions" />
-    <Dependency Include="Microsoft.AspNetCore.Hosting.Server.Abstractions" />
-    <Dependency Include="Microsoft.AspNetCore.Hosting" />
-    <Dependency Include="Microsoft.AspNetCore.Html.Abstractions" />
-    <Dependency Include="Microsoft.AspNetCore.Http.Abstractions" />
-    <Dependency Include="Microsoft.AspNetCore.Http.Connections.Common" />
-    <Dependency Include="Microsoft.AspNetCore.Http.Connections" />
-    <Dependency Include="Microsoft.AspNetCore.Http.Extensions" />
-    <Dependency Include="Microsoft.AspNetCore.Http.Features" />
-    <Dependency Include="Microsoft.AspNetCore.Http" />
-    <Dependency Include="Microsoft.AspNetCore.HttpOverrides" />
-    <Dependency Include="Microsoft.AspNetCore.HttpsPolicy" />
-    <Dependency Include="Microsoft.AspNetCore.Identity" />
-    <Dependency Include="Microsoft.AspNetCore.Localization.Routing" />
-    <Dependency Include="Microsoft.AspNetCore.Localization" />
-    <Dependency Include="Microsoft.AspNetCore.Mvc.Abstractions" />
-    <Dependency Include="Microsoft.AspNetCore.Mvc.ApiExplorer" />
-    <Dependency Include="Microsoft.AspNetCore.Mvc.Core" />
-    <Dependency Include="Microsoft.AspNetCore.Mvc.Cors" />
-    <Dependency Include="Microsoft.AspNetCore.Mvc.DataAnnotations" />
-    <Dependency Include="Microsoft.AspNetCore.Mvc.Formatters.Json" />
-    <Dependency Include="Microsoft.AspNetCore.Mvc.Formatters.Xml" />
-    <Dependency Include="Microsoft.AspNetCore.Mvc.Localization" />
-    <Dependency Include="Microsoft.AspNetCore.Mvc.Razor" />
-    <Dependency Include="Microsoft.AspNetCore.Mvc.RazorPages" />
-    <Dependency Include="Microsoft.AspNetCore.Mvc.TagHelpers" />
-    <Dependency Include="Microsoft.AspNetCore.Mvc.ViewFeatures" />
-    <Dependency Include="Microsoft.AspNetCore.Mvc" />
-    <Dependency Include="Microsoft.AspNetCore.Razor.Runtime" />
-    <Dependency Include="Microsoft.AspNetCore.Razor" />
-    <Dependency Include="Microsoft.AspNetCore.ResponseCaching.Abstractions" />
-    <Dependency Include="Microsoft.AspNetCore.ResponseCaching" />
-    <Dependency Include="Microsoft.AspNetCore.ResponseCompression" />
-    <Dependency Include="Microsoft.AspNetCore.Rewrite" />
-    <Dependency Include="Microsoft.AspNetCore.Routing.Abstractions" />
-    <Dependency Include="Microsoft.AspNetCore.Routing" />
-    <Dependency Include="Microsoft.AspNetCore.Server.HttpSys" />
-    <Dependency Include="Microsoft.AspNetCore.Server.IIS" />
-    <Dependency Include="Microsoft.AspNetCore.Server.IISIntegration" />
-    <Dependency Include="Microsoft.AspNetCore.Server.Kestrel.Core" />
-    <Dependency Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions" />
-    <Dependency Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets" />
-    <Dependency Include="Microsoft.AspNetCore.Server.Kestrel" />
-    <Dependency Include="Microsoft.AspNetCore.Session" />
-    <Dependency Include="Microsoft.AspNetCore.SignalR.Common" />
-    <Dependency Include="Microsoft.AspNetCore.SignalR.Core" />
-    <Dependency Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" />
-    <Dependency Include="Microsoft.AspNetCore.SignalR" />
-    <Dependency Include="Microsoft.AspNetCore.StaticFiles" />
-    <Dependency Include="Microsoft.AspNetCore.WebSockets" />
-    <Dependency Include="Microsoft.AspNetCore.WebUtilities" />
-    <Dependency Include="Microsoft.AspNetCore" />
-    <Dependency Include="Microsoft.Extensions.Identity.Core" />
-    <Dependency Include="Microsoft.Extensions.Identity.Stores" />
-    <Dependency Include="Microsoft.Net.Http.Headers" />
-
-    <!-- We still be the shared framework but running restore against packages we just built. This sets the version to match the current build number. -->
-    <Dependency Update="@(Dependency)" Version="$(PackageVersion)" />
-
-    <!-- Dependencies built as packages in other repos that we definitely want in the shared framework. -->
-    <ExternalDependency Include="Microsoft.Extensions.Caching.Abstractions"                    Version="$(MicrosoftExtensionsCachingAbstractionsPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Caching.Memory"                          Version="$(MicrosoftExtensionsCachingMemoryPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Configuration.Abstractions"              Version="$(MicrosoftExtensionsConfigurationAbstractionsPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Configuration.Binder"                    Version="$(MicrosoftExtensionsConfigurationBinderPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Configuration.CommandLine"               Version="$(MicrosoftExtensionsConfigurationCommandLinePackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Configuration.EnvironmentVariables"      Version="$(MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Configuration.FileExtensions"            Version="$(MicrosoftExtensionsConfigurationFileExtensionsPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Configuration.Ini"                       Version="$(MicrosoftExtensionsConfigurationIniPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Configuration.Json"                      Version="$(MicrosoftExtensionsConfigurationJsonPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Configuration.KeyPerFile"                Version="$(MicrosoftExtensionsConfigurationKeyPerFilePackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Configuration.UserSecrets"               Version="$(MicrosoftExtensionsConfigurationUserSecretsPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Configuration.Xml"                       Version="$(MicrosoftExtensionsConfigurationXmlPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Configuration"                           Version="$(MicrosoftExtensionsConfigurationPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.DependencyInjection.Abstractions"        Version="$(MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.DependencyInjection"                     Version="$(MicrosoftExtensionsDependencyInjectionPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions"   Version="$(MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Diagnostics.HealthChecks"                Version="$(MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion)"  />
-    <ExternalDependency Include="Microsoft.Extensions.FileProviders.Abstractions"              Version="$(MicrosoftExtensionsFileProvidersAbstractionsPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.FileProviders.Composite"                 Version="$(MicrosoftExtensionsFileProvidersCompositePackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.FileProviders.Embedded"                  Version="$(MicrosoftExtensionsFileProvidersEmbeddedPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.FileProviders.Physical"                  Version="$(MicrosoftExtensionsFileProvidersPhysicalPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.FileSystemGlobbing"                      Version="$(MicrosoftExtensionsFileSystemGlobbingPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Hosting.Abstractions"                    Version="$(MicrosoftExtensionsHostingAbstractionsPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Hosting"                                 Version="$(MicrosoftExtensionsHostingPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Http"                                    Version="$(MicrosoftExtensionsHttpPackageVersion)"  />
-    <ExternalDependency Include="Microsoft.Extensions.Localization.Abstractions"               Version="$(MicrosoftExtensionsLocalizationAbstractionsPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Localization"                            Version="$(MicrosoftExtensionsLocalizationPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Logging.Abstractions"                    Version="$(MicrosoftExtensionsLoggingAbstractionsPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Logging.Configuration"                   Version="$(MicrosoftExtensionsLoggingConfigurationPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Logging.Console"                         Version="$(MicrosoftExtensionsLoggingConsolePackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Logging.Debug"                           Version="$(MicrosoftExtensionsLoggingDebugPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Logging.EventSource"                     Version="$(MicrosoftExtensionsLoggingEventSourcePackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Logging.TraceSource"                     Version="$(MicrosoftExtensionsLoggingTraceSourcePackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Logging"                                 Version="$(MicrosoftExtensionsLoggingPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.ObjectPool"                              Version="$(MicrosoftExtensionsObjectPoolPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Options.ConfigurationExtensions"         Version="$(MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Options.DataAnnotations"                 Version="$(MicrosoftExtensionsOptionsDataAnnotationsPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Options"                                 Version="$(MicrosoftExtensionsOptionsPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.Primitives"                              Version="$(MicrosoftExtensionsPrimitivesPackageVersion)" />
-    <ExternalDependency Include="Microsoft.Extensions.WebEncoders"                             Version="$(MicrosoftExtensionsWebEncodersPackageVersion)" />
-    <ExternalDependency Include="Microsoft.JSInterop"                                          Version="$(MicrosoftJSInteropPackageVersion)" />
-
-    <!--
-      Transitive dependencies of other assemblies in the shared framework. These are listed separately and should not be included directly
-      when setting `<Reference>`. These are listed for the purpose of tests and servicing builds only.
-      If implementation details change and these assemblies are no longer showing up in the shared framework as a result of that,
-      it is okay to remove these transitive dependencies.
-    -->
-    <_TransitiveExternalDependency Include="Microsoft.DotNet.PlatformAbstractions"              Version="$(MicrosoftDotNetPlatformAbstractionsPackageVersion)" />
-    <_TransitiveExternalDependency Include="Microsoft.Extensions.DependencyModel"               Version="$(MicrosoftExtensionsDependencyModelPackageVersion)" />
-    <_TransitiveExternalDependency Include="Newtonsoft.Json"                                    Version="$(NewtonsoftJsonPackageVersion)" />
-    <_TransitiveExternalDependency Include="System.IO.Pipelines"                                Version="$(SystemIOPipelinesPackageVersion)" />
-    <_TransitiveExternalDependency Include="System.Runtime.CompilerServices.Unsafe"             Version="$(SystemRuntimeCompilerServicesUnsafePackageVersion)" />
-    <_TransitiveExternalDependency Include="System.Security.Cryptography.Pkcs"                  Version="$(SystemSecurityCryptographyPkcsPackageVersion)" />
-    <_TransitiveExternalDependency Include="System.Security.Cryptography.Xml"                   Version="$(SystemSecurityCryptographyXmlPackageVersion)" />
-    <_TransitiveExternalDependency Include="System.Security.Permissions"                        Version="$(SystemSecurityPermissionsPackageVersion)" />
-    <_TransitiveExternalDependency Include="System.Text.Encodings.Web"                          Version="$(SystemTextEncodingsWebPackageVersion)" />
-    <_TransitiveExternalDependency Include="System.Threading.Channels"                          Version="$(SystemThreadingChannelsPackageVersion)" />
-  </ItemGroup>
-
-  <ItemGroup Condition=" '$(IsServicingBuild)' == 'true' ">
-    <!--
-      Once we start to build a servicing release, hoist transitive dependencies to be direct dependencies.
-      This will help us ensure servicing builds carry the latest versions of dependencies, even if we aren't rebuilding
-      the original direct dependency that pulled in the transitive reference.
-    -->
-    <ExternalDependency Include="@(_TransitiveExternalDependency)" />
-  </ItemGroup>
-
-</Project>
diff --git a/src/Framework/pkg/Metapackage.targets b/src/Framework/pkg/Metapackage.targets
index 1e43373b9b2..51479945e57 100644
--- a/src/Framework/pkg/Metapackage.targets
+++ b/src/Framework/pkg/Metapackage.targets
@@ -30,8 +30,12 @@
       <AllowExplicitVersion>true</AllowExplicitVersion>
     </PackageReference>
 
-    <!-- Note: do not add _TransitiveExternalDependency to this list. This is intentionally not listed as a direct package reference. -->
-    <PackageReference Include="@(Dependency);@(ExternalDependency)" />
+    <!-- Add version metadata. These are expected to match the metapackage version. -->
+    <AspNetCoreAppReferenceAndPackage Update="@(AspNetCoreAppReferenceAndPackage)" Version="$(SharedFxVersion)" />
+    <AspNetCoreAppReference Update="@(AspNetCoreAppReference)" Version="$(SharedFxVersion)" />
+
+    <!-- Note: do not add _TransitiveExternalAspNetCoreAppReference to this list. This is intentionally not listed as a direct package reference. -->
+    <PackageReference Include="@(AspNetCoreAppReference);@(AspNetCoreAppReferenceAndPackage);@(ExternalAspNetCoreAppReference)" />
   </ItemGroup>
 
   <ItemDefinitionGroup>
@@ -71,8 +75,9 @@
   <Target Name="GenerateBuildProps" BeforeTargets="BeforeBuild" DependsOnTargets="PrepareOutputPaths">
 
     <ItemGroup>
-      <_AspNetAppPackageConflictOverrides Include="@(Dependency->'%(Identity)|%(Version)')" Condition=" '%(Dependency.Version)' != '' " />
-      <_AspNetAppPackageConflictOverrides Include="@(ExternalDependency->'%(Identity)|%(Version)')" Condition=" '%(ExternalDependency.Version)' != '' " />
+      <_AspNetAppPackageConflictOverrides Include="@(AspNetCoreAppReference->'%(Identity)|%(Version)')" Condition=" '%(AspNetCoreAppReference.Version)' != '' " />
+      <_AspNetAppPackageConflictOverrides Include="@(AspNetCoreAppReferenceAndPackage->'%(Identity)|%(Version)')" Condition=" '%(AspNetCoreAppReferenceAndPackage.Version)' != '' " />
+      <_AspNetAppPackageConflictOverrides Include="@(ExternalAspNetCoreAppReference->'%(Identity)|%(Version)')" Condition=" '%(ExternalAspNetCoreAppReference.Version)' != '' " />
     </ItemGroup>
 
     <PropertyGroup>
diff --git a/src/Framework/pkg/Microsoft.AspNetCore.App.pkgproj b/src/Framework/pkg/Microsoft.AspNetCore.App.pkgproj
index c7ed2a83cf0..4325322c0a7 100644
--- a/src/Framework/pkg/Microsoft.AspNetCore.App.pkgproj
+++ b/src/Framework/pkg/Microsoft.AspNetCore.App.pkgproj
@@ -32,8 +32,6 @@ This package requires the ASP.NET Core runtime. This runtime is installed by the
     </ProjectReference>
   </ItemGroup>
 
-  <Import Project="..\Microsoft.AspNetCore.App.props" />
-
   <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
   <Import Project="Metapackage.targets" />
 </Project>
diff --git a/src/Framework/ref/Microsoft.AspNetCore.App.Ref.csproj b/src/Framework/ref/Microsoft.AspNetCore.App.Ref.csproj
index cc20b131659..9acbccd9010 100644
--- a/src/Framework/ref/Microsoft.AspNetCore.App.Ref.csproj
+++ b/src/Framework/ref/Microsoft.AspNetCore.App.Ref.csproj
@@ -7,7 +7,6 @@
   </PropertyGroup>
 
   <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
-  <Import Project="..\Microsoft.AspNetCore.App.props" />
 
   <PropertyGroup>
     <TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
@@ -39,8 +38,8 @@ This package is an internal implementation of the .NET Core SDK and is not meant
   </PropertyGroup>
 
   <ItemGroup>
-    <!-- Note: do not add _TransitiveExternalDependency to this list. This is intentionally not listed as a direct package reference. -->
-    <Reference Include="@(Dependency);@(ExternalDependency)" />
+    <!-- Note: do not add _TransitiveExternalAspNetCoreAppReference to this list. This is intentionally not listed as a direct package reference. -->
+    <Reference Include="@(AspNetCoreAppReference);@(AspNetCoreAppReferenceAndPackage);@(ExternalAspNetCoreAppReference)" />
   </ItemGroup>
 
   <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
diff --git a/src/Framework/src/Microsoft.AspNetCore.App.shfxproj b/src/Framework/src/Microsoft.AspNetCore.App.shfxproj
index 02988ace392..170ced504d2 100644
--- a/src/Framework/src/Microsoft.AspNetCore.App.shfxproj
+++ b/src/Framework/src/Microsoft.AspNetCore.App.shfxproj
@@ -52,8 +52,6 @@ $(MSBuildProjectName) provides a default set of APIs for building an ASP.NET Cor
     <NoPackageAnalysis>true</NoPackageAnalysis>
   </PropertyGroup>
 
-  <Import Project="..\Microsoft.AspNetCore.App.props" />
-
   <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
   <Import Project="SharedFx.targets" />
 
diff --git a/src/Framework/src/SharedFx.targets b/src/Framework/src/SharedFx.targets
index 2f2d722635c..07f9de44b3f 100644
--- a/src/Framework/src/SharedFx.targets
+++ b/src/Framework/src/SharedFx.targets
@@ -139,8 +139,12 @@ This targets file should only be imported by .shfxproj files.
       <AllowExplicitVersion>true</AllowExplicitVersion>
     </PackageReference>
 
-    <!-- Note: do not add _TransitiveExternalDependency to this list. This is intentionally not listed as a direct package reference. -->
-    <PackageReference Include="@(Dependency);@(ExternalDependency)">
+    <!-- Add version metadata. These are expected to match the metapackage version. -->
+    <AspNetCoreAppReferenceAndPackage Update="@(AspNetCoreAppReferenceAndPackage)" Version="$(SharedFxVersion)" />
+    <AspNetCoreAppReference Update="@(AspNetCoreAppReference)" Version="$(SharedFxVersion)" />
+
+    <!-- Note: do not add _TransitiveExternalAspNetCoreAppReference to this list. This is intentionally not listed as a direct package reference. -->
+    <PackageReference Include="@(AspNetCoreAppReference);@(AspNetCoreAppReferenceAndPackage);@(ExternalAspNetCoreAppReference)">
       <IncludeAssets>Runtime;Native</IncludeAssets>
       <Publish>true</Publish>
     </PackageReference>
diff --git a/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj b/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj
index c2958edfac0..94ae36e6b5e 100644
--- a/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj
+++ b/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj
@@ -5,8 +5,6 @@
     <RootNamespace>Microsoft.AspNetCore</RootNamespace>
   </PropertyGroup>
 
-  <Import Project="..\Microsoft.AspNetCore.App.props" />
-
   <ItemGroup>
     <AssemblyAttribute Include="Microsoft.AspNetCore.TestData">
       <_Parameter1>PackageVersion</_Parameter1>
@@ -41,7 +39,7 @@
     <ItemGroup>
       <AssemblyAttribute Include="Microsoft.AspNetCore.TestData">
         <_Parameter1>SharedFxDependencies</_Parameter1>
-        <_Parameter2>@(Dependency);@(ExternalDependency);@(_TransitiveExternalDependency)</_Parameter2>
+        <_Parameter2>@(AspNetCoreAppReference);@(AspNetCoreAppReferenceAndPackage);@(ExternalAspNetCoreAppReference);@(_TransitiveExternalAspNetCoreAppReference)</_Parameter2>
       </AssemblyAttribute>
       <AssemblyAttribute Include="Microsoft.AspNetCore.TestData">
         <_Parameter1>MetadataOutputPath</_Parameter1>
diff --git a/src/Hosting/Abstractions/src/Microsoft.AspNetCore.Hosting.Abstractions.csproj b/src/Hosting/Abstractions/src/Microsoft.AspNetCore.Hosting.Abstractions.csproj
index 83a6b4aa6fa..f0a3c27ae68 100644
--- a/src/Hosting/Abstractions/src/Microsoft.AspNetCore.Hosting.Abstractions.csproj
+++ b/src/Hosting/Abstractions/src/Microsoft.AspNetCore.Hosting.Abstractions.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core hosting and startup abstractions for web applications.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;hosting</PackageTags>
diff --git a/src/Hosting/Hosting/src/Microsoft.AspNetCore.Hosting.csproj b/src/Hosting/Hosting/src/Microsoft.AspNetCore.Hosting.csproj
index be628050872..a14fd61d072 100644
--- a/src/Hosting/Hosting/src/Microsoft.AspNetCore.Hosting.csproj
+++ b/src/Hosting/Hosting/src/Microsoft.AspNetCore.Hosting.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core hosting infrastructure and startup logic for web applications.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;hosting</PackageTags>
@@ -25,9 +26,7 @@
     <Reference Include="Microsoft.Extensions.Hosting.Abstractions" />
     <Reference Include="Microsoft.Extensions.Logging" />
     <Reference Include="Microsoft.Extensions.Options" />
-    <Reference Include="Microsoft.Extensions.TypeNameHelper.Sources" PrivateAssets="All" />
-    <Reference Include="System.Diagnostics.DiagnosticSource" />
-    <Reference Include="System.Reflection.Metadata" />
+    <Reference Include="Microsoft.Extensions.TypeNameHelper.Sources" SharedSources="true" />
   </ItemGroup>
 
 </Project>
diff --git a/src/Hosting/Server.Abstractions/src/Microsoft.AspNetCore.Hosting.Server.Abstractions.csproj b/src/Hosting/Server.Abstractions/src/Microsoft.AspNetCore.Hosting.Server.Abstractions.csproj
index 15c34d469b2..48b93a678e8 100644
--- a/src/Hosting/Server.Abstractions/src/Microsoft.AspNetCore.Hosting.Server.Abstractions.csproj
+++ b/src/Hosting/Server.Abstractions/src/Microsoft.AspNetCore.Hosting.Server.Abstractions.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core hosting server abstractions for web applications.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;hosting</PackageTags>
diff --git a/src/Html/Abstractions/src/Microsoft.AspNetCore.Html.Abstractions.csproj b/src/Html/Abstractions/src/Microsoft.AspNetCore.Html.Abstractions.csproj
index b7dcbfce470..7a60043cf84 100644
--- a/src/Html/Abstractions/src/Microsoft.AspNetCore.Html.Abstractions.csproj
+++ b/src/Html/Abstractions/src/Microsoft.AspNetCore.Html.Abstractions.csproj
@@ -7,6 +7,7 @@ Commonly used types:
 Microsoft.AspNetCore.Html.HtmlString
 Microsoft.AspNetCore.Html.IHtmlContent</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore</PackageTags>
   </PropertyGroup>
diff --git a/src/Http/Authentication.Abstractions/src/Microsoft.AspNetCore.Authentication.Abstractions.csproj b/src/Http/Authentication.Abstractions/src/Microsoft.AspNetCore.Authentication.Abstractions.csproj
index 15bc1ffaf32..b2ff9f8ce15 100644
--- a/src/Http/Authentication.Abstractions/src/Microsoft.AspNetCore.Authentication.Abstractions.csproj
+++ b/src/Http/Authentication.Abstractions/src/Microsoft.AspNetCore.Authentication.Abstractions.csproj
@@ -2,6 +2,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core common types used by the various authentication components.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;authentication;security</PackageTags>
@@ -14,4 +15,4 @@
     <Reference Include="Microsoft.Extensions.Options" />
   </ItemGroup>
 
-</Project>
\ No newline at end of file
+</Project>
diff --git a/src/Http/Authentication.Core/src/Microsoft.AspNetCore.Authentication.Core.csproj b/src/Http/Authentication.Core/src/Microsoft.AspNetCore.Authentication.Core.csproj
index b0a33541258..e562b91b1b8 100644
--- a/src/Http/Authentication.Core/src/Microsoft.AspNetCore.Authentication.Core.csproj
+++ b/src/Http/Authentication.Core/src/Microsoft.AspNetCore.Authentication.Core.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core common types used by the various authentication middleware components.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;authentication;security</PackageTags>
diff --git a/src/Http/Headers/src/Microsoft.Net.Http.Headers.csproj b/src/Http/Headers/src/Microsoft.Net.Http.Headers.csproj
index 88fdff16945..720ac8cecbd 100644
--- a/src/Http/Headers/src/Microsoft.Net.Http.Headers.csproj
+++ b/src/Http/Headers/src/Microsoft.Net.Http.Headers.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>HTTP header parser implementations.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
@@ -11,7 +12,6 @@
 
   <ItemGroup>
     <Reference Include="Microsoft.Extensions.Primitives" />
-    <Reference Include="System.Buffers" />
   </ItemGroup>
 
 </Project>
diff --git a/src/Http/Http.Abstractions/src/Microsoft.AspNetCore.Http.Abstractions.csproj b/src/Http/Http.Abstractions/src/Microsoft.AspNetCore.Http.Abstractions.csproj
index 2f17e520197..8101d02e744 100644
--- a/src/Http/Http.Abstractions/src/Microsoft.AspNetCore.Http.Abstractions.csproj
+++ b/src/Http/Http.Abstractions/src/Microsoft.AspNetCore.Http.Abstractions.csproj
@@ -9,6 +9,7 @@ Microsoft.AspNetCore.Http.HttpContext
 Microsoft.AspNetCore.Http.HttpRequest
 Microsoft.AspNetCore.Http.HttpResponse</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore</PackageTags>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
@@ -20,7 +21,7 @@ Microsoft.AspNetCore.Http.HttpResponse</Description>
 
   <ItemGroup>
     <Reference Include="Microsoft.AspNetCore.Http.Features" />
-    <Reference Include="Microsoft.Extensions.ActivatorUtilities.Sources" PrivateAssets="All" />
+    <Reference Include="Microsoft.Extensions.ActivatorUtilities.Sources" SharedSources="true" />
     <Reference Include="System.Text.Encodings.Web" />
   </ItemGroup>
 
diff --git a/src/Http/Http.Extensions/src/Microsoft.AspNetCore.Http.Extensions.csproj b/src/Http/Http.Extensions/src/Microsoft.AspNetCore.Http.Extensions.csproj
index f59ccfca18b..751be4bedd8 100644
--- a/src/Http/Http.Extensions/src/Microsoft.AspNetCore.Http.Extensions.csproj
+++ b/src/Http/Http.Extensions/src/Microsoft.AspNetCore.Http.Extensions.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core common extension methods for HTTP abstractions, HTTP headers, HTTP request/response, and session state.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore</PackageTags>
@@ -12,7 +13,6 @@
     <Reference Include="Microsoft.AspNetCore.Http.Abstractions" />
     <Reference Include="Microsoft.Net.Http.Headers" />
     <Reference Include="Microsoft.Extensions.FileProviders.Abstractions" />
-    <Reference Include="System.Buffers" />
   </ItemGroup>
 
 </Project>
diff --git a/src/Http/Http.Features/src/Microsoft.AspNetCore.Http.Features.csproj b/src/Http/Http.Features/src/Microsoft.AspNetCore.Http.Features.csproj
index e8400d052c3..4e052998c09 100644
--- a/src/Http/Http.Features/src/Microsoft.AspNetCore.Http.Features.csproj
+++ b/src/Http/Http.Features/src/Microsoft.AspNetCore.Http.Features.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core HTTP feature interface definitions.</Description>
     <TargetFramework>netstandard2.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore</PackageTags>
diff --git a/src/Http/Http/src/Microsoft.AspNetCore.Http.csproj b/src/Http/Http/src/Microsoft.AspNetCore.Http.csproj
index d091f7d690e..ffb49ec6496 100644
--- a/src/Http/Http/src/Microsoft.AspNetCore.Http.csproj
+++ b/src/Http/Http/src/Microsoft.AspNetCore.Http.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core default HTTP feature implementations.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
diff --git a/src/Http/Routing.Abstractions/src/Microsoft.AspNetCore.Routing.Abstractions.csproj b/src/Http/Routing.Abstractions/src/Microsoft.AspNetCore.Routing.Abstractions.csproj
index 4b2518a515c..a0249fd7fdb 100644
--- a/src/Http/Routing.Abstractions/src/Microsoft.AspNetCore.Routing.Abstractions.csproj
+++ b/src/Http/Routing.Abstractions/src/Microsoft.AspNetCore.Routing.Abstractions.csproj
@@ -6,6 +6,7 @@ Commonly used types:
 Microsoft.AspNetCore.Routing.IRouter
 Microsoft.AspNetCore.Routing.RouteData</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;routing</PackageTags>
diff --git a/src/Http/Routing/src/Microsoft.AspNetCore.Routing.csproj b/src/Http/Routing/src/Microsoft.AspNetCore.Routing.csproj
index 6bcff41bb5e..bc189d19a2c 100644
--- a/src/Http/Routing/src/Microsoft.AspNetCore.Routing.csproj
+++ b/src/Http/Routing/src/Microsoft.AspNetCore.Routing.csproj
@@ -6,6 +6,7 @@ Commonly used types:
 Microsoft.AspNetCore.Routing.Route
 Microsoft.AspNetCore.Routing.RouteCollection</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;routing</PackageTags>
@@ -27,7 +28,7 @@ Microsoft.AspNetCore.Routing.RouteCollection</Description>
   <ItemGroup>
     <Reference Include="Microsoft.AspNetCore.Http.Extensions" />
     <Reference Include="Microsoft.AspNetCore.Routing.Abstractions" />
-    <Reference Include="Microsoft.Extensions.HashCodeCombiner.Sources" PrivateAssets="All" />
+    <Reference Include="Microsoft.Extensions.HashCodeCombiner.Sources" SharedSources="true" />
     <Reference Include="Microsoft.Extensions.Logging.Abstractions" />
     <Reference Include="Microsoft.Extensions.ObjectPool" />
     <Reference Include="Microsoft.Extensions.Options" />
diff --git a/src/Http/WebUtilities/src/Microsoft.AspNetCore.WebUtilities.csproj b/src/Http/WebUtilities/src/Microsoft.AspNetCore.WebUtilities.csproj
index befbf9abc47..5e123dfff80 100644
--- a/src/Http/WebUtilities/src/Microsoft.AspNetCore.WebUtilities.csproj
+++ b/src/Http/WebUtilities/src/Microsoft.AspNetCore.WebUtilities.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core utilities, such as for working with forms, multipart messages, and query strings.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <DefineConstants>$(DefineConstants);WebEncoders_In_WebUtilities</DefineConstants>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
diff --git a/src/Identity/Core/src/Microsoft.AspNetCore.Identity.csproj b/src/Identity/Core/src/Microsoft.AspNetCore.Identity.csproj
index 7641e348971..6006e4fa1ed 100644
--- a/src/Identity/Core/src/Microsoft.AspNetCore.Identity.csproj
+++ b/src/Identity/Core/src/Microsoft.AspNetCore.Identity.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core Identity is the membership system for building ASP.NET Core web applications, including membership, login, and user data. ASP.NET Core Identity allows you to add login features to your application and makes it easy to customize data about the logged in user.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;identity;membership</PackageTags>
   </PropertyGroup>
diff --git a/src/Identity/Extensions.Core/src/Microsoft.Extensions.Identity.Core.csproj b/src/Identity/Extensions.Core/src/Microsoft.Extensions.Identity.Core.csproj
index 8a471194b95..526f2bd7e7f 100644
--- a/src/Identity/Extensions.Core/src/Microsoft.Extensions.Identity.Core.csproj
+++ b/src/Identity/Extensions.Core/src/Microsoft.Extensions.Identity.Core.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core Identity is the membership system for building ASP.NET Core web applications, including membership, login, and user data. ASP.NET Core Identity allows you to add login features to your application and makes it easy to customize data about the logged in user.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;identity;membership</PackageTags>
   </PropertyGroup>
@@ -11,7 +12,6 @@
     <Reference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" />
     <Reference Include="Microsoft.Extensions.Logging" />
     <Reference Include="Microsoft.Extensions.Options" />
-    <Reference Include="System.ComponentModel.Annotations" />
   </ItemGroup>
 
 </Project>
diff --git a/src/Identity/Extensions.Stores/src/Microsoft.Extensions.Identity.Stores.csproj b/src/Identity/Extensions.Stores/src/Microsoft.Extensions.Identity.Stores.csproj
index a5e7c7c5fa7..b51bcb7b27d 100644
--- a/src/Identity/Extensions.Stores/src/Microsoft.Extensions.Identity.Stores.csproj
+++ b/src/Identity/Extensions.Stores/src/Microsoft.Extensions.Identity.Stores.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core Identity is the membership system for building ASP.NET Core web applications, including membership, login, and user data. ASP.NET Core Identity allows you to add login features to your application and makes it easy to customize data about the logged in user.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;identity;membership</PackageTags>
   </PropertyGroup>
@@ -10,7 +11,6 @@
   <ItemGroup>
     <Reference Include="Microsoft.Extensions.Logging" />
     <Reference Include="Microsoft.Extensions.Identity.Core" />
-    <Reference Include="System.ComponentModel.Annotations" />
   </ItemGroup>
 
 </Project>
diff --git a/src/Middleware/CORS/src/Microsoft.AspNetCore.Cors.csproj b/src/Middleware/CORS/src/Microsoft.AspNetCore.Cors.csproj
index 5fb397467c2..4a9008883bf 100644
--- a/src/Middleware/CORS/src/Microsoft.AspNetCore.Cors.csproj
+++ b/src/Middleware/CORS/src/Microsoft.AspNetCore.Cors.csproj
@@ -6,6 +6,7 @@ Commonly used types:
 Microsoft.AspNetCore.Cors.DisableCorsAttribute
 Microsoft.AspNetCore.Cors.EnableCorsAttribute</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;cors</PackageTags>
diff --git a/src/Middleware/Diagnostics.Abstractions/src/Microsoft.AspNetCore.Diagnostics.Abstractions.csproj b/src/Middleware/Diagnostics.Abstractions/src/Microsoft.AspNetCore.Diagnostics.Abstractions.csproj
index 361dfe0452c..94a61d84d06 100644
--- a/src/Middleware/Diagnostics.Abstractions/src/Microsoft.AspNetCore.Diagnostics.Abstractions.csproj
+++ b/src/Middleware/Diagnostics.Abstractions/src/Microsoft.AspNetCore.Diagnostics.Abstractions.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core diagnostics middleware abstractions and feature interface definitions.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;diagnostics</PackageTags>
diff --git a/src/Middleware/Diagnostics/src/Microsoft.AspNetCore.Diagnostics.csproj b/src/Middleware/Diagnostics/src/Microsoft.AspNetCore.Diagnostics.csproj
index 775fe57a6af..61dc0e986a2 100644
--- a/src/Middleware/Diagnostics/src/Microsoft.AspNetCore.Diagnostics.csproj
+++ b/src/Middleware/Diagnostics/src/Microsoft.AspNetCore.Diagnostics.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core middleware for exception handling, exception display pages, and diagnostics information. Includes developer exception page middleware, exception handler middleware, runtime info middleware, status code page middleware, and welcome page middleware</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;diagnostics</PackageTags>
@@ -23,9 +24,7 @@
     <Reference Include="Microsoft.Extensions.FileProviders.Physical" />
     <Reference Include="Microsoft.Extensions.Logging.Abstractions" />
     <Reference Include="Microsoft.Extensions.Options" />
-    <Reference Include="Microsoft.Extensions.TypeNameHelper.Sources" PrivateAssets="All" />
-    <Reference Include="System.Diagnostics.DiagnosticSource" />
-    <Reference Include="System.Reflection.Metadata" />
+    <Reference Include="Microsoft.Extensions.TypeNameHelper.Sources" SharedSources="true" />
   </ItemGroup>
 
 </Project>
diff --git a/src/Middleware/HealthChecks/src/Microsoft.AspNetCore.Diagnostics.HealthChecks.csproj b/src/Middleware/HealthChecks/src/Microsoft.AspNetCore.Diagnostics.HealthChecks.csproj
index 8ac2df90d71..34929e104e0 100644
--- a/src/Middleware/HealthChecks/src/Microsoft.AspNetCore.Diagnostics.HealthChecks.csproj
+++ b/src/Middleware/HealthChecks/src/Microsoft.AspNetCore.Diagnostics.HealthChecks.csproj
@@ -3,11 +3,12 @@
   <PropertyGroup>
     <Description>ASP.NET Core middleware for returning the results of Health Checks in the application</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>diagnostics;healthchecks</PackageTags>
     <Description>ASP.NET Core middleware for returning the results of Health Checks in the application
-      
+
     </Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
diff --git a/src/Middleware/HostFiltering/src/Microsoft.AspNetCore.HostFiltering.csproj b/src/Middleware/HostFiltering/src/Microsoft.AspNetCore.HostFiltering.csproj
index b18fc411cb9..3680fd570dd 100644
--- a/src/Middleware/HostFiltering/src/Microsoft.AspNetCore.HostFiltering.csproj
+++ b/src/Middleware/HostFiltering/src/Microsoft.AspNetCore.HostFiltering.csproj
@@ -5,6 +5,7 @@
       ASP.NET Core middleware for filtering out requests with unknown HTTP host headers.
     </Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore</PackageTags>
   </PropertyGroup>
@@ -13,6 +14,6 @@
     <Reference Include="Microsoft.AspNetCore.Http" />
     <Reference Include="Microsoft.AspNetCore.Http.Extensions" />
     <Reference Include="Microsoft.Extensions.Options" />
-    <Reference Include="Microsoft.AspNetCore.Hosting.Abstractions" /> 
+    <Reference Include="Microsoft.AspNetCore.Hosting.Abstractions" />
   </ItemGroup>
 </Project>
diff --git a/src/Middleware/HttpOverrides/src/Microsoft.AspNetCore.HttpOverrides.csproj b/src/Middleware/HttpOverrides/src/Microsoft.AspNetCore.HttpOverrides.csproj
index 23b78b1c16e..f398eb67d20 100644
--- a/src/Middleware/HttpOverrides/src/Microsoft.AspNetCore.HttpOverrides.csproj
+++ b/src/Middleware/HttpOverrides/src/Microsoft.AspNetCore.HttpOverrides.csproj
@@ -5,6 +5,7 @@
 * X-Forwarded-* headers to forward headers from a proxy.
 * HTTP method override header.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;proxy;headers;xforwarded</PackageTags>
diff --git a/src/Middleware/HttpsPolicy/src/Microsoft.AspNetCore.HttpsPolicy.csproj b/src/Middleware/HttpsPolicy/src/Microsoft.AspNetCore.HttpsPolicy.csproj
index 35061ff2181..d8858bd7b48 100644
--- a/src/Middleware/HttpsPolicy/src/Microsoft.AspNetCore.HttpsPolicy.csproj
+++ b/src/Middleware/HttpsPolicy/src/Microsoft.AspNetCore.HttpsPolicy.csproj
@@ -5,6 +5,7 @@
       ASP.NET Core basic middleware for supporting HTTPS Redirection and HTTP Strict-Transport-Security.
     </Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;https;hsts</PackageTags>
@@ -15,6 +16,6 @@
     <Reference Include="Microsoft.AspNetCore.Http.Extensions" />
     <Reference Include="Microsoft.Extensions.Configuration.Binder" />
     <Reference Include="Microsoft.Extensions.Options" />
-    <Reference Include="Microsoft.AspNetCore.Hosting.Abstractions" /> 
+    <Reference Include="Microsoft.AspNetCore.Hosting.Abstractions" />
   </ItemGroup>
 </Project>
diff --git a/src/Middleware/Localization.Routing/src/Microsoft.AspNetCore.Localization.Routing.csproj b/src/Middleware/Localization.Routing/src/Microsoft.AspNetCore.Localization.Routing.csproj
index 18d5d0788e0..f66c77765cb 100644
--- a/src/Middleware/Localization.Routing/src/Microsoft.AspNetCore.Localization.Routing.csproj
+++ b/src/Middleware/Localization.Routing/src/Microsoft.AspNetCore.Localization.Routing.csproj
@@ -4,6 +4,7 @@
     <Product>Microsoft ASP.NET Core</Product>
     <Description>Provides a request culture provider which gets culture and ui-culture from request's route data.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;localization</PackageTags>
diff --git a/src/Middleware/Localization/src/Microsoft.AspNetCore.Localization.csproj b/src/Middleware/Localization/src/Microsoft.AspNetCore.Localization.csproj
index 00f43deee7a..48dae9489a8 100644
--- a/src/Middleware/Localization/src/Microsoft.AspNetCore.Localization.csproj
+++ b/src/Middleware/Localization/src/Microsoft.AspNetCore.Localization.csproj
@@ -4,6 +4,7 @@
     <Product>Microsoft ASP.NET Core</Product>
     <Description>ASP.NET Core middleware for automatically applying culture information to HTTP requests. Culture information can be specified in the HTTP header, query string, cookie, or custom source.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;localization</PackageTags>
diff --git a/src/Middleware/MiddlewareAnalysis/src/Microsoft.AspNetCore.MiddlewareAnalysis.csproj b/src/Middleware/MiddlewareAnalysis/src/Microsoft.AspNetCore.MiddlewareAnalysis.csproj
index 47fd76d040f..038cfb34443 100644
--- a/src/Middleware/MiddlewareAnalysis/src/Microsoft.AspNetCore.MiddlewareAnalysis.csproj
+++ b/src/Middleware/MiddlewareAnalysis/src/Microsoft.AspNetCore.MiddlewareAnalysis.csproj
@@ -12,7 +12,6 @@
   <ItemGroup>
     <Reference Include="Microsoft.AspNetCore.Hosting.Abstractions" />
     <Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions" />
-    <Reference Include="System.Diagnostics.DiagnosticSource" />
   </ItemGroup>
 
 </Project>
diff --git a/src/Middleware/ResponseCaching.Abstractions/src/Microsoft.AspNetCore.ResponseCaching.Abstractions.csproj b/src/Middleware/ResponseCaching.Abstractions/src/Microsoft.AspNetCore.ResponseCaching.Abstractions.csproj
index fc79cf53d4d..0dc8be2b8d8 100644
--- a/src/Middleware/ResponseCaching.Abstractions/src/Microsoft.AspNetCore.ResponseCaching.Abstractions.csproj
+++ b/src/Middleware/ResponseCaching.Abstractions/src/Microsoft.AspNetCore.ResponseCaching.Abstractions.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core response caching middleware abstractions and feature interface definitions.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;cache;caching</PackageTags>
   </PropertyGroup>
diff --git a/src/Middleware/ResponseCaching/src/Microsoft.AspNetCore.ResponseCaching.csproj b/src/Middleware/ResponseCaching/src/Microsoft.AspNetCore.ResponseCaching.csproj
index 727a9397bcc..9611dfbdaf3 100644
--- a/src/Middleware/ResponseCaching/src/Microsoft.AspNetCore.ResponseCaching.csproj
+++ b/src/Middleware/ResponseCaching/src/Microsoft.AspNetCore.ResponseCaching.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core middleware for caching HTTP responses on the server.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
diff --git a/src/Middleware/ResponseCompression/src/Microsoft.AspNetCore.ResponseCompression.csproj b/src/Middleware/ResponseCompression/src/Microsoft.AspNetCore.ResponseCompression.csproj
index f35baf967dc..6b4ee012044 100644
--- a/src/Middleware/ResponseCompression/src/Microsoft.AspNetCore.ResponseCompression.csproj
+++ b/src/Middleware/ResponseCompression/src/Microsoft.AspNetCore.ResponseCompression.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core middleware for HTTP Response compression.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore</PackageTags>
   </PropertyGroup>
diff --git a/src/Middleware/Rewrite/src/Microsoft.AspNetCore.Rewrite.csproj b/src/Middleware/Rewrite/src/Microsoft.AspNetCore.Rewrite.csproj
index 0ac6ec15b16..d203b74371d 100644
--- a/src/Middleware/Rewrite/src/Microsoft.AspNetCore.Rewrite.csproj
+++ b/src/Middleware/Rewrite/src/Microsoft.AspNetCore.Rewrite.csproj
@@ -6,6 +6,7 @@
 * Support for running IIS URL Rewrite module rules
 * Support for running Apache mod_rewrite rules.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;urlrewrite;mod_rewrite</PackageTags>
diff --git a/src/Middleware/Session/src/Microsoft.AspNetCore.Session.csproj b/src/Middleware/Session/src/Microsoft.AspNetCore.Session.csproj
index 65e72cae6ec..3d917be5a07 100644
--- a/src/Middleware/Session/src/Microsoft.AspNetCore.Session.csproj
+++ b/src/Middleware/Session/src/Microsoft.AspNetCore.Session.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core session state middleware.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
diff --git a/src/Middleware/StaticFiles/src/Microsoft.AspNetCore.StaticFiles.csproj b/src/Middleware/StaticFiles/src/Microsoft.AspNetCore.StaticFiles.csproj
index 9e74b57dead..1b8d3d29a02 100644
--- a/src/Middleware/StaticFiles/src/Microsoft.AspNetCore.StaticFiles.csproj
+++ b/src/Middleware/StaticFiles/src/Microsoft.AspNetCore.StaticFiles.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core static files middleware. Includes middleware for serving static files, directory browsing, and default files.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;staticfiles</PackageTags>
diff --git a/src/Middleware/WebSockets/src/Microsoft.AspNetCore.WebSockets.csproj b/src/Middleware/WebSockets/src/Microsoft.AspNetCore.WebSockets.csproj
index f0e3e8a74be..ff746ce830f 100644
--- a/src/Middleware/WebSockets/src/Microsoft.AspNetCore.WebSockets.csproj
+++ b/src/Middleware/WebSockets/src/Microsoft.AspNetCore.WebSockets.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core web socket middleware for use on top of opaque servers.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
diff --git a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Abstractions/Microsoft.AspNetCore.Mvc.Abstractions.csproj b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Abstractions/Microsoft.AspNetCore.Mvc.Abstractions.csproj
index 62e497bb4d6..a8ff4cf3b32 100644
--- a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Abstractions/Microsoft.AspNetCore.Mvc.Abstractions.csproj
+++ b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Abstractions/Microsoft.AspNetCore.Mvc.Abstractions.csproj
@@ -5,6 +5,7 @@
 Commonly used types:
 Microsoft.AspNetCore.Mvc.IActionResult</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;aspnetcoremvc</PackageTags>
@@ -20,7 +21,7 @@ Microsoft.AspNetCore.Mvc.IActionResult</Description>
   </ItemGroup>
 
   <ItemGroup Label="Sources packages">
-    <Reference Include="Microsoft.Extensions.HashCodeCombiner.Sources" PrivateAssets="All" />
+    <Reference Include="Microsoft.Extensions.HashCodeCombiner.Sources" SharedSources="true" />
   </ItemGroup>
 
 </Project>
diff --git a/src/Mvc/src/Microsoft.AspNetCore.Mvc.ApiExplorer/Microsoft.AspNetCore.Mvc.ApiExplorer.csproj b/src/Mvc/src/Microsoft.AspNetCore.Mvc.ApiExplorer/Microsoft.AspNetCore.Mvc.ApiExplorer.csproj
index 1e16a72cf35..601fe601bae 100644
--- a/src/Mvc/src/Microsoft.AspNetCore.Mvc.ApiExplorer/Microsoft.AspNetCore.Mvc.ApiExplorer.csproj
+++ b/src/Mvc/src/Microsoft.AspNetCore.Mvc.ApiExplorer/Microsoft.AspNetCore.Mvc.ApiExplorer.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core MVC API explorer functionality for discovering metadata such as the list of controllers and actions, and their URLs and allowed HTTP methods.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;aspnetcoremvc</PackageTags>
diff --git a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Core/Microsoft.AspNetCore.Mvc.Core.csproj b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Core/Microsoft.AspNetCore.Mvc.Core.csproj
index ed0ec60fec3..abe65430e2d 100644
--- a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Core/Microsoft.AspNetCore.Mvc.Core.csproj
+++ b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Core/Microsoft.AspNetCore.Mvc.Core.csproj
@@ -11,6 +11,7 @@ Microsoft.AspNetCore.Mvc.FromFormAttribute
 Microsoft.AspNetCore.Mvc.RequireHttpsAttribute
 Microsoft.AspNetCore.Mvc.RouteAttribute</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;aspnetcoremvc</PackageTags>
@@ -40,14 +41,12 @@ Microsoft.AspNetCore.Mvc.RouteAttribute</Description>
     <Reference Include="Microsoft.Extensions.DependencyModel" />
     <Reference Include="Microsoft.Extensions.FileProviders.Abstractions" />
     <Reference Include="Microsoft.Extensions.Logging.Abstractions" />
-    <Reference Include="System.Diagnostics.DiagnosticSource" />
-    <Reference Include="System.Threading.Tasks.Extensions" />
   </ItemGroup>
 
   <ItemGroup Label="Sources packages">
-    <Reference Include="Microsoft.Extensions.ParameterDefaultValue.Sources" PrivateAssets="All" />
-    <Reference Include="Microsoft.Extensions.TypeNameHelper.Sources" PrivateAssets="All" />
-    <Reference Include="Microsoft.Extensions.ValueStopwatch.Sources" PrivateAssets="All" />
+    <Reference Include="Microsoft.Extensions.ParameterDefaultValue.Sources" SharedSources="true" />
+    <Reference Include="Microsoft.Extensions.TypeNameHelper.Sources" SharedSources="true" />
+    <Reference Include="Microsoft.Extensions.ValueStopwatch.Sources" SharedSources="true" />
   </ItemGroup>
 
 </Project>
diff --git a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Cors/Microsoft.AspNetCore.Mvc.Cors.csproj b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Cors/Microsoft.AspNetCore.Mvc.Cors.csproj
index 3f9681beb58..b193c3e1665 100644
--- a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Cors/Microsoft.AspNetCore.Mvc.Cors.csproj
+++ b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Cors/Microsoft.AspNetCore.Mvc.Cors.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core MVC cross-origin resource sharing (CORS) features.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;aspnetcoremvc;cors</PackageTags>
diff --git a/src/Mvc/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Microsoft.AspNetCore.Mvc.DataAnnotations.csproj b/src/Mvc/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Microsoft.AspNetCore.Mvc.DataAnnotations.csproj
index a716acc0a42..b0c0c4d041c 100644
--- a/src/Mvc/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Microsoft.AspNetCore.Mvc.DataAnnotations.csproj
+++ b/src/Mvc/src/Microsoft.AspNetCore.Mvc.DataAnnotations/Microsoft.AspNetCore.Mvc.DataAnnotations.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core MVC metadata and validation system using System.ComponentModel.DataAnnotations.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;aspnetcoremvc</PackageTags>
@@ -10,8 +11,6 @@
 
   <ItemGroup>
     <Reference Include="Microsoft.AspNetCore.Mvc.Core" />
-
     <Reference Include="Microsoft.Extensions.Localization" />
-    <Reference Include="System.ComponentModel.Annotations" />
   </ItemGroup>
 </Project>
diff --git a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Formatters.Json/Microsoft.AspNetCore.Mvc.Formatters.Json.csproj b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Formatters.Json/Microsoft.AspNetCore.Mvc.Formatters.Json.csproj
index 2bc49661a17..a8ad907b984 100644
--- a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Formatters.Json/Microsoft.AspNetCore.Mvc.Formatters.Json.csproj
+++ b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Formatters.Json/Microsoft.AspNetCore.Mvc.Formatters.Json.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core MVC formatters for JSON input and output.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;aspnetcoremvc;json</PackageTags>
   </PropertyGroup>
diff --git a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Formatters.Xml/Microsoft.AspNetCore.Mvc.Formatters.Xml.csproj b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Formatters.Xml/Microsoft.AspNetCore.Mvc.Formatters.Xml.csproj
index e73b3b5f014..4ac6c2733c1 100644
--- a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Formatters.Xml/Microsoft.AspNetCore.Mvc.Formatters.Xml.csproj
+++ b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Formatters.Xml/Microsoft.AspNetCore.Mvc.Formatters.Xml.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core MVC formatters for XML input and output using DataContractSerializer and XmlSerializer.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;aspnetcoremvc;xml</PackageTags>
diff --git a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Localization/Microsoft.AspNetCore.Mvc.Localization.csproj b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Localization/Microsoft.AspNetCore.Mvc.Localization.csproj
index 0a16e8ddd3c..17d8c33678a 100644
--- a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Localization/Microsoft.AspNetCore.Mvc.Localization.csproj
+++ b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Localization/Microsoft.AspNetCore.Mvc.Localization.csproj
@@ -6,6 +6,7 @@ Commonly used types:
 Microsoft.AspNetCore.Mvc.Localization.IHtmlLocalizer&lt;TResource&gt;
 Microsoft.AspNetCore.Mvc.Localization.IViewLocalizer</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;aspnetcoremvc;localization</PackageTags>
diff --git a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Razor/Microsoft.AspNetCore.Mvc.Razor.csproj b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Razor/Microsoft.AspNetCore.Mvc.Razor.csproj
index 1221665e7e3..a6561e544a1 100644
--- a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Razor/Microsoft.AspNetCore.Mvc.Razor.csproj
+++ b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Razor/Microsoft.AspNetCore.Mvc.Razor.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core MVC Razor view engine for CSHTML files.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;aspnetcoremvc;cshtml;razor</PackageTags>
diff --git a/src/Mvc/src/Microsoft.AspNetCore.Mvc.RazorPages/Microsoft.AspNetCore.Mvc.RazorPages.csproj b/src/Mvc/src/Microsoft.AspNetCore.Mvc.RazorPages/Microsoft.AspNetCore.Mvc.RazorPages.csproj
index 03cede054bb..3e2db552aad 100644
--- a/src/Mvc/src/Microsoft.AspNetCore.Mvc.RazorPages/Microsoft.AspNetCore.Mvc.RazorPages.csproj
+++ b/src/Mvc/src/Microsoft.AspNetCore.Mvc.RazorPages/Microsoft.AspNetCore.Mvc.RazorPages.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core MVC Razor Pages.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;aspnetcoremvc;cshtml;razor</PackageTags>
diff --git a/src/Mvc/src/Microsoft.AspNetCore.Mvc.TagHelpers/Microsoft.AspNetCore.Mvc.TagHelpers.csproj b/src/Mvc/src/Microsoft.AspNetCore.Mvc.TagHelpers/Microsoft.AspNetCore.Mvc.TagHelpers.csproj
index 5fef110490b..1ab0b5c30a5 100644
--- a/src/Mvc/src/Microsoft.AspNetCore.Mvc.TagHelpers/Microsoft.AspNetCore.Mvc.TagHelpers.csproj
+++ b/src/Mvc/src/Microsoft.AspNetCore.Mvc.TagHelpers/Microsoft.AspNetCore.Mvc.TagHelpers.csproj
@@ -6,6 +6,7 @@
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;aspnetcoremvc;taghelper;taghelpers</PackageTags>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
   </PropertyGroup>
 
   <ItemGroup>
diff --git a/src/Mvc/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Microsoft.AspNetCore.Mvc.ViewFeatures.csproj b/src/Mvc/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Microsoft.AspNetCore.Mvc.ViewFeatures.csproj
index 5dbf2094c3f..316a0d41716 100644
--- a/src/Mvc/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Microsoft.AspNetCore.Mvc.ViewFeatures.csproj
+++ b/src/Mvc/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Microsoft.AspNetCore.Mvc.ViewFeatures.csproj
@@ -11,6 +11,7 @@ Microsoft.AspNetCore.Mvc.ViewComponent</Description>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;aspnetcoremvc</PackageTags>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
   </PropertyGroup>
 
   <ItemGroup>
diff --git a/src/Mvc/src/Microsoft.AspNetCore.Mvc/Microsoft.AspNetCore.Mvc.csproj b/src/Mvc/src/Microsoft.AspNetCore.Mvc/Microsoft.AspNetCore.Mvc.csproj
index 74de1de6ea6..9ca43f3c5a1 100644
--- a/src/Mvc/src/Microsoft.AspNetCore.Mvc/Microsoft.AspNetCore.Mvc.csproj
+++ b/src/Mvc/src/Microsoft.AspNetCore.Mvc/Microsoft.AspNetCore.Mvc.csproj
@@ -6,6 +6,7 @@
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;aspnetcoremvc</PackageTags>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
   </PropertyGroup>
 
   <ItemGroup>
diff --git a/src/Razor/Razor.Runtime/src/Microsoft.AspNetCore.Razor.Runtime.csproj b/src/Razor/Razor.Runtime/src/Microsoft.AspNetCore.Razor.Runtime.csproj
index ff40bb76ee8..7e0dc091879 100644
--- a/src/Razor/Razor.Runtime/src/Microsoft.AspNetCore.Razor.Runtime.csproj
+++ b/src/Razor/Razor.Runtime/src/Microsoft.AspNetCore.Razor.Runtime.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>Runtime infrastructure for rendering Razor pages and tag helpers.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>$(PackageTags);taghelper;taghelpers</PackageTags>
   </PropertyGroup>
diff --git a/src/Razor/Razor/src/Microsoft.AspNetCore.Razor.csproj b/src/Razor/Razor/src/Microsoft.AspNetCore.Razor.csproj
index a8cc379a58e..b1cff0664fd 100644
--- a/src/Razor/Razor/src/Microsoft.AspNetCore.Razor.csproj
+++ b/src/Razor/Razor/src/Microsoft.AspNetCore.Razor.csproj
@@ -9,6 +9,7 @@ Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNameAttribute
 Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElementAttribute
 Microsoft.AspNetCore.Razor.TagHelpers.ITagHelper</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>$(PackageTags);taghelper;taghelpers</PackageTags>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
@@ -19,7 +20,7 @@ Microsoft.AspNetCore.Razor.TagHelpers.ITagHelper</Description>
 
   <ItemGroup>
     <Reference Include="Microsoft.AspNetCore.Html.Abstractions" />
-    <Reference Include="Microsoft.Extensions.HashCodeCombiner.Sources" PrivateAssets="All" />
+    <Reference Include="Microsoft.Extensions.HashCodeCombiner.Sources" SharedSources="true" />
   </ItemGroup>
 
 </Project>
diff --git a/src/Security/Authentication/Cookies/src/Microsoft.AspNetCore.Authentication.Cookies.csproj b/src/Security/Authentication/Cookies/src/Microsoft.AspNetCore.Authentication.Cookies.csproj
index d4d24b81ad0..c86d9b94ac9 100644
--- a/src/Security/Authentication/Cookies/src/Microsoft.AspNetCore.Authentication.Cookies.csproj
+++ b/src/Security/Authentication/Cookies/src/Microsoft.AspNetCore.Authentication.Cookies.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core middleware that enables an application to use cookie based authentication.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <DefineConstants>$(DefineConstants);SECURITY</DefineConstants>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
diff --git a/src/Security/Authentication/Core/src/Microsoft.AspNetCore.Authentication.csproj b/src/Security/Authentication/Core/src/Microsoft.AspNetCore.Authentication.csproj
index f80469e4650..f4b26c9968c 100644
--- a/src/Security/Authentication/Core/src/Microsoft.AspNetCore.Authentication.csproj
+++ b/src/Security/Authentication/Core/src/Microsoft.AspNetCore.Authentication.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core common types used by the various authentication middleware components.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;authentication;security</PackageTags>
diff --git a/src/Security/Authentication/OAuth/src/Microsoft.AspNetCore.Authentication.OAuth.csproj b/src/Security/Authentication/OAuth/src/Microsoft.AspNetCore.Authentication.OAuth.csproj
index 85623aebce2..29137840ffb 100644
--- a/src/Security/Authentication/OAuth/src/Microsoft.AspNetCore.Authentication.OAuth.csproj
+++ b/src/Security/Authentication/OAuth/src/Microsoft.AspNetCore.Authentication.OAuth.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core middleware that enables an application to support any standard OAuth 2.0 authentication workflow.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;authentication;security</PackageTags>
diff --git a/src/Security/Authorization/Core/src/Microsoft.AspNetCore.Authorization.csproj b/src/Security/Authorization/Core/src/Microsoft.AspNetCore.Authorization.csproj
index c58c135f90f..01ee46d07d8 100644
--- a/src/Security/Authorization/Core/src/Microsoft.AspNetCore.Authorization.csproj
+++ b/src/Security/Authorization/Core/src/Microsoft.AspNetCore.Authorization.csproj
@@ -6,6 +6,7 @@ Commonly used types:
 Microsoft.AspNetCore.Authorization.AllowAnonymousAttribute
 Microsoft.AspNetCore.Authorization.AuthorizeAttribute</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;authorization</PackageTags>
diff --git a/src/Security/Authorization/Policy/src/Microsoft.AspNetCore.Authorization.Policy.csproj b/src/Security/Authorization/Policy/src/Microsoft.AspNetCore.Authorization.Policy.csproj
index 0f302058e57..ecd83793a4c 100644
--- a/src/Security/Authorization/Policy/src/Microsoft.AspNetCore.Authorization.Policy.csproj
+++ b/src/Security/Authorization/Policy/src/Microsoft.AspNetCore.Authorization.Policy.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core authorization policy helper classes.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591;NU1605</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;authorization</PackageTags>
diff --git a/src/Security/CookiePolicy/src/Microsoft.AspNetCore.CookiePolicy.csproj b/src/Security/CookiePolicy/src/Microsoft.AspNetCore.CookiePolicy.csproj
index 81079fe1264..f4b039bcb9e 100644
--- a/src/Security/CookiePolicy/src/Microsoft.AspNetCore.CookiePolicy.csproj
+++ b/src/Security/CookiePolicy/src/Microsoft.AspNetCore.CookiePolicy.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core cookie policy classes to control the behavior of cookies.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore</PackageTags>
diff --git a/src/Servers/Connections.Abstractions/src/Microsoft.AspNetCore.Connections.Abstractions.csproj b/src/Servers/Connections.Abstractions/src/Microsoft.AspNetCore.Connections.Abstractions.csproj
index baa0fd66b2e..a9582339923 100644
--- a/src/Servers/Connections.Abstractions/src/Microsoft.AspNetCore.Connections.Abstractions.csproj
+++ b/src/Servers/Connections.Abstractions/src/Microsoft.AspNetCore.Connections.Abstractions.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>Core components of ASP.NET Core networking protocol stack.</Description>
     <TargetFramework>netstandard2.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore</PackageTags>
     <NoWarn>CS1591;$(NoWarn)</NoWarn>
@@ -11,7 +12,7 @@
 
   <ItemGroup>
     <Reference Include="Microsoft.AspNetCore.Http.Features" />
-    <Reference Include="Microsoft.Extensions.ActivatorUtilities.Sources" PrivateAssets="All" />
+    <Reference Include="Microsoft.Extensions.ActivatorUtilities.Sources" SharedSources="true" />
     <Reference Include="System.IO.Pipelines" />
   </ItemGroup>
 
diff --git a/src/Servers/HttpSys/src/Microsoft.AspNetCore.Server.HttpSys.csproj b/src/Servers/HttpSys/src/Microsoft.AspNetCore.Server.HttpSys.csproj
index 7618aad939a..9117a4d39bb 100644
--- a/src/Servers/HttpSys/src/Microsoft.AspNetCore.Server.HttpSys.csproj
+++ b/src/Servers/HttpSys/src/Microsoft.AspNetCore.Server.HttpSys.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core HTTP server that uses the Windows HTTP Server API.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
diff --git a/src/Servers/IIS/IIS/src/Microsoft.AspNetCore.Server.IIS.csproj b/src/Servers/IIS/IIS/src/Microsoft.AspNetCore.Server.IIS.csproj
index f2ceee919c8..9f71d3f6cad 100644
--- a/src/Servers/IIS/IIS/src/Microsoft.AspNetCore.Server.IIS.csproj
+++ b/src/Servers/IIS/IIS/src/Microsoft.AspNetCore.Server.IIS.csproj
@@ -2,6 +2,7 @@
 
   <PropertyGroup>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <PackageId>Microsoft.AspNetCore.Server.IIS</PackageId>
     <Description>Provides support for hosting ASP.NET Core in IIS using the AspNetCoreModule.</Description>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
diff --git a/src/Servers/IIS/IISIntegration/src/Microsoft.AspNetCore.Server.IISIntegration.csproj b/src/Servers/IIS/IISIntegration/src/Microsoft.AspNetCore.Server.IISIntegration.csproj
index c4825392476..ca33bbaba67 100644
--- a/src/Servers/IIS/IISIntegration/src/Microsoft.AspNetCore.Server.IISIntegration.csproj
+++ b/src/Servers/IIS/IISIntegration/src/Microsoft.AspNetCore.Server.IISIntegration.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core components for working with the IIS AspNetCoreModule.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <NoWarn>$(NoWarn);CS1591</NoWarn>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;iis</PackageTags>
@@ -17,10 +18,7 @@
     <Reference Include="Microsoft.AspNetCore.HttpOverrides" />
     <Reference Include="Microsoft.Extensions.Logging.Abstractions" />
     <Reference Include="Microsoft.Extensions.Options" />
-    <Reference Include="System.Buffers" />
     <Reference Include="System.IO.Pipelines" />
-    <Reference Include="System.Memory" />
-    <Reference Include="System.Numerics.Vectors" />
     <Reference Include="System.Runtime.CompilerServices.Unsafe" />
     <Reference Include="System.Security.Principal.Windows" />
   </ItemGroup>
diff --git a/src/Servers/Kestrel/Core/src/Microsoft.AspNetCore.Server.Kestrel.Core.csproj b/src/Servers/Kestrel/Core/src/Microsoft.AspNetCore.Server.Kestrel.Core.csproj
index 17bd70a6757..c12d43df2d4 100644
--- a/src/Servers/Kestrel/Core/src/Microsoft.AspNetCore.Server.Kestrel.Core.csproj
+++ b/src/Servers/Kestrel/Core/src/Microsoft.AspNetCore.Server.Kestrel.Core.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>Core components of ASP.NET Core Kestrel cross-platform web server.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;kestrel</PackageTags>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
@@ -22,11 +23,8 @@
     <Reference Include="Microsoft.Extensions.Logging.Abstractions" />
     <Reference Include="Microsoft.Extensions.Options" />
     <Reference Include="Microsoft.Net.Http.Headers" />
-    <Reference Include="System.Memory" />
-    <Reference Include="System.Numerics.Vectors" />
     <Reference Include="System.Runtime.CompilerServices.Unsafe" />
     <Reference Include="System.Security.Cryptography.Cng" />
-    <Reference Include="System.Threading.Tasks.Extensions" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/src/Servers/Kestrel/Core/test/Microsoft.AspNetCore.Server.Kestrel.Core.Tests.csproj b/src/Servers/Kestrel/Core/test/Microsoft.AspNetCore.Server.Kestrel.Core.Tests.csproj
index bcfc3e6f4e1..84e378410f3 100644
--- a/src/Servers/Kestrel/Core/test/Microsoft.AspNetCore.Server.Kestrel.Core.Tests.csproj
+++ b/src/Servers/Kestrel/Core/test/Microsoft.AspNetCore.Server.Kestrel.Core.Tests.csproj
@@ -19,7 +19,6 @@
     <Reference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions" />
     <Reference Include="Microsoft.Extensions.DependencyInjection" />
     <Reference Include="Microsoft.Extensions.Logging" />
-    <Reference Include="System.Memory" />
     <Reference Include="System.Runtime.CompilerServices.Unsafe" />
   </ItemGroup>
 
diff --git a/src/Servers/Kestrel/Kestrel/src/Microsoft.AspNetCore.Server.Kestrel.csproj b/src/Servers/Kestrel/Kestrel/src/Microsoft.AspNetCore.Server.Kestrel.csproj
index 7394ffae002..c7a721311ce 100644
--- a/src/Servers/Kestrel/Kestrel/src/Microsoft.AspNetCore.Server.Kestrel.csproj
+++ b/src/Servers/Kestrel/Kestrel/src/Microsoft.AspNetCore.Server.Kestrel.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>ASP.NET Core Kestrel cross-platform web server.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;kestrel</PackageTags>
     <NoWarn>CS1591;$(NoWarn)</NoWarn>
diff --git a/src/Servers/Kestrel/Transport.Abstractions/src/Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.csproj b/src/Servers/Kestrel/Transport.Abstractions/src/Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.csproj
index 39c53a73ff7..0d812732eba 100644
--- a/src/Servers/Kestrel/Transport.Abstractions/src/Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.csproj
+++ b/src/Servers/Kestrel/Transport.Abstractions/src/Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>Transport abstractions for the ASP.NET Core Kestrel cross-platform web server.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;kestrel</PackageTags>
     <NoWarn>CS1570;CS1571;CS1572;CS1573;CS1574;CS1591;$(NoWarn)</NoWarn>
diff --git a/src/Servers/Kestrel/Transport.Sockets/src/Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.csproj b/src/Servers/Kestrel/Transport.Sockets/src/Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.csproj
index 2df07062fd2..e5ffbb53b64 100644
--- a/src/Servers/Kestrel/Transport.Sockets/src/Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.csproj
+++ b/src/Servers/Kestrel/Transport.Sockets/src/Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>Managed socket transport for the ASP.NET Core Kestrel cross-platform web server.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PackageTags>aspnetcore;kestrel</PackageTags>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
diff --git a/src/SignalR/common/Http.Connections.Common/src/Microsoft.AspNetCore.Http.Connections.Common.csproj b/src/SignalR/common/Http.Connections.Common/src/Microsoft.AspNetCore.Http.Connections.Common.csproj
index a54ac4c17b8..6be1dd1629a 100644
--- a/src/SignalR/common/Http.Connections.Common/src/Microsoft.AspNetCore.Http.Connections.Common.csproj
+++ b/src/SignalR/common/Http.Connections.Common/src/Microsoft.AspNetCore.Http.Connections.Common.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>Common primitives for ASP.NET Connection Handlers and clients</Description>
     <TargetFrameworks>netstandard2.0;netcoreapp3.0</TargetFrameworks>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <RootNamespace>Microsoft.AspNetCore.Http.Connections</RootNamespace>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <IsShippingPackage>true</IsShippingPackage>
@@ -16,10 +17,12 @@
 
   <ItemGroup>
     <Reference Include="Microsoft.AspNetCore.Connections.Abstractions" />
+    <Reference Include="System.Runtime.CompilerServices.Unsafe" />
+  </ItemGroup>
+
+  <ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'" >
+    <Reference Include="Microsoft.Bcl.Json.Sources" SharedSources="true" />
     <Reference Include="System.Buffers" />
-    <Reference Include="Microsoft.Bcl.Json.Sources" Condition="'$(TargetFramework)' == 'netstandard2.0'">
-      <PrivateAssets>All</PrivateAssets>
-    </Reference>
-    <Reference Include="System.Runtime.CompilerServices.Unsafe" Condition="'$(TargetFramework)' == 'netstandard2.0'" />
   </ItemGroup>
+
 </Project>
diff --git a/src/SignalR/common/Http.Connections/src/Microsoft.AspNetCore.Http.Connections.csproj b/src/SignalR/common/Http.Connections/src/Microsoft.AspNetCore.Http.Connections.csproj
index 42845dcee4d..6a99c1f7621 100644
--- a/src/SignalR/common/Http.Connections/src/Microsoft.AspNetCore.Http.Connections.csproj
+++ b/src/SignalR/common/Http.Connections/src/Microsoft.AspNetCore.Http.Connections.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>Components for providing real-time bi-directional communication across the Web.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
   </PropertyGroup>
 
   <ItemGroup>
@@ -27,10 +28,9 @@
     <Reference Include="Microsoft.AspNetCore.Http" />
     <Reference Include="Microsoft.AspNetCore.Routing" />
     <Reference Include="Microsoft.AspNetCore.WebSockets" />
-    <Reference Include="Microsoft.Extensions.ValueStopwatch.Sources" PrivateAssets="All" />
+    <Reference Include="Microsoft.Extensions.ValueStopwatch.Sources" SharedSources="true" />
     <Reference Include="Newtonsoft.Json" />
     <Reference Include="System.Security.Principal.Windows" />
-
   </ItemGroup>
 
 </Project>
diff --git a/src/SignalR/common/Protocols.NewtonsoftJson/src/Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson.csproj b/src/SignalR/common/Protocols.NewtonsoftJson/src/Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson.csproj
index 04f27fbe951..79a299f9ef7 100644
--- a/src/SignalR/common/Protocols.NewtonsoftJson/src/Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson.csproj
+++ b/src/SignalR/common/Protocols.NewtonsoftJson/src/Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson.csproj
@@ -3,6 +3,8 @@
   <PropertyGroup>
     <Description>Implements the SignalR Hub Protocol using Newtonsoft.Json.</Description>
     <TargetFramework>netstandard2.0</TargetFramework>
+    <!-- TODO: remove this from the shared framework once we have a JSON protocol implementation which doesn't use Newtonsoft.Json. -->
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <RootNamespace>Microsoft.AspNetCore.SignalR</RootNamespace>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <IsShippingPackage>true</IsShippingPackage>
diff --git a/src/SignalR/common/SignalR.Common/src/Microsoft.AspNetCore.SignalR.Common.csproj b/src/SignalR/common/SignalR.Common/src/Microsoft.AspNetCore.SignalR.Common.csproj
index 05f40dbebbf..f2cdf6f8e1f 100644
--- a/src/SignalR/common/SignalR.Common/src/Microsoft.AspNetCore.SignalR.Common.csproj
+++ b/src/SignalR/common/SignalR.Common/src/Microsoft.AspNetCore.SignalR.Common.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>Common serialiation primitives for SignalR Clients Servers</Description>
     <TargetFrameworks>netstandard2.0;netcoreapp3.0</TargetFrameworks>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <RootNamespace>Microsoft.AspNetCore.SignalR</RootNamespace>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <IsShippingPackage>true</IsShippingPackage>
@@ -21,11 +22,12 @@
   <ItemGroup>
     <Reference Include="Microsoft.AspNetCore.Connections.Abstractions" />
     <Reference Include="Microsoft.Extensions.Options" />
+    <Reference Include="System.Runtime.CompilerServices.Unsafe" />
+  </ItemGroup>
+
+  <ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
+    <Reference Include="Microsoft.Bcl.Json.Sources" SharedSources="true" />
     <Reference Include="System.Buffers" />
-    <Reference Include="Microsoft.Bcl.Json.Sources" Condition="'$(TargetFramework)' == 'netstandard2.0'">
-      <PrivateAssets>All</PrivateAssets>
-    </Reference>
-    <Reference Include="System.Runtime.CompilerServices.Unsafe" Condition="'$(TargetFramework)' == 'netstandard2.0'" />
   </ItemGroup>
 
 </Project>
diff --git a/src/SignalR/server/Core/src/Microsoft.AspNetCore.SignalR.Core.csproj b/src/SignalR/server/Core/src/Microsoft.AspNetCore.SignalR.Core.csproj
index 3bfcfd26e7d..d26d4a30a9e 100644
--- a/src/SignalR/server/Core/src/Microsoft.AspNetCore.SignalR.Core.csproj
+++ b/src/SignalR/server/Core/src/Microsoft.AspNetCore.SignalR.Core.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <Description>Real-time communication framework for ASP.NET Core.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
     <RootNamespace>Microsoft.AspNetCore.SignalR</RootNamespace>
   </PropertyGroup>
 
diff --git a/src/SignalR/server/SignalR/src/Microsoft.AspNetCore.SignalR.csproj b/src/SignalR/server/SignalR/src/Microsoft.AspNetCore.SignalR.csproj
index 4c9b1c58864..cb71376f890 100644
--- a/src/SignalR/server/SignalR/src/Microsoft.AspNetCore.SignalR.csproj
+++ b/src/SignalR/server/SignalR/src/Microsoft.AspNetCore.SignalR.csproj
@@ -2,6 +2,7 @@
   <PropertyGroup>
     <Description>Components for providing real-time bi-directional communication across the Web.</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
+    <IsAspNetCoreApp>true</IsAspNetCoreApp>
   </PropertyGroup>
 
   <ItemGroup>
-- 
GitLab