Bladeren bron

Make Visual Studio 2019 a prerequisite to building this repo (#7005)

Changes:

* Make Visual Studio 2019 a prerequisite for building this repo
* Update .sln files
* Update Windows SDK to 17134
* Update developer docs
* Disable ANCM tests
* Update to .NET Core SDK 3.0 Preview 2
* Use Microsoft.NET.Sdk.Razor as a package consistently accross the repo
* React to changes in metadata from Microsoft.NETCore.App
* React to changes in .NET Core SDK
* Attempt to workaround CodeCheck.ps1 failure which doesn't repro locally or on different agents. Possibly due to differences in the version of the PowerShell task?
* Remove dead YML file
* Rename usages of win7-{x64,x86} to win-{x64,x86}
* Update KoreBuild to 3.0.0-build-20190219.1
Nate McMaster 7 jaren geleden
bovenliggende
commit
85ae18c723
100 gewijzigde bestanden met toevoegingen van 304 en 314 verwijderingen
  1. 18 36
      .azure/pipelines/ci.yml
  2. 13 18
      .azure/pipelines/helix-test.yml
  3. 9 8
      .azure/pipelines/jobs/default-build.yml
  4. 0 20
      .azure/pipelines/jobs/iisintegration-job.yml
  5. 1 0
      Directory.Build.props
  6. 19 0
      Directory.Build.targets
  7. 4 1
      build.ps1
  8. 7 3
      build.sh
  9. 1 1
      build/repo.props
  10. 0 2
      build/repo.targets
  11. 3 3
      build/tasks/RepoTasks.csproj
  12. 3 3
      build/tasks/tasks.sln
  13. 4 4
      docs/BuildFromSource.md
  14. 0 1
      eng/Dependencies.props
  15. 5 0
      eng/Version.Details.xml
  16. 3 1
      eng/Versions.props
  17. 20 0
      eng/Workarounds.props
  18. 14 0
      eng/Workarounds.targets
  19. 18 6
      eng/scripts/CodeCheck.ps1
  20. 1 1
      eng/scripts/GenerateProjectList.ps1
  21. 21 15
      eng/scripts/InstallVisualStudio.ps1
  22. 11 14
      eng/scripts/vs.json
  23. 12 0
      eng/targets/CSharp.Common.props
  24. 1 1
      eng/targets/Wix.Common.props
  25. 3 3
      eng/tools/tools.sln
  26. 2 2
      global.json
  27. 2 2
      korebuild-lock.txt
  28. 6 3
      korebuild.json
  29. 3 3
      src/Antiforgery/Antiforgery.sln
  30. 3 3
      src/Azure/Azure.sln
  31. 0 1
      src/Azure/AzureAD/Authentication.AzureAD.UI/src/Microsoft.AspNetCore.Authentication.AzureAD.UI.csproj
  32. 0 1
      src/Azure/AzureAD/Authentication.AzureADB2C.UI/src/Microsoft.AspNetCore.Authentication.AzureADB2C.UI.csproj
  33. 0 1
      src/Azure/AzureAD/samples/AzureADB2CSample/AzureADB2CSample.csproj
  34. 0 1
      src/Azure/AzureAD/test/testassets/AzureAD.WebSite/AzureAD.WebSite.csproj
  35. 3 3
      src/Components/Blazor/Templates/src/content/BlazorHosted-CSharp/BlazorHosted-CSharp.sln
  36. 0 1
      src/Components/Blazor/testassets/HostedInAspNet.Client/HostedInAspNet.Client.csproj
  37. 0 1
      src/Components/Blazor/testassets/HostedInAspNet.Server/HostedInAspNet.Server.csproj
  38. 0 1
      src/Components/Blazor/testassets/Microsoft.AspNetCore.Blazor.E2EPerformance/Microsoft.AspNetCore.Blazor.E2EPerformance.csproj
  39. 0 1
      src/Components/Blazor/testassets/MonoSanityClient/MonoSanityClient.csproj
  40. 0 1
      src/Components/Blazor/testassets/StandaloneApp/StandaloneApp.csproj
  41. 1 1
      src/Components/Components.sln
  42. 0 1
      src/Components/test/testassets/BasicTestApp/BasicTestApp.csproj
  43. 0 1
      src/Components/test/testassets/ComponentsApp.App/ComponentsApp.App.csproj
  44. 0 1
      src/Components/test/testassets/ComponentsApp.Server/ComponentsApp.Server.csproj
  45. 0 1
      src/Components/test/testassets/TestContentPackage/TestContentPackage.csproj
  46. 0 1
      src/Components/test/testassets/TestServer/TestServer.csproj
  47. 3 3
      src/DataProtection/DataProtection.sln
  48. 3 3
      src/DefaultBuilder/DefaultBuilder.sln
  49. 0 8
      src/Framework/pkg/Metapackage.targets
  50. 3 1
      src/Framework/ref/Microsoft.AspNetCore.App.Ref.csproj
  51. 1 4
      src/Framework/src/Microsoft.AspNetCore.App.shfxproj
  52. 10 16
      src/Framework/src/SharedFx.targets
  53. 3 3
      src/Hosting/Hosting.sln
  54. 1 1
      src/Hosting/Server.IntegrationTesting/src/ApplicationPublisher.cs
  55. 3 3
      src/Http/HttpAbstractions.sln
  56. 0 1
      src/Identity/ApiAuthorization.IdentityServer/samples/ApiAuthSample/ApiAuthSample.csproj
  57. 3 3
      src/Identity/Identity.sln
  58. 0 1
      src/Identity/UI/src/Microsoft.AspNetCore.Identity.UI.csproj
  59. 0 1
      src/Identity/testassets/Identity.DefaultUI.WebSite/Identity.DefaultUI.WebSite.csproj
  60. 3 3
      src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Common/Common.sln
  61. 3 3
      src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Setup.sln
  62. 3 3
      src/Installers/Windows/Installers.sln
  63. 1 1
      src/Middleware/Middleware.sln
  64. 0 1
      src/Middleware/SpaServices/samples/Webpack/Webpack.csproj
  65. 3 3
      src/MusicStore/MusicStore.sln
  66. 1 2
      src/MusicStore/samples/MusicStore/MusicStore.csproj
  67. 1 1
      src/Mvc/Mvc.sln
  68. 0 2
      src/Mvc/benchmarkapps/BasicViews/BasicViews.csproj
  69. 0 2
      src/Mvc/benchmarkapps/RazorRendering/RazorRendering.csproj
  70. 0 1
      src/Mvc/benchmarks/Microsoft.AspNetCore.Mvc.Performance.Views/Microsoft.AspNetCore.Mvc.Performance.Views.csproj
  71. 0 1
      src/Mvc/samples/MvcSandbox/MvcSandbox.csproj
  72. 0 1
      src/Mvc/test/WebSites/ApplicationModelWebSite/ApplicationModelWebSite.csproj
  73. 0 1
      src/Mvc/test/WebSites/BasicWebSite/BasicWebSite.csproj
  74. 0 1
      src/Mvc/test/WebSites/ControllersFromServicesWebSite/ControllersFromServicesWebSite.csproj
  75. 0 1
      src/Mvc/test/WebSites/GenericHostWebSite/GenericHostWebSite.csproj
  76. 0 1
      src/Mvc/test/WebSites/HtmlGenerationWebSite/HtmlGenerationWebSite.csproj
  77. 0 1
      src/Mvc/test/WebSites/RazorBuildWebSite/RazorBuildWebSite.csproj
  78. 0 1
      src/Mvc/test/WebSites/RazorPagesClassLibrary/RazorPagesClassLibrary.csproj
  79. 0 1
      src/Mvc/test/WebSites/RazorPagesWebSite/RazorPagesWebSite.csproj
  80. 0 1
      src/Mvc/test/WebSites/RazorWebSite/RazorWebSite.csproj
  81. 0 1
      src/Mvc/test/WebSites/RoutingWebSite/RoutingWebSite.csproj
  82. 0 1
      src/Mvc/test/WebSites/SecurityWebSite/SecurityWebSite.csproj
  83. 0 1
      src/Mvc/test/WebSites/TagHelpersWebSite/TagHelpersWebSite.csproj
  84. 3 2
      src/ProjectTemplates/test/GenerateTestProps.targets
  85. 12 2
      src/ProjectTemplates/test/Helpers/ProcessEx.cs
  86. 1 30
      src/ProjectTemplates/test/Helpers/TemplateTestBase.cs
  87. 4 0
      src/ProjectTemplates/test/ProjectTemplates.Tests.csproj
  88. 15 5
      src/ProjectTemplates/test/TemplateTests.props.in
  89. 3 3
      src/Razor/Razor.sln
  90. 3 3
      src/Security/AuthSamples.sln
  91. 1 1
      src/Security/Security.sln
  92. 0 1
      src/Security/samples/ClaimsTransformation/ClaimsTransformation.csproj
  93. 0 1
      src/Security/samples/Cookies/Cookies.csproj
  94. 0 1
      src/Security/samples/CustomPolicyProvider/CustomPolicyProvider.csproj
  95. 0 1
      src/Security/samples/DynamicSchemes/DynamicSchemes.csproj
  96. 0 1
      src/Security/samples/Identity.ExternalClaims/Identity.ExternalClaims.csproj
  97. 0 1
      src/Security/samples/PathSchemeSelection/PathSchemeSelection.csproj
  98. 0 1
      src/Security/samples/StaticFilesAuth/StaticFilesAuth.csproj
  99. 3 3
      src/Servers/FunctionalTests.sln
  100. 3 3
      src/Servers/HttpSys/HttpSysServer.sln

+ 18 - 36
.azure/pipelines/ci.yml

@@ -20,15 +20,16 @@ pr:
     - '*'
 
 jobs:
-- job: Code_check
-  displayName: Code check
-  workspace:
-    clean: all
-  pool:
-    vmImage: vs2017-win2016
-  steps:
-  - powershell: ./eng/scripts/CodeCheck.ps1 -ci
-    displayName: Run eng/scripts/CodeCheck.ps1
+- template: jobs/default-build.yml
+  parameters:
+    jobName: Code_check
+    jobDisplayName: Code check
+    agentOs: Windows
+    installJdk: false
+    installNodeJs: false
+    steps:
+    - powershell: ./eng/scripts/CodeCheck.ps1 -ci
+      displayName: Run eng/scripts/CodeCheck.ps1
 
 # Build Windows (x64/x86)
 - template: jobs/default-build.yml
@@ -37,7 +38,7 @@ jobs:
     jobName: Windows_build
     jobDisplayName: "Build: Windows x64/x86"
     agentOs: Windows
-    buildSteps:
+    steps:
     - script: "echo ##vso[build.addbuildtag]daily-build"
       condition: and(ne(variables['Build.Reason'], 'PullRequest'), ne(variables['IsFinalBuild'], 'true'))
       displayName: 'Set CI tags'
@@ -56,7 +57,7 @@ jobs:
 
     # Build the x86 shared framework
     # Set DisableSignCheck because we'll run sign check in an explicit step after installers build
-    - script: ./eng/scripts/cibuild.cmd -arch x86 /t:BuildSharedFx /p:DisableCodeSigning=true /bl:artifacts/logs/build.x86.binlog
+    - script: ./eng/scripts/cibuild.cmd -arch x86 -NoRestore /t:BuildSharedFx /p:DisableCodeSigning=true /bl:artifacts/logs/build.x86.binlog
       displayName: Build x86
 
     # This is in a separate build step with -forceCoreMsbuild to workaround MAX_PATH limitations - https://github.com/Microsoft/msbuild/issues/53
@@ -66,7 +67,7 @@ jobs:
     # This runs code-signing on all packages, zips, and jar files as defined in build/CodeSign.targets. If https://github.com/dotnet/arcade/issues/1957 is resolved,
     # consider running code-signing inline with the other previous steps.
     # Sign check is disabled because it is run in a separate step below, after installers are built.
-    - script: ./build.cmd -ci -sign /t:CodeSign /p:SignType=$(_SignType) /p:DisableSignCheck=true /bl:artifacts/logs/build.codesign.binlog
+    - script: ./build.cmd -ci -sign -NoRestore /t:CodeSign /p:SignType=$(_SignType) /p:DisableSignCheck=true /bl:artifacts/logs/build.codesign.binlog
       displayName: Code sign packages
 
     # Windows installers bundle both x86 and x64 assets
@@ -74,7 +75,7 @@ jobs:
       displayName: Build Installers
 
     # Run sign check to verify everything was code signed.
-    - script: ./build.cmd -ci -sign /t:SignCheck /p:SignType=$(_SignType) /bl:artifacts/logs/build.signcheck.binlog
+    - script: ./build.cmd -ci -sign -NoRestore /t:SignCheck /p:SignType=$(_SignType) /bl:artifacts/logs/build.signcheck.binlog
       displayName: Run sign check
       condition: eq(variables['_SignType'], 'real')
 
@@ -102,8 +103,8 @@ jobs:
     jobName: Windows_arm_build
     jobDisplayName: "Build: Windows ARM"
     agentOs: Windows
-    buildScript: ./eng/scripts/cibuild.cmd -NoBuildNodeJS -NoBuildJava
-    buildArgs: -arch arm /p:SignType=$(_SignType)
+    buildScript: ./eng/scripts/cibuild.cmd
+    buildArgs: -arch arm -NoBuildNodeJS -NoBuildJava /p:SignType=$(_SignType)
     installNodeJs: false
     installJdk: false
     afterBuild:
@@ -156,7 +157,7 @@ jobs:
     jobDisplayName: "Build: Linux x64"
     agentOs: Linux
     installNodeJs: false
-    buildSteps:
+    steps:
     - script: ./eng/scripts/cibuild.sh --arch x64 --no-build-nodejs --no-build-java
       displayName: Run cibuild.sh
     - script: |
@@ -166,6 +167,7 @@ jobs:
           --ci --pack --all --no-build-nodejs --no-build-java \
           --arch x64 \
           -e KOREBUILD_SKIP_INSTALL_NETFX=0 \
+          --no-restore \
           /t:BuildSharedFx  \
           /p:BuildRuntimeArchive=false \
           /p:LinuxInstallerType=deb
@@ -330,23 +332,3 @@ jobs:
     - name: Linux_Test_Logs
       path: artifacts/logs/
       publishOnError: true
-- template: jobs/iisintegration-job.yml
-  parameters:
-    condition: ne(variables['SkipTests'], 'true')
-    TestGroupName: IIS
-    skipArgs: " /p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISTests=false /p:SkipIISExpressTests=true /p:SkipIISForwardsCompatibilityTests=true"
-- template: jobs/iisintegration-job.yml
-  parameters:
-    condition: ne(variables['SkipTests'], 'true')
-    TestGroupName: IISExpress
-    skipArgs: "/p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISTests=true /p:SkipIISExpressTests=false /p:SkipIISForwardsCompatibilityTests=true"
-- template: jobs/iisintegration-job.yml
-  parameters:
-    condition: ne(variables['SkipTests'], 'true')
-    TestGroupName: IISForwardCompat
-    skipArgs: "/p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISTests=true /p:SkipIISExpressTests=true /p:SkipIISForwardsCompatibilityTests=false"
-- template: jobs/iisintegration-job.yml
-  parameters:
-    condition: ne(variables['SkipTests'], 'true')
-    TestGroupName: IISBackCompat
-    skipArgs: "/p:SkipIISBackwardsCompatibilityTests=false /p:SkipIISTests=true /p:SkipIISExpressTests=true /p:SkipIISForwardsCompatibilityTests=true"

+ 13 - 18
.azure/pipelines/helix-test.yml

@@ -8,21 +8,16 @@ pr:
     - '*'
 
 jobs:
-- job: Helix
-  timeoutInMinutes: 240
-  pool:
-    name: Hosted VS2017
-    vmImage: vs2017-win2016
-  steps:
-  - checkout: self
-    clean: true
-  - script: .\build.cmd -all -ci /t:Helix /p:IsHelixJob=true /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\SendToHelix.binlog
-    displayName: Run build.cmd helix target
-  - task: PublishBuildArtifacts@1
-    displayName: Publish Logs to VSTS
-    inputs:
-      PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log'
-      PublishLocation: Container
-      ArtifactName: $(Agent.Os)_$(Agent.JobName)
-    continueOnError: true
-    condition: always() 
+- template: jobs/default-build.yml
+  parameters:
+    jobName: Helix
+    jobDisplayName: 'Tests: Helix'
+    agentOs: Windows
+    timeoutInMinutes: 240
+    steps:
+    - script: .\build.cmd -all -ci /t:Helix /p:IsHelixJob=true /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\logs\SendToHelix.binlog
+      displayName: Run build.cmd helix target
+    artifacts:
+    - name: Helix_logs
+      path: artifacts/logs/
+      publishOnError: true

+ 9 - 8
.azure/pipelines/jobs/default-build.yml

@@ -14,7 +14,7 @@
 #       Note: -ci is always passed
 #   beforeBuild: [steps]
 #       Additional steps to run before build.sh/cmd
-#   buildSteps: [steps]
+#   steps: [steps]
 #       Instead of running build.cmd/sh, run these build steps.
 #   afterBuild: [steps]
 #       Additional steps to run after build.sh/cmd
@@ -50,7 +50,7 @@ parameters:
   buildArgs: ''
   configuration: 'Release'
   beforeBuild: []
-  # buildSteps: []  don't define an empty object default because there is no way in template expression yet to check "if isEmpty(parameters.buildSteps)"
+  # steps: []  don't define an empty object default because there is no way in template expression yet to check "if isEmpty(parameters.steps)"
   afterBuild: []
   codeSign: false
   variables: {}
@@ -64,6 +64,7 @@ parameters:
   buildScript: ''
   installNodeJs: true
   installJdk: true
+  timeoutInMinutes: 120
 
 jobs:
 - job: ${{ coalesce(parameters.jobName, parameters.agentOs) }}
@@ -71,7 +72,7 @@ jobs:
   dependsOn: ${{ parameters.dependsOn }}
   ${{ if ne(parameters.condition, '') }}:
     condition: ${{ parameters.condition }}
-  timeoutInMinutes: 120
+  timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
   workspace:
     clean: all
   strategy:
@@ -91,9 +92,9 @@ jobs:
       name: ${{ parameters.poolName }}
     ${{ if and(eq(parameters.poolName, ''), eq(parameters.agentOs, 'Windows')) }}:
       ${{ if eq(variables['System.TeamProject'], 'internal') }}:
-        name: dotnet-internal-temp
+        name: dotnet-internal-vs2019-preview
       ${{ if ne(variables['System.TeamProject'], 'internal') }}:
-        name: dotnet-external-temp
+        name: dotnet-external-vs2019-preview
   variables:
     AgentOsName: ${{ parameters.agentOs }}
     ASPNETCORE_TEST_LOG_MAXPATH: "200" # Keep test log file name length low enough for artifact zipping
@@ -132,9 +133,9 @@ jobs:
 
   - ${{ parameters.beforeBuild }}
 
-  - ${{ if ne(parameters.buildSteps, '')}}:
-    - ${{ parameters.buildSteps }}
-  - ${{ if eq(parameters.buildSteps, '')}}:
+  - ${{ if ne(parameters.steps, '')}}:
+    - ${{ parameters.steps }}
+  - ${{ if eq(parameters.steps, '')}}:
     - ${{ if eq(parameters.buildScript, '') }}:
       - ${{ if eq(parameters.agentOs, 'Windows') }}:
         - script: .\$(BuildDirectory)\build.cmd -ci /p:SignType=$(_SignType) /p:Configuration=$(BuildConfiguration) $(BuildScriptArgs)

+ 0 - 20
.azure/pipelines/jobs/iisintegration-job.yml

@@ -1,20 +0,0 @@
-jobs:
-- template: default-build.yml
-  parameters:
-    buildScript: .\build.cmd
-    buildArgs: "-ci -test -projects src/Servers/IIS/**/*.csproj ${{ parameters.skipArgs }}"
-    poolName: "Hosted VS2017"
-    poolVmImage: "vs2017-win2016"
-    beforeBuild:
-      - powershell: "& ./src/Servers/IIS/tools/InstallIISFeatures.ps1; & ./src/Servers/IIS/tools/UpdateIISExpressCertificate.ps1; & ./src/Servers/IIS/tools/update_schema.ps1; & ./src/Servers/IIS/tools/SetupTestEnvironment.ps1 Setup"
-        displayName: Prepare repo
-    afterBuild:
-      - powershell: "& ./src/Servers/IIS/tools/SetupTestEnvironment.ps1 Shutdown"
-        displayName: Stop AppVerifier
-        condition: always()
-    jobName: ANCM_${{ parameters.TestGroupName }}
-    jobDisplayName: "Test: ANCM ${{ parameters.TestGroupName }}"
-    artifacts:
-    - name: IIS_${{ parameters.TestGroupName }}_Logs
-      path: artifacts/logs/
-      publishOnError: true

+ 1 - 0
Directory.Build.props

@@ -176,6 +176,7 @@
     <TargetingPackLayoutRoot>$(ArtifactsObjDir)TargetingPack.Layout\$(Configuration)\</TargetingPackLayoutRoot>
   </PropertyGroup>
 
+  <Import Project="eng\Workarounds.props" />
   <Import Project="eng\Dependencies.props" />
   <Import Project="eng\PatchConfig.props" />
   <Import Project="eng\ProjectReferences.props" />

+ 19 - 0
Directory.Build.targets

@@ -15,6 +15,11 @@
     <SuppressDependenciesWhenPacking Condition="'$(SuppressDependenciesWhenPacking)' == '' AND '$(IsAnalyzersProject)' == 'true'">true</SuppressDependenciesWhenPacking>
   </PropertyGroup>
 
+  <PropertyGroup Condition="'$(PackAsTool)' == 'true' AND '$(IsShippingPackage)' == 'true'">
+    <!-- This is a requirement for Microsoft tool packages only. -->
+    <PackAsToolShimRuntimeIdentifiers>win-x64;win-x86</PackAsToolShimRuntimeIdentifiers>
+  </PropertyGroup>
+
   <PropertyGroup Condition=" '$(MSBuildProjectExtension)' == '.csproj' ">
     <PackageId Condition=" '$(PackageId)' == '' ">$(AssemblyName)</PackageId>
     <IsPackable Condition="'$(IsPackable)' == '' AND ( '$(IsTestProject)' == 'true' OR '$(IsTestAssetProject)' == 'true' OR '$(IsBenchmarkProject)' == 'true' OR '$(IsSampleProject)' == 'true' ) ">false</IsPackable>
@@ -67,6 +72,20 @@
     <BuildHelixPayload Condition="'$(BuildHelixPayload)' == '' AND '$(IsTestProject)' == 'true'">true</BuildHelixPayload>
   </PropertyGroup>
 
+  <ItemGroup>
+    <KnownFrameworkReference Update="Microsoft.NETCore.App">
+      <LatestRuntimeFrameworkVersion>$(MicrosoftNETCoreAppPackageVersion)</LatestRuntimeFrameworkVersion>
+      <DefaultRuntimeFrameworkVersion Condition="'$(IsServicingBuild)' != 'true'">$(MicrosoftNETCoreAppPackageVersion)</DefaultRuntimeFrameworkVersion>
+      <TargetingPackVersion Condition="'$(IsServicingBuild)' != 'true'">$(MicrosoftNETCoreAppPackageVersion)</TargetingPackVersion>
+    </KnownFrameworkReference>
+
+    <KnownFrameworkReference Update="Microsoft.AspNetCore.App">
+      <LatestRuntimeFrameworkVersion>$(SharedFxVersion)</LatestRuntimeFrameworkVersion>
+      <DefaultRuntimeFrameworkVersion Condition="'$(IsServicingBuild)' != 'true'">$(SharedFxVersion)</DefaultRuntimeFrameworkVersion>
+      <TargetingPackVersion Condition="'$(IsServicingBuild)' != 'true'">$(SharedFxVersion)</TargetingPackVersion>
+    </KnownFrameworkReference>
+  </ItemGroup>
+
   <Import Project="eng\Workarounds.targets" />
   <Import Project="eng\targets\ResolveIisReferences.targets" Condition=" '$(MSBuildProjectExtension)' != '.vcxproj' " />
   <Import Project="eng\targets\Cpp.Common.targets"  Condition="'$(MSBuildProjectExtension)' == '.vcxproj'" />

+ 4 - 1
build.ps1

@@ -291,7 +291,10 @@ $RunRestore = if ($NoRestore) { $false }
     else { $true }
 
 # Target selection
-$MSBuildArguments += "/p:_RunRestore=$RunRestore"
+if ($RunRestore) {
+    $MSBuildArguments += "/restore"
+}
+
 $MSBuildArguments += "/p:_RunBuild=$RunBuild"
 $MSBuildArguments += "/p:_RunPack=$Pack"
 $MSBuildArguments += "/p:_RunTests=$Test"

+ 7 - 3
build.sh

@@ -20,7 +20,7 @@ channel='master'
 tools_source='https://aspnetcore.blob.core.windows.net/buildtools'
 target_os_name=''
 ci=false
-run_restore=true
+run_restore=''
 run_build=true
 run_pack=false
 run_tests=false
@@ -190,7 +190,7 @@ while [[ $# -gt 0 ]]; do
         --no-build)
             run_build=false
             # --no-build implies --no-restore
-            run_restore=false
+            [ -z "$run_restore" ] && run_restore=false
             ;;
         --no-build-deps)
             build_deps=false
@@ -313,7 +313,10 @@ fi
 [ ! -z "$build_nodejs" ] && msbuild_args[${#msbuild_args[*]}]="-p:BuildNodeJS=$build_nodejs"
 [ ! -z "$build_managed" ] && msbuild_args[${#msbuild_args[*]}]="-p:BuildManaged=$build_managed"
 
-msbuild_args[${#msbuild_args[*]}]="-p:_RunRestore=$run_restore"
+# Run restore by default unless --no-restore or --no-build was specified.
+[ -z "$run_restore" ] && run_restore=true
+
+[ "$run_restore" = true ] && msbuild_args[${#msbuild_args[*]}]="-restore"
 msbuild_args[${#msbuild_args[*]}]="-p:_RunBuild=$run_build"
 msbuild_args[${#msbuild_args[*]}]="-p:_RunPack=$run_pack"
 msbuild_args[${#msbuild_args[*]}]="-p:_RunTests=$run_tests"
@@ -324,6 +327,7 @@ msbuild_args[${#msbuild_args[*]}]="-p:TargetOsName=$target_os_name"
 # Disable downloading ref assemblies as a tarball. Use netfx refs from the Microsoft.NETFramework.ReferenceAssemblies NuGet package instead.
 [ -z "${KOREBUILD_SKIP_INSTALL_NETFX:-}" ] && KOREBUILD_SKIP_INSTALL_NETFX=1
 
+export KOREBUILD_KEEPGLOBALJSON=1
 set_korebuildsettings "$tools_source" "$DOTNET_HOME" "$DIR" "$config_file" "$ci"
 
 # This incantation avoids unbound variable issues if msbuild_args is empty

+ 1 - 1
build/repo.props

@@ -77,7 +77,7 @@
     <!-- Project selection can be overridden on the command line by passing in -projects -->
     <When Condition="'$(Projects)' != ''">
       <ItemGroup>
-        <ProjectToBuild Include="$(Projects)" Exclude="@(ProjectToExclude)">
+        <ProjectToBuild Include="$(Projects)" Exclude="@(ProjectToExclude);$(RepositoryRoot)**\bin\**\*;$(RepositoryRoot)**\obj\**\*">
           <RestoreInParallel Condition="'%(Extension)' == '.npmproj'">false</RestoreInParallel>
         </ProjectToBuild>
       </ItemGroup>

+ 0 - 2
build/repo.targets

@@ -10,7 +10,6 @@
     <!-- Reset the default korebuild lifecycle. -->
     <BuildDependsOn>Prepare</BuildDependsOn>
     <!-- Map bootstrapper flags to KoreBuild targets -->
-    <BuildDependsOn Condition=" '$(_RunRestore)' == 'true' ">$(BuildDependsOn);Restore</BuildDependsOn>
     <BuildDependsOn Condition=" '$(_RunBuild)' == 'true' ">$(BuildDependsOn);Compile</BuildDependsOn>
     <BuildDependsOn Condition=" '$(_RunPack)' == 'true' ">$(BuildDependsOn);Package</BuildDependsOn>
     <BuildDependsOn Condition=" '$(_RunTests)' == 'true' ">$(BuildDependsOn);Test;Verify</BuildDependsOn>
@@ -22,7 +21,6 @@
     <RestoreDependsOn>$(RestoreDependsOn);InstallDotNet;RestoreProjects</RestoreDependsOn>
 
     <CompileDependsOn />
-    <CompileDependsOn Condition=" '$(_RunRestore)' == 'true' ">Restore</CompileDependsOn>
     <CompileDependsOn>$(CompileDependsOn);BuildProjects</CompileDependsOn>
 
     <PackageDependsOn>$(PackageDependsOn);PackProjects</PackageDependsOn>

+ 3 - 3
build/tasks/RepoTasks.csproj

@@ -2,8 +2,8 @@
   <Import Project="$(RepoTasksSdkPath)\Sdk.props" Condition="'$(RepoTasksSdkPath)' != '' "/>
 
   <PropertyGroup>
-    <TargetFramework Condition="'$(MSBuildRuntimeType)' == 'Core' ">netcoreapp2.2</TargetFramework>
-    <TargetFramework Condition="'$(MSBuildRuntimeType)' != 'Core' ">net461</TargetFramework>
+    <TargetFramework Condition="'$(MSBuildRuntimeType)' == 'Core' ">netcoreapp3.0</TargetFramework>
+    <TargetFramework Condition="'$(MSBuildRuntimeType)' != 'Core' ">net472</TargetFramework>
     <DefineConstants Condition="'$(BuildInstallers)' == 'true' AND '$(TargetOsName)' == 'win'">$(DefineConstants);BUILD_MSI_TASKS</DefineConstants>
     <Optimize>false</Optimize>
     <DebugType>embedded</DebugType>
@@ -12,7 +12,7 @@
 
   <ItemGroup>
     <PackageReference Remove="Internal.AspNetCore.Sdk" />
-    <PackageReference Include="NuGet.Build.Tasks" Version="4.9.1" />
+    <PackageReference Include="NuGet.Build.Tasks" Version="4.9.3" />
     <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="2.1.0" />
   </ItemGroup>
 

+ 3 - 3
build/tasks/tasks.sln

@@ -1,8 +1,8 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26124.0
-MinimumVisualStudioVersion = 15.0.26124.0
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RepoTasks", "RepoTasks.csproj", "{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}"
 EndProject
 Global

+ 4 - 4
docs/BuildFromSource.md

@@ -11,12 +11,12 @@ See https://github.com/aspnet/AspNetCore/labels/area-infrastructure for known is
 
 Building ASP.NET Core on Windows requires:
 
-* Windows 7 or higher
+* Windows 10
 * At least 10 GB of disk space and a good internet connection (our build scripts download a lot of tools and dependencies)
-* Visual Studio 2017. <https://visualstudio.com>
-    * To install the exact required components, run [eng/scripts/InstallVisualStudio.ps1](/eng/scripts/InstallVisualStudio.ps1). This will use VS2017.
+* Visual Studio **2019 Preview**. <https://visualstudio.com>
+    * To install the exact required components, run [eng/scripts/InstallVisualStudio.ps1](/eng/scripts/InstallVisualStudio.ps1).
         ```ps1
-        PS> ./eng/scripts/InstallVisualStudio.ps1 -Edition Community
+        PS> ./eng/scripts/InstallVisualStudio.ps1
         ```
 * Git. <https://git-scm.org>
 * (Optional) some optional components, like the SignalR Java client, may require

+ 0 - 1
eng/Dependencies.props

@@ -112,7 +112,6 @@ and are generated based on the last package release.
     <LatestPackageReference Include="Microsoft.IdentityModel.Protocols.WsFederation" Version="$(MicrosoftIdentityModelProtocolsWsFederationPackageVersion)" />
     <LatestPackageReference Include="Microsoft.Internal.AspNetCore.H2Spec.All" Version="$(MicrosoftInternalAspNetCoreH2SpecAllPackageVersion)" />
     <LatestPackageReference Include="Microsoft.JSInterop" Version="$(MicrosoftJSInteropPackageVersion)" />
-    <LatestPackageReference Include="Microsoft.NET.Sdk.Razor" Version="$(MicrosoftNETSdkRazorPackageVersion)" />
     <LatestPackageReference Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftNETTestSdkPackageVersion)" />
     <LatestPackageReference Include="Microsoft.NETCore.Windows.ApiSets" Version="$(MicrosoftNETCoreWindowsApiSetsPackageVersion)" />
     <LatestPackageReference Include="Microsoft.Owin.Security.Cookies" Version="$(MicrosoftOwinSecurityCookiesPackageVersion)" />

+ 5 - 0
eng/Version.Details.xml

@@ -371,6 +371,11 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
+    <!-- Listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 -->
+    <Dependency Name="Microsoft.NETCore.Platforms" Version="3.0.0-preview.19109.6">
+      <Uri>https://github.com/dotnet/corefx</Uri>
+      <Sha>0abec4390b30fdda97dc496594f9b1f9c9b20e17</Sha>
+    </Dependency>
     <Dependency Name="Internal.AspNetCore.Analyzers" Version="3.0.0-preview3.19115.4">
       <Uri>https://github.com/aspnet/Extensions</Uri>
       <Sha>321f30556d63ec8af6eb0bc43d534b6b2e5458a0</Sha>

+ 3 - 1
eng/Versions.props

@@ -41,6 +41,8 @@
     <SystemServiceProcessServiceControllerPackageVersion>4.6.0-preview.19109.6</SystemServiceProcessServiceControllerPackageVersion>
     <SystemTextEncodingsWebPackageVersion>4.6.0-preview.19109.6</SystemTextEncodingsWebPackageVersion>
     <SystemThreadingChannelsPackageVersion>4.6.0-preview.19109.6</SystemThreadingChannelsPackageVersion>
+    <!-- Only listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 -->
+    <MicrosoftNETCorePlatformsPackageVersion>3.0.0-preview.19109.6</MicrosoftNETCorePlatformsPackageVersion>
     <!-- Packages from aspnet/Extensions -->
     <InternalAspNetCoreAnalyzersPackageVersion>3.0.0-preview3.19115.4</InternalAspNetCoreAnalyzersPackageVersion>
     <MicrosoftAspNetCoreAnalyzerTestingPackageVersion>3.0.0-preview3.19115.4</MicrosoftAspNetCoreAnalyzerTestingPackageVersion>
@@ -127,7 +129,7 @@
   <PropertyGroup Label="Manual">
     <!-- Build tool dependencies -->
     <InternalAspNetCoreSdkPackageVersion>$(KoreBuildVersion)</InternalAspNetCoreSdkPackageVersion>
-    <InternalAspNetCoreSdkPackageVersion Condition=" '$(KoreBuildVersion)' == '' ">3.0.0-build-20190130.1</InternalAspNetCoreSdkPackageVersion>
+    <InternalAspNetCoreSdkPackageVersion Condition=" '$(KoreBuildVersion)' == '' ">3.0.0-build-20190219.1</InternalAspNetCoreSdkPackageVersion>
     <MicrosoftNETFrameworkReferenceAssembliesPackageVersion>1.0.0-alpha-004</MicrosoftNETFrameworkReferenceAssembliesPackageVersion>
     <MicrosoftNETTestSdkPackageVersion>15.9.0</MicrosoftNETTestSdkPackageVersion>
     <MicrosoftSourceLinkGitHubPackageVersion>1.0.0-beta2-18618-05</MicrosoftSourceLinkGitHubPackageVersion>

+ 20 - 0
eng/Workarounds.props

@@ -0,0 +1,20 @@
+<!-- Use this file to workaround issues. List the issue tracking the item to fix so we can remove the workaround when the issue is resolved. -->
+<Project>
+  <!-- Workaround https://github.com/Microsoft/msbuild/issues/4150 -->
+  <!-- Evaluate this import here so we can override WixTargetsPath before wix.targets is imported -->
+  <PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.wixproj'">
+    <MSBuildProjectExtensionsPath>$(BaseIntermediateOutputPath)</MSBuildProjectExtensionsPath>
+    <MSBuildProjectExtensionsPath Condition="'$(MSBuildProjectExtensionsPath)' == ''">$(MSBuildProjectDir)\obj\</MSBuildProjectExtensionsPath>
+  </PropertyGroup>
+  <Import Project="$(MSBuildProjectExtensionsPath)$(MSBuildProjectFile).*.props" Condition=" '$(MSBuildProjectExtension)' == '.wixproj' " />
+  <PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.wixproj'">
+    <!-- Suppress double-import in eng/targets/Wix.Common.props -->
+    <_ProjectExtensionsWereImported>true</_ProjectExtensionsWereImported>
+    <WixTargetsPath>$(WixInstallPath)\wix2010.targets</WixTargetsPath>
+  </PropertyGroup>
+
+  <!-- Workaround https://developercommunity.visualstudio.com/content/problem/434385/vs2019-preview-2-targetframeworkversion-or-platfor.html -->
+  <PropertyGroup>
+    <VCToolsVersion Condition = "'$(VCToolsVersion)' == ''" >14.16.27023</VCToolsVersion>
+  </PropertyGroup>
+</Project>

+ 14 - 0
eng/Workarounds.targets

@@ -1,5 +1,19 @@
 <!-- Use this file to workaround issues. List the issue tracking the item to fix so we can remove the workaround when the issue is resolved. -->
 <Project>
+  <!--
+    Workaround https://github.com/aspnet/AspNetCore/issues/4257.
+    The web sdk adds an implicit framework reference. This removes it until we can update our build to use framework references.
+  -->
+  <ItemGroup>
+    <FrameworkReference Remove="Microsoft.AspNetCore.App" />
+    <!-- Required because the Razor SDK will generate attributes -->
+    <Reference Include="Microsoft.AspNetCore.Mvc" Condition="'$(UsingMicrosoftNETSdkWeb)' == 'true' AND '$(TargetFrameworkIdentifier)' == '.NETCoreApp'" />
+  </ItemGroup>
+
+  <!-- Workaround https://github.com/dotnet/cli/issues/10528 -->
+  <PropertyGroup>
+    <BundledNETCorePlatformsPackageVersion>$(MicrosoftNETCorePlatformsPackageVersion)</BundledNETCorePlatformsPackageVersion>
+  </PropertyGroup>
 
   <!-- Workaround https://github.com/aspnet/AspNetCore/issues/7503. This chains GenerateSourceLinkFile before razor component targets run. -->
   <Target Name="_EnsureSourceLinkHappensBeforeRazorComponentGeneration"

+ 18 - 6
eng/scripts/CodeCheck.ps1

@@ -33,14 +33,15 @@ function LogError {
 }
 
 try {
-    #
-    # Solutions
-    #
-
     if ($ci) {
+        # Install dotnet.exe
         & $repoRoot/build.ps1 -ci -norestore /t:InstallDotNet
     }
 
+    #
+    # Versions.props and Version.Details.xml
+    #
+
     Write-Host "Checking that Versions.props and Version.Details.xml match"
     [xml] $versionProps = Get-Content "$repoRoot/eng/Versions.props"
     [xml] $versionDetails = Get-Content "$repoRoot/eng/Version.Details.xml"
@@ -79,6 +80,10 @@ try {
             -filepath "$repoRoot\eng\Versions.props"
     }
 
+    #
+    # Solutions
+    #
+
     Write-Host "Checking that solutions are up to date"
 
     Get-ChildItem "$repoRoot/*.sln" -Recurse `
@@ -91,7 +96,7 @@ try {
         $slnDir = Split-Path -Parent $_
         $sln = $_
         & dotnet sln $_ list `
-            | ? { $_ -ne 'Project(s)' -and $_ -ne '----------' } `
+            | ? { $_ -like '*proj' } `
             | % {
                 $proj = Join-Path $slnDir $_
                 if (-not (Test-Path $proj)) {
@@ -121,9 +126,16 @@ try {
     }
 
     Write-Host "Run git diff to check for pending changes"
-    $changedFiles = git --no-pager diff --ignore-space-at-eol --name-only
+
+    # Redirect stderr to stdout because PowerShell does not consistently handle output to stderr
+    $changedFiles = & cmd /c 'git --no-pager diff --ignore-space-at-eol --name-only 2>&1'
+
     if ($changedFiles) {
         foreach ($file in $changedFiles) {
+            if (($file -like 'warning:*') -or ($file -like 'The file will have its original line endings*')) {
+                # git might emit warnings to stderr about CRLF vs LR, which can vary from machine to machine based on git's configuration
+                continue
+            }
             $filePath = Resolve-Path "${repoRoot}/${file}"
             LogError "Generated code is not up to date in $file." -filepath $filePath
             & git --no-pager diff --ignore-space-at-eol $filePath

+ 1 - 1
eng/scripts/GenerateProjectList.ps1

@@ -5,4 +5,4 @@ $ErrorActionPreference = 'stop'
 
 $repoRoot = Resolve-Path "$PSScriptRoot/../.."
 
-& "$repoRoot\build.ps1" -ci:$ci -all /t:GenerateProjectList
+& "$repoRoot\build.ps1" -ci:$ci -NoRestore -all /t:GenerateProjectList

+ 21 - 15
eng/scripts/InstallVisualStudio.ps1

@@ -3,14 +3,6 @@
     Installs or updates Visual Studio on a local developer machine.
 .DESCRIPTION
     This installs Visual Studio along with all the workloads required to contribute to this repository.
-.PARAMETER Edition
-    Must be one of these values:
-
-        Community
-        Professional
-        Enterprise
-
-    Selects which 'offering' of Visual Studio to install.
 
 .PARAMETER InstallPath
     The location of Visual Studio
@@ -20,18 +12,31 @@
     https://visualstudio.com
     https://github.com/aspnet/AspNetCore/blob/master/docs/BuildFromSource.md
 .EXAMPLE
-    To install VS 2017 Community, run
+    To install VS 2019 Preview, run this command in PowerShell:
 
-        InstallVisualStudio.ps1 -Edition Community
+        .\InstallVisualStudio.ps1
 #>
 [CmdletBinding(DefaultParameterSetName = 'Default')]
 param(
-    [ValidateSet('Community', 'Professional', 'Enterprise')]
-    [string]$Edition,
+    # TODO - once VS 2019 16.0 RTM is released, make this a parameter again
+    # .PARAMETER Edition
+    # Must be one of these values:
+
+    # Community
+    # Professional
+    # Enterprise
+
+    # Selects which 'offering' of Visual Studio to install.
+
+    # [ValidateSet('Community', 'Professional', 'Enterprise')]
+    # [string]$Edition,
     [string]$InstallPath,
     [switch]$Passive
 )
 
+# VS previews are only available publicly as 'Enterprise' versions. They should be available to the community to use without a paid license.
+$Edition = 'Enterprise'
+
 if (-not $Edition) {
     Write-Host "You must specify a value for the -Edition parameter which selects the kind of Visual Studio to install." -f Red
     Write-Host "Run ``Get-Help $PSCommandPath`` for more details." -f Red
@@ -49,10 +54,11 @@ mkdir $intermedateDir -ErrorAction Ignore | Out-Null
 
 $bootstrapper = "$intermedateDir\vsinstaller.exe"
 $ProgressPreference = 'SilentlyContinue' # Workaround PowerShell/PowerShell#2138
-Invoke-WebRequest -Uri "https://aka.ms/vs/15/release/vs_$($Edition.ToLowerInvariant()).exe" -OutFile $bootstrapper
+Invoke-WebRequest -Uri "https://aka.ms/vs/16/pre/vs_$($Edition.ToLowerInvariant()).exe" -OutFile $bootstrapper
 
 if (-not $InstallPath) {
-    $InstallPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2017\$Edition"
+    # $InstallPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2019\$Edition"
+    $InstallPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2019\Preview"
 }
 
 # no backslashes - this breaks the installer
@@ -75,7 +81,7 @@ if ($Passive) {
 }
 
 Write-Host ""
-Write-Host "Installing Visual Studio 2017 $Edition" -f Magenta
+Write-Host "Installing Visual Studio 2019 $Edition" -f Magenta
 Write-Host ""
 Write-Host "Running '$bootstrapper $arguments'"
 

+ 11 - 14
eng/scripts/vs.json

@@ -1,30 +1,27 @@
 {
-    "channelUri": "https://aka.ms/vs/15/release/channel",
-    "channelId": "VisualStudio.15.Release",
+    "channelUri": "https://aka.ms/vs/16/pre/channel",
+    "channelId": "VisualStudio.16.Preview",
     "includeRecommended": false,
     "addProductLang": [
         "en-US"
     ],
     "add": [
-        "Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
-        "Microsoft.VisualStudio.Component.Windows81SDK",
-        "Microsoft.Net.Component.4.7.2.TargetingPack",
-        "Microsoft.Net.Component.4.7.2.SDK",
+        "Microsoft.Net.Component.4.6.1.TargetingPack",
+        "Microsoft.Net.Component.4.6.2.TargetingPack",
         "Microsoft.Net.Component.4.7.1.TargetingPack",
+        "Microsoft.Net.Component.4.7.2.SDK",
+        "Microsoft.Net.Component.4.7.2.TargetingPack",
         "Microsoft.Net.Component.4.7.TargetingPack",
-        "Microsoft.Net.Component.4.6.2.TargetingPack",
-        "Microsoft.Net.Component.4.6.1.TargetingPack",
-        "Microsoft.Net.Component.4.6.TargetingPack",
-        "Microsoft.Net.Component.4.5.2.TargetingPack",
-        "Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Win81",
         "Microsoft.VisualStudio.Component.Azure.Storage.Emulator",
         "Microsoft.VisualStudio.Component.VC.ATL",
-        "Microsoft.VisualStudio.Component.Windows10SDK.15063.Desktop",
+        "Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
+        "Microsoft.VisualStudio.Component.VC.v141.ATL",
+        "Microsoft.VisualStudio.Component.VC.v141.x86.x64",
         "Microsoft.VisualStudio.Component.Windows10SDK.17134",
         "Microsoft.VisualStudio.Workload.ManagedDesktop",
-        "Microsoft.VisualStudio.Workload.NetWeb",
-        "Microsoft.VisualStudio.Workload.NetCoreTools",
         "Microsoft.VisualStudio.Workload.NativeDesktop",
+        "Microsoft.VisualStudio.Workload.NetCoreTools",
+        "Microsoft.VisualStudio.Workload.NetWeb",
         "Microsoft.VisualStudio.Workload.VisualStudioExtension"
     ]
 }

+ 12 - 0
eng/targets/CSharp.Common.props

@@ -24,6 +24,18 @@
     <PackageReference Include="Internal.AspNetCore.Sdk" PrivateAssets="All" Version="$(InternalAspNetCoreSdkPackageVersion)" AllowExplicitReference="true" />
   </ItemGroup>
 
+  <ItemGroup Condition="'$(UsingMicrosoftNETSdkWeb)' == 'true' OR '$(RazorSdkCurrentVersionProps)' != ''">
+    <!--
+      Use the Razor SDK as a package reference. The version of the .NET Core SDK we build with often contains a version of the Razor SDK
+      several versions older than latest. To avoid a cyclical dependency, this package reference is added to override the bundled version.
+    -->
+    <PackageReference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" Version="$(MicrosoftNETSdkRazorPackageVersion)" AllowExplicitReference="true" />
+  </ItemGroup>
+
+  <ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' AND '$(IsHelixJob)' == 'true' ">
+    <PackageReference Include="xunit.runner.console" Version="$(XunitRunnerConsolePackageVersion)" AllowExplicitReference="true" />
+  </ItemGroup>
+
   <ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' AND '$(OS)' != 'Windows_NT' ">
     <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="$(MicrosoftNETFrameworkReferenceAssembliesPackageVersion)" PrivateAssets="All" AllowExplicitReference="true" />
   </ItemGroup>

+ 1 - 1
eng/targets/Wix.Common.props

@@ -17,7 +17,7 @@
     <NuGetRestoreTargets Condition="'$(NuGetRestoreTargets)'==''">$(MSBuildToolsPath)\NuGet.targets</NuGetRestoreTargets>
   </PropertyGroup>
 
-  <Import Project="$(MSBuildProjectExtensionsPath)$(MSBuildProjectFile).*.props" />
+  <Import Project="$(MSBuildProjectExtensionsPath)$(MSBuildProjectFile).*.props" Condition="'$(_ProjectExtensionsWereImported)' != 'true'" />
 
   <ItemGroup>
     <PackageReference Include="Wix" Version="$(WixVersion)" />

+ 3 - 3
eng/tools/tools.sln

@@ -1,8 +1,8 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26124.0
-MinimumVisualStudioVersion = 15.0.26124.0
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BaselineGenerator", "BaselineGenerator\BaselineGenerator.csproj", "{CF76A947-3A72-4824-87E6-BF029D84218B}"
 EndProject
 Global

+ 2 - 2
global.json

@@ -1,8 +1,8 @@
 {
   "sdk": {
-    "version": "3.0.100-preview-009750"
+    "version": "3.0.100-preview-010184"
   },
   "msbuild-sdks": {
-    "Internal.AspNetCore.Sdk": "3.0.0-build-20190205.1"
+    "Internal.AspNetCore.Sdk": "3.0.0-build-20190219.1"
   }
 }

+ 2 - 2
korebuild-lock.txt

@@ -1,2 +1,2 @@
-version:3.0.0-build-20190205.1
-commithash:d311c7e5300aed235a1f902a53dd9be02e5ac861
+version:3.0.0-build-20190219.1
+commithash:7effe75f1408a86a9c32b592192fea1097bdd3a3

+ 6 - 3
korebuild.json

@@ -12,11 +12,14 @@
         "Windows"
       ],
       "includePrerelease": true,
-      "versionRange": "[15.8, 16.0)",
+      "versionRange": "[16.0.28608.199, 17.0)",
       "requiredWorkloads": [
-        "Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
         "Microsoft.VisualStudio.Component.VC.ATL",
-        "Microsoft.VisualStudio.Component.Windows10SDK.17134"
+        "Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
+        "Microsoft.VisualStudio.Component.VC.v141.ATL",
+        "Microsoft.VisualStudio.Component.VC.v141.x86.x64",
+        "Microsoft.VisualStudio.Component.Windows10SDK.17134",
+        "Microsoft.VisualStudio.Workload.VisualStudioExtension"
       ]
     }
   }

+ 3 - 3
src/Antiforgery/Antiforgery.sln

@@ -1,7 +1,7 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26208.0
-MinimumVisualStudioVersion = 15.0.26730.03
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{71D070C4-B325-48F7-9F25-DD4E91C2BBCA}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{6EDD8B57-4DE8-4246-A6A3-47ECD92740B4}"

+ 3 - 3
src/Azure/Azure.sln

@@ -1,8 +1,8 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26124.0
-MinimumVisualStudioVersion = 15.0.26124.0
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AzureAD", "AzureAD", "{B931802A-45BB-49A4-9919-B36C827100AC}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Authentication.AzureAD.UI", "Authentication.AzureAD.UI", "{312795E1-D5E2-4021-8FEA-342CA6F14CC8}"

+ 0 - 1
src/Azure/AzureAD/Authentication.AzureAD.UI/src/Microsoft.AspNetCore.Authentication.AzureAD.UI.csproj

@@ -19,7 +19,6 @@
     <Reference Include="Microsoft.AspNetCore.Authentication.JwtBearer" />
     <Reference Include="Microsoft.AspNetCore.Authentication.Cookies" />
     <Reference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 0 - 1
src/Azure/AzureAD/Authentication.AzureADB2C.UI/src/Microsoft.AspNetCore.Authentication.AzureADB2C.UI.csproj

@@ -19,7 +19,6 @@
     <Reference Include="Microsoft.AspNetCore.Authentication.JwtBearer" />
     <Reference Include="Microsoft.AspNetCore.Authentication.Cookies" />
     <Reference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 0 - 1
src/Azure/AzureAD/samples/AzureADB2CSample/AzureADB2CSample.csproj

@@ -17,7 +17,6 @@
     <Reference Include="Microsoft.Extensions.Configuration.Json" />
     <Reference Include="Microsoft.Extensions.Logging.Console" />
     <Reference Include="Microsoft.Extensions.Logging.Debug" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 0 - 1
src/Azure/AzureAD/test/testassets/AzureAD.WebSite/AzureAD.WebSite.csproj

@@ -11,7 +11,6 @@
     <Reference Include="Microsoft.AspNetCore.DataProtection.Extensions" />
     <Reference Include="Microsoft.AspNetCore" />
     <Reference Include="Microsoft.AspNetCore.Mvc" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 3 - 3
src/Components/Blazor/Templates/src/content/BlazorHosted-CSharp/BlazorHosted-CSharp.sln

@@ -1,7 +1,7 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27130.2027
-MinimumVisualStudioVersion = 15.0.26124.0
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorHosted-CSharp.Server", "BlazorHosted-CSharp.Server\BlazorHosted-CSharp.Server.csproj", "{650B3CE7-2E93-4CC4-9F46-466686815EAA}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorHosted-CSharp.Client", "BlazorHosted-CSharp.Client\BlazorHosted-CSharp.Client.csproj", "{5990939C-7E7B-4CFA-86FF-44CA5756498A}"

+ 0 - 1
src/Components/Blazor/testassets/HostedInAspNet.Client/HostedInAspNet.Client.csproj

@@ -8,7 +8,6 @@
 
   <ItemGroup>
     <Reference Include="Microsoft.AspNetCore.Blazor" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 0 - 1
src/Components/Blazor/testassets/HostedInAspNet.Server/HostedInAspNet.Server.csproj

@@ -14,7 +14,6 @@
     <Reference Include="Microsoft.AspNetCore.Diagnostics" />
     <Reference Include="Microsoft.AspNetCore.Mvc" />
     <Reference Include="Microsoft.AspNetCore" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 0 - 1
src/Components/Blazor/testassets/Microsoft.AspNetCore.Blazor.E2EPerformance/Microsoft.AspNetCore.Blazor.E2EPerformance.csproj

@@ -7,6 +7,5 @@
 
   <ItemGroup>
     <Reference Include="Microsoft.AspNetCore.Blazor" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 </Project>

+ 0 - 1
src/Components/Blazor/testassets/MonoSanityClient/MonoSanityClient.csproj

@@ -12,6 +12,5 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 </Project>

+ 0 - 1
src/Components/Blazor/testassets/StandaloneApp/StandaloneApp.csproj

@@ -7,6 +7,5 @@
 
   <ItemGroup>
     <Reference Include="Microsoft.AspNetCore.Blazor" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 </Project>

+ 1 - 1
src/Components/Components.sln

@@ -2,7 +2,7 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio Version 16
 VisualStudioVersion = 16.0.28509.92
-MinimumVisualStudioVersion = 15.0.26124.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analyzers", "Analyzers", "{E059A46B-56E3-41E2-83F4-B5D180056F3B}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Components.Analyzers", "Analyzers\src\Microsoft.AspNetCore.Components.Analyzers.csproj", "{ECE91401-329E-4615-8684-8E910D2741C4}"

+ 0 - 1
src/Components/test/testassets/BasicTestApp/BasicTestApp.csproj

@@ -11,7 +11,6 @@
   <ItemGroup>
     <Reference Include="System.ComponentModel" />
     <Reference Include="Microsoft.AspNetCore.Blazor" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
   <ItemGroup>

+ 0 - 1
src/Components/test/testassets/ComponentsApp.App/ComponentsApp.App.csproj

@@ -10,7 +10,6 @@
   <ItemGroup>
     <Reference Include="Microsoft.Extensions.DependencyInjection" />
     <Reference Include="Microsoft.AspNetCore.Components" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 0 - 1
src/Components/test/testassets/ComponentsApp.Server/ComponentsApp.Server.csproj

@@ -6,7 +6,6 @@
 
   <ItemGroup>
     <Reference Include="Microsoft.AspNetCore" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
   <ItemGroup>

+ 0 - 1
src/Components/test/testassets/TestContentPackage/TestContentPackage.csproj

@@ -21,7 +21,6 @@
 
   <ItemGroup>
     <Reference Include="Microsoft.AspNetCore.Components" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 0 - 1
src/Components/test/testassets/TestServer/TestServer.csproj

@@ -10,7 +10,6 @@
     <Reference Include="Microsoft.AspNetCore.Mvc" />
     <Reference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" />
     <Reference Include="Microsoft.AspNetCore.Components.Server" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
   <ItemGroup>

+ 3 - 3
src/DataProtection/DataProtection.sln

@@ -1,8 +1,8 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26124.0
-MinimumVisualStudioVersion = 15.0.26124.0
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Abstractions", "Abstractions", "{ABD364B3-09A1-4CFE-8D26-FF6417DDEC84}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNetCore.DataProtection.Abstractions", "Abstractions\src\Microsoft.AspNetCore.DataProtection.Abstractions.csproj", "{18BE6FD1-1EB1-44AD-A3AE-398C990060F5}"

+ 3 - 3
src/DefaultBuilder/DefaultBuilder.sln

@@ -1,8 +1,8 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26124.0
-MinimumVisualStudioVersion = 15.0.26124.0
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleApp", "samples\SampleApp\SampleApp.csproj", "{C19108F8-667B-4CF9-B227-CDD2290224BC}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Tests", "test\Microsoft.AspNetCore.Tests\Microsoft.AspNetCore.Tests.csproj", "{1CD49F15-D381-4C7E-8E12-A85E7753B110}"

+ 0 - 8
src/Framework/pkg/Metapackage.targets

@@ -6,8 +6,6 @@
     <IncludeSymbols>false</IncludeSymbols>
     <!-- There is no API to check -->
     <EnableApiCheck>false</EnableApiCheck>
-    <!-- Manually control dependencies -->
-    <DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
     <!-- The only build output of a pkgproj is the project -->
     <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 
@@ -24,12 +22,6 @@
   <ItemGroup>
     <Content Include="$(IntermediateOutputPath)runtime.json" PackagePath="\" />
 
-    <PackageReference Include="Microsoft.NETCore.App">
-      <Version>$(MicrosoftNETCoreAppPackageVersion)</Version>
-      <PrivateAssets>All</PrivateAssets>
-      <AllowExplicitVersion>true</AllowExplicitVersion>
-    </PackageReference>
-
     <!-- Add version metadata. These are expected to match the metapackage version. -->
     <AspNetCoreAppReferenceAndPackage Update="@(AspNetCoreAppReferenceAndPackage)" Version="$(SharedFxVersion)" />
     <AspNetCoreAppReference Update="@(AspNetCoreAppReference)" Version="$(SharedFxVersion)" />

+ 3 - 1
src/Framework/ref/Microsoft.AspNetCore.App.Ref.csproj

@@ -81,7 +81,9 @@ This package is an internal implementation of the .NET Core SDK and is not meant
     <ItemGroup>
       <AspNetCoreReferenceAssemblyPath
           Include="@(ReferencePathWithRefAssemblies)"
-          Exclude="@(ReferencePathWithRefAssemblies->WithMetadataValue('NuGetPackageId', 'Microsoft.NETCore.App'))" />
+          Exclude="
+            @(ReferencePathWithRefAssemblies->WithMetadataValue('NuGetPackageId', 'Microsoft.NETCore.App'));
+            @(ReferencePathWithRefAssemblies->WithMetadataValue('ReferenceGrouping', 'Microsoft.NETCore.App'));" />
 
       <AspNetCoreReferenceDocXml Include="@(AspNetCoreReferenceAssemblyPath->'%(RootDir)%(Directory)%(FileName).xml')" />
 

+ 1 - 4
src/Framework/src/Microsoft.AspNetCore.App.shfxproj

@@ -11,10 +11,7 @@
     <RuntimeIdentifier>$(TargetRuntimeIdentifier)</RuntimeIdentifier>
     <TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
     <BaseSharedFrameworkName>Microsoft.NETCore.App</BaseSharedFrameworkName>
-    <RuntimeFrameworkVersion>$(MicrosoftNETCoreAppPackageVersion)</RuntimeFrameworkVersion>
-
-    <!-- shfxproj must be explicit about its dependencies. -->
-    <DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
+    <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
 
     <!-- Optimize the framework using the crossgen tool -->
     <CrossgenOutput>true</CrossgenOutput>

+ 10 - 16
src/Framework/src/SharedFx.targets

@@ -13,11 +13,12 @@ This targets file should only be imported by .shfxproj files.
       PreBuildEvent;
       ResolveReferences;
       GenerateSharedFxVersionsFile;
+      GenerateBuildDependencyFile;
       PrepareForPublish;
-      ComputeAndCopyFilesToPublishDirectory;
       GeneratePublishDependencyFile;
       GenerateSharedFxMetadataFiles;
-      GeneratePublishRuntimeConfigurationFile;
+      GenerateBuildRuntimeConfigurationFiles;
+      ComputeAndCopyFilesToPublishDirectory;
       CopySharedFxToOutput;
       CollectSharedFxOutput;
       PostBuildEvent;
@@ -92,8 +93,8 @@ This targets file should only be imported by .shfxproj files.
     <!-- Prevents runtimeconfig.dev.json from ending up in publish output. -->
     <ProjectRuntimeConfigDevFilePath>$(IntermediateOutputPath)$(SharedFxName).runtimeconfig.dev.json</ProjectRuntimeConfigDevFilePath>
     <!-- Redirects the output of GeneratePublishDependencyFile into obj/ because we need to do post-processing on the .deps.json file -->
-    <ProjectDepsFilePath>$(IntermediateOutputPath)$(SharedFxName).project.deps.json</ProjectDepsFilePath>
-    <PublishDepsFilePath>$(IntermediateOutputPath)$(SharedFxName).publish.deps.json</PublishDepsFilePath>
+    <ProjectDepsFilePath>$(IntermediateOutputPath)$(SharedFxName).intermediate.deps.json</ProjectDepsFilePath>
+    <PublishDepsFilePath>$(ProjectDepsFilePath)</PublishDepsFilePath>
 
     <!-- The output path of generated files -->
     <PublishRuntimeConfigFilePath>$(MetadataOutputPath)$(SharedFxName).runtimeconfig.json</PublishRuntimeConfigFilePath>
@@ -132,13 +133,6 @@ This targets file should only be imported by .shfxproj files.
   </ItemDefinitionGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.NETCore.App" Version="$(RuntimeFrameworkVersion)">
-      <Publish>true</Publish>
-      <PrivateAssets>All</PrivateAssets>
-      <ExcludeAssets>Native</ExcludeAssets>
-      <AllowExplicitVersion>true</AllowExplicitVersion>
-    </PackageReference>
-
     <!-- Add version metadata. These are expected to match the metapackage version. -->
     <AspNetCoreAppReferenceAndPackage Update="@(AspNetCoreAppReferenceAndPackage)" Version="$(SharedFxVersion)" />
     <AspNetCoreAppReference Update="@(AspNetCoreAppReference)" Version="$(SharedFxVersion)" />
@@ -209,12 +203,12 @@ This targets file should only be imported by .shfxproj files.
   <!-- Prepare the project to run crossgen. -->
   <Target Name="CopySharedFxToOutput" DependsOnTargets="_GetCopyToOutputItems;_BatchCopyToOutputIfNewer" />
 
-  <Target Name="_GetCopyToOutputItems" DependsOnTargets="RunResolvePackageDependencies;RunResolvePublishAssemblies">
+  <Target Name="_GetCopyToOutputItems" DependsOnTargets="RunResolvePackageDependencies;ComputeFilesToPublish">
     <ItemGroup>
-      <NativeAssetsToPublish Include="@(ResolvedAssembliesToPublish)" Condition="'%(AssetType)' == 'native' " />
-      <ResourceAssetsToPublish Include="@(ResolvedAssembliesToPublish)" Condition="'%(AssetType)' == 'resources'" />
-      <RuntimeAssetsToPublish Include="@(ResolvedAssembliesToPublish)" Condition="'%(AssetType)' == 'runtime'" />
-      <OtherAssemblies Include="@(ResolvedAssembliesToPublish)" Exclude="@(NativeAssetsToPublish);@(ResourceAssetsToPublish);@(RuntimeAssetsToPublish)" />
+      <NativeAssetsToPublish Include="@(_ResolvedCopyLocalPublishAssets)" Condition="'%(AssetType)' == 'native' " />
+      <ResourceAssetsToPublish Include="@(_ResolvedCopyLocalPublishAssets)" Condition="'%(AssetType)' == 'resources'" />
+      <RuntimeAssetsToPublish Include="@(_ResolvedCopyLocalPublishAssets)" Condition="'%(AssetType)' == 'runtime'" />
+      <OtherAssemblies Include="@(_ResolvedCopyLocalPublishAssets)" Exclude="@(NativeAssetsToPublish);@(ResourceAssetsToPublish);@(RuntimeAssetsToPublish)" />
     </ItemGroup>
 
     <Error Text="Unaccounted shared framework assemblies found: @(OtherAssemblies). These files have an unknown asset type." Condition="'@(OtherAssemblies)' != ''" />

+ 3 - 3
src/Hosting/Hosting.sln

@@ -1,8 +1,8 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27428.2037
-MinimumVisualStudioVersion = 10.0.40219.1
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Hosting", "Hosting\src\Microsoft.AspNetCore.Hosting.csproj", "{254295FC-35AF-4A45-A6F4-FF93C1B7CD8D}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Hosting.Tests", "Hosting\test\Microsoft.AspNetCore.Hosting.Tests.csproj", "{B2A631BD-744E-42FB-BA79-8F22BB27DA65}"

+ 1 - 1
src/Hosting/Server.IntegrationTesting/src/ApplicationPublisher.cs

@@ -105,7 +105,7 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting
             var architecture = deploymentParameters.RuntimeArchitecture;
             if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
             {
-                return "win7-" + architecture;
+                return "win-" + architecture;
             }
             if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
             {

+ 3 - 3
src/Http/HttpAbstractions.sln

@@ -1,8 +1,8 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.28307.136
-MinimumVisualStudioVersion = 15.0.26124.0
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Authentication.Abstractions", "Authentication.Abstractions", "{587C3D55-6092-4B86-99F5-E9772C9C1ADB}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Authentication.Abstractions", "Authentication.Abstractions\src\Microsoft.AspNetCore.Authentication.Abstractions.csproj", "{565B7B00-96A1-49B8-9753-9E045C6527A2}"

+ 0 - 1
src/Identity/ApiAuthorization.IdentityServer/samples/ApiAuthSample/ApiAuthSample.csproj

@@ -30,7 +30,6 @@
     <Reference Include="Microsoft.Extensions.Logging.Configuration" />
     <Reference Include="Microsoft.Extensions.Logging.Console" />
     <Reference Include="Microsoft.Extensions.Logging.Debug" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 3 - 3
src/Identity/Identity.sln

@@ -1,8 +1,8 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26124.0
-MinimumVisualStudioVersion = 15.0.26124.0
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{2D5D4577-0E39-4B04-B66A-70259284B91B}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ApiAuthSample", "ApiAuthorization.IdentityServer\samples\ApiAuthSample\ApiAuthSample.csproj", "{C2C3802C-5BA8-4BBB-8F16-BFC824739C95}"

+ 0 - 1
src/Identity/UI/src/Microsoft.AspNetCore.Identity.UI.csproj

@@ -35,7 +35,6 @@
     <Reference Include="Microsoft.AspNetCore.StaticFiles" />
     <Reference Include="Microsoft.Extensions.FileProviders.Embedded" />
     <Reference Include="Microsoft.Extensions.Identity.Stores" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
   <ItemGroup>

+ 0 - 1
src/Identity/testassets/Identity.DefaultUI.WebSite/Identity.DefaultUI.WebSite.csproj

@@ -39,7 +39,6 @@
     <Reference Include="Microsoft.Extensions.Logging.Configuration" />
     <Reference Include="Microsoft.Extensions.Logging.Console" />
     <Reference Include="Microsoft.Extensions.Logging.Debug" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 3 - 3
src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Common/Common.sln

@@ -1,8 +1,8 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27120.0
-MinimumVisualStudioVersion = 10.0.40219.1
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommonLib", "lib\CommonLib.vcxproj", "{B54A8F61-60DE-4AD9-87CA-D102F230678E}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reftrace", "reftrace\reftrace.vcxproj", "{A2599642-CBE5-4230-8511-3DC2D81874BE}"

+ 3 - 3
src/Installers/Windows/AspNetCoreModule-Setup/IIS-Setup/IIS-Setup.sln

@@ -1,8 +1,8 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26730.12
-MinimumVisualStudioVersion = 10.0.40219.1
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iisca", "iisca\lib\iisca.vcxproj", "{7324770C-0871-4D73-BE3D-5E2F3E9E1B1E}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommonLib", "IIS-Common\lib\CommonLib.vcxproj", "{B54A8F61-60DE-4AD9-87CA-D102F230678E}"

+ 3 - 3
src/Installers/Windows/Installers.sln

@@ -1,8 +1,8 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26124.0
-MinimumVisualStudioVersion = 15.0.26124.0
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aspnetcoreCA", "AspNetCoreModule-Setup\CustomAction\aspnetcoreCA.vcxproj", "{7C27E72F-54D0-4820-8CFA-5E4BE640974B}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iisca", "AspNetCoreModule-Setup\IIS-Setup\iisca\lib\iisca.vcxproj", "{7324770C-0871-4D73-BE3D-5E2F3E9E1B1E}"

+ 1 - 1
src/Middleware/Middleware.sln

@@ -2,7 +2,7 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio Version 16
 VisualStudioVersion = 16.0.28407.52
-MinimumVisualStudioVersion = 15.0.26124.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebSockets", "WebSockets", "{E0D9867D-C23D-43EB-8D9C-DE0398A25432}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{A86EE055-ACD3-4BAC-A51D-1B3C71067AE0}"

+ 0 - 1
src/Middleware/SpaServices/samples/Webpack/Webpack.csproj

@@ -16,7 +16,6 @@
     <Reference Include="Microsoft.AspNetCore.StaticFiles" />
     <Reference Include="Microsoft.Extensions.Logging.Debug" />
     <Reference Include="Microsoft.Extensions.Logging.Console" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" />
   </ItemGroup>
 
   <Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">

+ 3 - 3
src/MusicStore/MusicStore.sln

@@ -1,8 +1,8 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26730.12
-MinimumVisualStudioVersion = 15.0.26730.03
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MusicStore", "samples\MusicStore\MusicStore.csproj", "{3CFBED5D-2ED8-49DB-96FB-BDAA748DC5A0}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MusicStore.Test", "test\MusicStore.Test\MusicStore.Test.csproj", "{CA663205-77DE-4E55-B300-85594181B5A9}"

+ 1 - 2
src/MusicStore/samples/MusicStore/MusicStore.csproj

@@ -6,7 +6,7 @@
     <Description>Music store application on ASP.NET Core</Description>
     <TargetFramework>netcoreapp3.0</TargetFramework>
     <DefineConstants>$(DefineConstants);DEMO</DefineConstants>
-    <RuntimeIdentifiers Condition="'$(Configuration)' != 'RuntimeStore'">win7-x86;win7-x64;linux-x64;osx-x64</RuntimeIdentifiers>
+    <RuntimeIdentifiers>win-x86;win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
     <InProcessTestSite>true</InProcessTestSite>
   </PropertyGroup>
 
@@ -33,7 +33,6 @@
     <Reference Include="Microsoft.EntityFrameworkCore.InMemory" />
     <Reference Include="Microsoft.EntityFrameworkCore.SqlServer" />
     <Reference Include="Microsoft.Extensions.Configuration.CommandLine" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
   <Target Name="VerifyPrecompiledViews" AfterTargets="Publish">

+ 1 - 1
src/Mvc/Mvc.sln

@@ -2,7 +2,7 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio Version 16
 VisualStudioVersion = 16.0.28531.181
-MinimumVisualStudioVersion = 10.0.40219.1
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{DAAE4C74-D06F-4874-A166-33305D2643CE}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{3BA657BF-28B1-42DA-B5B0-1C4601FCF7B1}"

+ 0 - 2
src/Mvc/benchmarkapps/BasicViews/BasicViews.csproj

@@ -28,7 +28,6 @@
     <Reference Include="Microsoft.AspNetCore.Server.Kestrel" />
     <Reference Include="Microsoft.AspNetCore.StaticFiles" />
     <Reference Include="Microsoft.Extensions.Configuration.CommandLine" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
 
     <Reference Include="Microsoft.AspNetCore.Mvc" />
   </ItemGroup>
@@ -42,6 +41,5 @@
       DefaultRuntimeFrameworkVersion="$(MicrosoftAspNetCoreAppPackageVersion)"
       LatestRuntimeFrameworkVersion="$(MicrosoftAspNetCoreAppPackageVersion)"
       TargetingPackVersion="$(MicrosoftAspNetCoreAppPackageVersion)" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 </Project>

+ 0 - 2
src/Mvc/benchmarkapps/RazorRendering/RazorRendering.csproj

@@ -9,7 +9,6 @@
   <ItemGroup Condition="'$(BenchmarksTargetFramework)' == ''">
     <Reference Include="Microsoft.AspNetCore.Server.Kestrel" />
     <Reference Include="Microsoft.Extensions.Configuration.CommandLine" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
 
     <Reference Include="Microsoft.AspNetCore.Mvc" />
   </ItemGroup>
@@ -23,7 +22,6 @@
       DefaultRuntimeFrameworkVersion="$(MicrosoftAspNetCoreAppPackageVersion)"
       LatestRuntimeFrameworkVersion="$(MicrosoftAspNetCoreAppPackageVersion)"
       TargetingPackVersion="$(MicrosoftAspNetCoreAppPackageVersion)" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="Properties\" />

+ 0 - 1
src/Mvc/benchmarks/Microsoft.AspNetCore.Mvc.Performance.Views/Microsoft.AspNetCore.Mvc.Performance.Views.csproj

@@ -9,7 +9,6 @@
 
   <ItemGroup>
     <Reference Include="Microsoft.AspNetCore.Mvc" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 0 - 1
src/Mvc/samples/MvcSandbox/MvcSandbox.csproj

@@ -15,7 +15,6 @@
     <Reference Include="Microsoft.Extensions.Configuration.Json" />
     <Reference Include="Microsoft.Extensions.Logging.Console" />
     <Reference Include="Microsoft.Extensions.Logging.Debug" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 0 - 1
src/Mvc/test/WebSites/ApplicationModelWebSite/ApplicationModelWebSite.csproj

@@ -11,6 +11,5 @@
     <Reference Include="Microsoft.AspNetCore.Server.IISIntegration" />
     <Reference Include="Microsoft.AspNetCore.Server.Kestrel" />
     <Reference Include="Microsoft.AspNetCore.StaticFiles" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 </Project>

+ 0 - 1
src/Mvc/test/WebSites/BasicWebSite/BasicWebSite.csproj

@@ -22,6 +22,5 @@
     <Reference Include="Microsoft.AspNetCore.StaticFiles" />
     <Reference Include="Microsoft.AspNetCore.Diagnostics" />
     <Reference Include="Microsoft.AspNetCore.CookiePolicy" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 </Project>

+ 0 - 1
src/Mvc/test/WebSites/ControllersFromServicesWebSite/ControllersFromServicesWebSite.csproj

@@ -14,6 +14,5 @@
     <Reference Include="Microsoft.AspNetCore.Diagnostics" />
     <Reference Include="Microsoft.AspNetCore.StaticFiles" />
 
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 </Project>

+ 0 - 1
src/Mvc/test/WebSites/GenericHostWebSite/GenericHostWebSite.csproj

@@ -22,6 +22,5 @@
     <Reference Include="Microsoft.AspNetCore.Diagnostics" />
     <Reference Include="Microsoft.AspNetCore.CookiePolicy" />
     <Reference Include="Microsoft.Extensions.Hosting" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 </Project>

+ 0 - 1
src/Mvc/test/WebSites/HtmlGenerationWebSite/HtmlGenerationWebSite.csproj

@@ -12,6 +12,5 @@
     <Reference Include="Microsoft.AspNetCore.Server.Kestrel" />
     <Reference Include="Microsoft.AspNetCore.StaticFiles" />
 
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 </Project>

+ 0 - 1
src/Mvc/test/WebSites/RazorBuildWebSite/RazorBuildWebSite.csproj

@@ -20,7 +20,6 @@
     <Reference Include="Microsoft.AspNetCore.StaticFiles" />
     <Reference Include="Microsoft.AspNetCore.Diagnostics" />
 
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 0 - 1
src/Mvc/test/WebSites/RazorPagesClassLibrary/RazorPagesClassLibrary.csproj

@@ -11,7 +11,6 @@
 
   <ItemGroup>
     <Reference Include="Microsoft.AspNetCore.Mvc" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 0 - 1
src/Mvc/test/WebSites/RazorPagesWebSite/RazorPagesWebSite.csproj

@@ -15,6 +15,5 @@
     <Reference Include="Microsoft.AspNetCore.Server.Kestrel" />
     <Reference Include="Microsoft.AspNetCore.StaticFiles" />
 
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 </Project>

+ 0 - 1
src/Mvc/test/WebSites/RazorWebSite/RazorWebSite.csproj

@@ -15,6 +15,5 @@
     <Reference Include="Microsoft.Extensions.FileProviders.Embedded" />
     <Reference Include="Microsoft.AspNetCore.Diagnostics" />
 
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 </Project>

+ 0 - 1
src/Mvc/test/WebSites/RoutingWebSite/RoutingWebSite.csproj

@@ -16,6 +16,5 @@
     <Reference Include="Microsoft.AspNetCore.Server.Kestrel" />
     <Reference Include="Microsoft.AspNetCore.StaticFiles" />
 
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 </Project>

+ 0 - 1
src/Mvc/test/WebSites/SecurityWebSite/SecurityWebSite.csproj

@@ -12,6 +12,5 @@
     <Reference Include="Microsoft.AspNetCore.Authentication.Cookies" />
     <Reference Include="Microsoft.AspNetCore.Server.Kestrel" />
     <Reference Include="Microsoft.AspNetCore.Hosting" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 </Project>

+ 0 - 1
src/Mvc/test/WebSites/TagHelpersWebSite/TagHelpersWebSite.csproj

@@ -12,6 +12,5 @@
     <Reference Include="Microsoft.AspNetCore.Server.IISIntegration" />
     <Reference Include="Microsoft.AspNetCore.Server.Kestrel" />
     <Reference Include="Microsoft.AspNetCore.StaticFiles" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 </Project>

+ 3 - 2
src/ProjectTemplates/test/GenerateTestProps.targets

@@ -3,9 +3,10 @@
     <PropertyGroup>
       <PropsProperties>
         RestoreSources=$([MSBuild]::Escape("$(RestoreSources);$(ArtifactsShippingPackagesDir);$(ArtifactsNonShippingPackagesDir)"));
-        RuntimeFrameworkVersion=$(RuntimeFrameworkVersion);
+        MicrosoftNETCoreAppPackageVersion=$(MicrosoftNETCoreAppPackageVersion);
+        MicrosoftNETCorePlatformsPackageVersion=$(MicrosoftNETCorePlatformsPackageVersion);
         MicrosoftNETSdkRazorPackageVersion=$(MicrosoftNETSdkRazorPackageVersion);
-        MicrosoftAspNetCoreAppPackageVersion=$(SharedFxVersion)
+        MicrosoftAspNetCoreAppPackageVersion=$(SharedFxVersion);
       </PropsProperties>
     </PropertyGroup>
 

+ 12 - 2
src/ProjectTemplates/test/Helpers/ProcessEx.cs

@@ -1,17 +1,25 @@
-using Microsoft.Extensions.Internal;
-using System;
+using System;
 using System.Collections.Concurrent;
 using System.Collections.Generic;
 using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Reflection;
 using System.Runtime.InteropServices;
 using System.Text;
 using System.Threading.Tasks;
+using Microsoft.Extensions.Internal;
 using Xunit.Abstractions;
 
 namespace Templates.Test.Helpers
 {
     internal class ProcessEx : IDisposable
     {
+        private static readonly string NUGET_PACKAGES = typeof(ProcessEx).Assembly
+            .GetCustomAttributes<AssemblyMetadataAttribute>()
+            .First(attribute => attribute.Key == "TestPackageRestorePath")
+            .Value;
+
         private readonly ITestOutputHelper _output;
         private readonly Process _process;
         private readonly StringBuilder _stderrCapture;
@@ -39,6 +47,8 @@ namespace Templates.Test.Helpers
                 }
             }
 
+            startInfo.EnvironmentVariables["NUGET_PACKAGES"] = NUGET_PACKAGES;
+
             output.WriteLine($"==> {startInfo.FileName} {startInfo.Arguments} [{startInfo.WorkingDirectory}]");
             var proc = Process.Start(startInfo);
 

+ 1 - 30
src/ProjectTemplates/test/Helpers/TemplateTestBase.cs

@@ -22,7 +22,6 @@ namespace Templates.Test
         protected string ProjectName { get; set; }
         protected string ProjectGuid { get; set; }
         protected string TemplateOutputDir { get; set; }
-        protected bool UseRazorSdkPackage { get; set; } = true;
 
         public static ITestOutputHelper Output => _output.Value;
 
@@ -63,8 +62,6 @@ $@"<Project>
 
         protected void RunDotNetNew(string templateName, string auth = null, string language = null, bool useLocalDB = false, bool noHttps = false)
         {
-            SetAfterDirectoryBuildPropsContents();
-
             var args = $"new {templateName} --debug:custom-hive \"{TemplatePackageInstaller.CustomHivePath}\"";
 
             if (!string.IsNullOrEmpty(auth))
@@ -95,32 +92,6 @@ $@"<Project>
             }
         }
 
-        protected void SetAfterDirectoryBuildPropsContents()
-        {
-            var content = GetAfterDirectoryBuildPropsContent();
-            if (!string.IsNullOrEmpty(content))
-            {
-                content = "<Project>" + Environment.NewLine + content + Environment.NewLine + "</Project>";
-                File.WriteAllText(Path.Combine(TemplateOutputDir, "Directory.Build.After.props"), content);
-            }
-        }
-
-        protected virtual string GetAfterDirectoryBuildPropsContent()
-        {
-            var content = string.Empty;
-            if (UseRazorSdkPackage)
-            {
-                content +=
-@"
-<ItemGroup>
-    <PackageReference Include=""Microsoft.NET.Sdk.Razor"" Version=""$(MicrosoftNETSdkRazorPackageVersion)"" />
-</ItemGroup>
-";
-            }
-
-            return content;
-        }
-
         protected void RunDotNet(string arguments)
         {
             lock (DotNetNewLock)
@@ -180,7 +151,7 @@ $@"<Project>
         {
 
         }";
-            
+
             // This comparison can break depending on how GIT checked out newlines on different files.
             Assert.Contains(RemoveNewLines(emptyMigration), RemoveNewLines(contents));
         }

+ 4 - 0
src/ProjectTemplates/test/ProjectTemplates.Tests.csproj

@@ -39,6 +39,10 @@
       <_Parameter1>DotNetEfFullPath</_Parameter1>
       <_Parameter2>$([MSBuild]::EnsureTrailingSlash('$(NuGetPackageRoot)'))dotnet-ef/$(DotnetEfPackageVersion)/tools/netcoreapp3.0/any/dotnet-ef.dll</_Parameter2>
     </AssemblyAttribute>
+    <AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute">
+      <_Parameter1>TestPackageRestorePath</_Parameter1>
+      <_Parameter2>$([MSBuild]::EnsureTrailingSlash('$(RepositoryRoot)'))obj\template-restore\</_Parameter2>
+    </AssemblyAttribute>
   </ItemGroup>
 
 </Project>

+ 15 - 5
src/ProjectTemplates/test/TemplateTests.props.in

@@ -2,12 +2,17 @@
   <PropertyGroup>
     <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
     <RestoreSources>${RestoreSources}</RestoreSources>
-    <RuntimeFrameworkVersion>${RuntimeFrameworkVersion}</RuntimeFrameworkVersion>
-    <MicrosoftNETSdkRazorPackageVersion>${MicrosoftNETSdkRazorPackageVersion}</MicrosoftNETSdkRazorPackageVersion>
-    <AspNetCoreModuleName>AspNetCoreModuleV2</AspNetCoreModuleName>
+    <!-- Workaround https://github.com/dotnet/cli/issues/10528 -->
+    <BundledNETCorePlatformsPackageVersion>${MicrosoftNETCorePlatformsPackageVersion}</BundledNETCorePlatformsPackageVersion>
   </PropertyGroup>
 
   <ItemGroup>
+    <KnownFrameworkReference
+      Update="Microsoft.NETCore.App"
+      DefaultRuntimeFrameworkVersion="${MicrosoftNETCoreAppPackageVersion}"
+      LatestRuntimeFrameworkVersion="${MicrosoftNETCoreAppPackageVersion}"
+      TargetingPackVersion="${MicrosoftNETCoreAppPackageVersion}" />
+
     <KnownFrameworkReference
       Update="Microsoft.AspNetCore.App"
       DefaultRuntimeFrameworkVersion="${MicrosoftAspNetCoreAppPackageVersion}"
@@ -15,7 +20,12 @@
       TargetingPackVersion="${MicrosoftAspNetCoreAppPackageVersion}" />
   </ItemGroup>
 
-  <ItemGroup Condition="'$(TargetFramework)' != 'netstandard2.0'" >
-    <FrameworkReference Include="Microsoft.AspNetCore.App" />
+  <ItemGroup Condition="'$(UsingMicrosoftNETSdkWeb)' == 'true' OR '$(RazorSdkCurrentVersionProps)' != ''">
+    <!--
+      Use the Razor SDK as a package reference. The version of the .NET Core SDK we build with often contains a version of the Razor SDK
+      several versions older than latest. To avoid a cyclical dependency, this package reference is added to override the bundled version.
+    -->
+    <PackageReference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" Version="${MicrosoftNETSdkRazorPackageVersion}" />
   </ItemGroup>
+
 </Project>

+ 3 - 3
src/Razor/Razor.sln

@@ -1,8 +1,8 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26124.0
-MinimumVisualStudioVersion = 15.0.26124.0
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F8C12DD6-659D-405A-AA27-FB22AD92A010}"
 	ProjectSection(SolutionItems) = preProject
 		.editorconfig = .editorconfig

+ 3 - 3
src/Security/AuthSamples.sln

@@ -1,7 +1,7 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27130.2003
-MinimumVisualStudioVersion = 10.0.40219.1
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{CA4538F5-9DA8-4139-B891-A13279889F79}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{DA474CFD-7419-4747-A583-CCDC1FF71EB5}"

+ 1 - 1
src/Security/Security.sln

@@ -1,7 +1,7 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio Version 16
 VisualStudioVersion = 16.0.28407.52
-MinimumVisualStudioVersion = 15.0.26730.03
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Authorization", "Authorization", "{F6A3381D-978A-4CBF-BC72-862FB75CD6AF}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Authentication", "Authentication", "{79C549BA-2932-450A-B87D-635879361343}"

+ 0 - 1
src/Security/samples/ClaimsTransformation/ClaimsTransformation.csproj

@@ -10,7 +10,6 @@
     <Reference Include="Microsoft.AspNetCore.Authentication.Cookies" />
     <Reference Include="Microsoft.AspNetCore.Mvc" />
     <Reference Include="Microsoft.AspNetCore.StaticFiles" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 0 - 1
src/Security/samples/Cookies/Cookies.csproj

@@ -10,7 +10,6 @@
     <Reference Include="Microsoft.AspNetCore.Authentication.Cookies" />
     <Reference Include="Microsoft.AspNetCore.Mvc" />
     <Reference Include="Microsoft.AspNetCore.StaticFiles" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 0 - 1
src/Security/samples/CustomPolicyProvider/CustomPolicyProvider.csproj

@@ -10,6 +10,5 @@
     <Reference Include="Microsoft.AspNetCore.Authentication.Cookies" />
     <Reference Include="Microsoft.AspNetCore.Authorization" />
     <Reference Include="Microsoft.AspNetCore.Mvc" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 </Project>

+ 0 - 1
src/Security/samples/DynamicSchemes/DynamicSchemes.csproj

@@ -21,6 +21,5 @@
     <Reference Include="Microsoft.Extensions.Configuration.UserSecrets" />
     <Reference Include="Microsoft.Extensions.Logging.Console" />
     <Reference Include="Microsoft.Extensions.Logging.Debug" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 </Project>

+ 0 - 1
src/Security/samples/Identity.ExternalClaims/Identity.ExternalClaims.csproj

@@ -26,6 +26,5 @@
     <Reference Include="Microsoft.Extensions.Configuration.UserSecrets" />
     <Reference Include="Microsoft.Extensions.Logging.Console" />
     <Reference Include="Microsoft.Extensions.Logging.Debug" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 </Project>

+ 0 - 1
src/Security/samples/PathSchemeSelection/PathSchemeSelection.csproj

@@ -10,7 +10,6 @@
     <Reference Include="Microsoft.AspNetCore.Authentication.Cookies" />
     <Reference Include="Microsoft.AspNetCore.Mvc" />
     <Reference Include="Microsoft.AspNetCore.StaticFiles" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 0 - 1
src/Security/samples/StaticFilesAuth/StaticFilesAuth.csproj

@@ -38,7 +38,6 @@
     <Reference Include="Microsoft.AspNetCore.Authorization.Policy" />
     <Reference Include="Microsoft.AspNetCore.Mvc" />
     <Reference Include="Microsoft.AspNetCore.StaticFiles" />
-    <Reference Include="Microsoft.NET.Sdk.Razor" PrivateAssets="All" />
   </ItemGroup>
 
 </Project>

+ 3 - 3
src/Servers/FunctionalTests.sln

@@ -1,8 +1,8 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26124.0
-MinimumVisualStudioVersion = 15.0.26124.0
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ServerComparison.FunctionalTests", "test\FunctionalTests\ServerComparison.FunctionalTests.csproj", "{78018310-02F8-4BB8-A8E2-E88AF7A7F51E}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_dependencies", "_dependencies", "{25B4D0F2-96D1-4F34-896E-ABA1E803A230}"

+ 3 - 3
src/Servers/HttpSys/HttpSysServer.sln

@@ -1,7 +1,7 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26730.10
-MinimumVisualStudioVersion = 15.0.26730.03
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.0.0
+MinimumVisualStudioVersion = 16.0.28608.199
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{99D5E5F3-88F5-4CCF-8D8C-717C8925DF09}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{E183C826-1360-4DFF-9994-F33CED5C8525}"

Some files were not shown because too many files changed in this diff