diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml index eb38671015..6070086773 100644 --- a/.azure/pipelines/ci.yml +++ b/.azure/pipelines/ci.yml @@ -254,6 +254,38 @@ stages: - name: Windows_arm_Packages path: artifacts/packages/ + # Build Windows ARM64 + - template: jobs/default-build.yml + parameters: + codeSign: true + jobName: Windows_64_build + jobDisplayName: "Build: Windows ARM64" + agentOs: Windows + buildArgs: + -arch arm64 + -sign + -pack + -noBuildNodeJS + -noBuildJava + /bl:artifacts/log/build.win-arm64.binlog + /p:DotNetSignType=$(_SignType) + /p:OnlyPackPlatformSpecificPackages=true + /p:AssetManifestFileName=aspnetcore-win-arm64.xml + $(_BuildArgs) + $(_PublishArgs) + $(_InternalRuntimeDownloadArgs) + installNodeJs: false + installJdk: false + artifacts: + - name: Windows_arm64_Logs + path: artifacts/log/ + publishOnError: true + includeForks: true + - name: Windows_arm64_Packages + path: artifacts/packages/ + - name: Windows_arm64_Installers + path: artifacts/installers/ + # Build MacOS - template: jobs/default-build.yml parameters: @@ -683,7 +715,7 @@ stages: # Helix ARM64 - template: jobs/default-build.yml parameters: - condition: ne(variables['Build.Reason'], 'PullRequest') + condition: and(eq(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) jobName: Helix_arm64_daily jobDisplayName: "Tests: Helix ARM64 Daily" agentOs: Linux diff --git a/.azure/pipelines/quarantined-tests.yml b/.azure/pipelines/quarantined-tests.yml index bb9224b38b..415853ed8e 100644 --- a/.azure/pipelines/quarantined-tests.yml +++ b/.azure/pipelines/quarantined-tests.yml @@ -32,10 +32,10 @@ jobs: steps: # Build the shared framework - script: ./build.cmd -ci -all -pack -arch x64 -buildNative /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log /bl:artifacts/log/helix.build.x64.binlog - displayName: Build shared fx + displayName: Build shared fx - script: .\restore.cmd -ci displayName: Restore - - script: .\build.cmd -ci -NoRestore -test -projects eng\helix\helix.proj /p:RunQuarantinedTests=true /p:IsRequiredCheck=true /p:IsHelixJob=true /p:BuildAllProjects=true /p:BuildNative=true /p:RunTemplateTests=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log -bl + - script: .\build.cmd -ci -NoRestore -test -noBuildJava -projects eng\helix\helix.proj /p:RunQuarantinedTests=true /p:IsRequiredCheck=true /p:IsHelixJob=true /p:BuildAllProjects=true /p:BuildNative=true /p:RunTemplateTests=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log -bl displayName: Run build.cmd helix target env: HelixApiAccessToken: $(HelixApiAccessToken) # Needed for internal queues diff --git a/Directory.Build.props b/Directory.Build.props index a2765ff560..c40d203441 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -123,6 +123,7 @@ win-x64; win-x86; win-arm; + win-arm64; osx-x64; linux-musl-x64; linux-musl-arm64; diff --git a/build.ps1 b/build.ps1 index 7ce1d87f58..f371d26673 100644 --- a/build.ps1 +++ b/build.ps1 @@ -118,7 +118,7 @@ param( [ValidateSet('Debug', 'Release')] $Configuration, - [ValidateSet('x64', 'x86', 'arm')] + [ValidateSet('x64', 'x86', 'arm', 'arm64')] $Architecture = 'x64', # A list of projects which should be built. @@ -157,7 +157,7 @@ param( # Other lifecycle targets [switch]$Help, # Show help - + # Optional arguments that enable downloading an internal # runtime or runtime from a non-default location [string]$DotNetRuntimeSourceFeed, diff --git a/eng/Dependencies.props b/eng/Dependencies.props index 95e9606528..ecee11a86f 100644 --- a/eng/Dependencies.props +++ b/eng/Dependencies.props @@ -94,6 +94,7 @@ and are generated based on the last package release. + diff --git a/eng/Signing.props b/eng/Signing.props index 3b61e9205f..024a5c8a0a 100644 --- a/eng/Signing.props +++ b/eng/Signing.props @@ -93,9 +93,11 @@ <_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-x64\shared\Microsoft.NETCore.App\**\*.dll" CertificateName="None" /> <_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-x86\shared\Microsoft.NETCore.App\**\*.dll" CertificateName="None" /> <_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-arm\shared\Microsoft.NETCore.App\**\*.dll" CertificateName="None" /> + <_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-arm64\shared\Microsoft.NETCore.App\**\*.dll" CertificateName="None" /> <_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-x64\host\**\*.dll" CertificateName="None" /> <_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-x86\host\**\*.dll" CertificateName="None" /> <_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-arm\host\**\*.dll" CertificateName="None" /> + <_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-arm64\host\**\*.dll" CertificateName="None" /> <_DotNetFilesToExclude Include="$(RedistNetCorePath)dotnet.exe" CertificateName="None" /> diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 786f602f42..4de6e29439 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -13,324 +13,324 @@ https://github.com/dotnet/blazor dd7fb4d3931d556458f62642c2edfc59f6295bfb - + https://github.com/dotnet/aspnetcore-tooling - 51261eb11f5449ba910530423c676a36006cdd1f + 89579a87b9e8701a79e3584fa8bfd4e4efedcc7e - + https://github.com/dotnet/aspnetcore-tooling - 51261eb11f5449ba910530423c676a36006cdd1f + 89579a87b9e8701a79e3584fa8bfd4e4efedcc7e - + https://github.com/dotnet/aspnetcore-tooling - 51261eb11f5449ba910530423c676a36006cdd1f + 89579a87b9e8701a79e3584fa8bfd4e4efedcc7e - + https://github.com/dotnet/aspnetcore-tooling - 51261eb11f5449ba910530423c676a36006cdd1f + 89579a87b9e8701a79e3584fa8bfd4e4efedcc7e - + https://github.com/dotnet/efcore - dee8cbb35bb0d2dd652349bed325f7fb157914d4 + f1a6840fbc5c72a6cf2756dbdbcc65622434ebd7 - + https://github.com/dotnet/efcore - dee8cbb35bb0d2dd652349bed325f7fb157914d4 + f1a6840fbc5c72a6cf2756dbdbcc65622434ebd7 - + https://github.com/dotnet/efcore - dee8cbb35bb0d2dd652349bed325f7fb157914d4 + f1a6840fbc5c72a6cf2756dbdbcc65622434ebd7 - + https://github.com/dotnet/efcore - dee8cbb35bb0d2dd652349bed325f7fb157914d4 + f1a6840fbc5c72a6cf2756dbdbcc65622434ebd7 - + https://github.com/dotnet/efcore - dee8cbb35bb0d2dd652349bed325f7fb157914d4 + f1a6840fbc5c72a6cf2756dbdbcc65622434ebd7 - + https://github.com/dotnet/efcore - dee8cbb35bb0d2dd652349bed325f7fb157914d4 + f1a6840fbc5c72a6cf2756dbdbcc65622434ebd7 - + https://github.com/dotnet/efcore - dee8cbb35bb0d2dd652349bed325f7fb157914d4 + f1a6840fbc5c72a6cf2756dbdbcc65622434ebd7 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/runtime - e2881ae96bb4399864723aa46469c82379b03b32 + 2f6e072c97738a56eeeb25f1fdb5dcc955649db0 - + https://github.com/dotnet/extensions - 6ae4b22a059858eba7b3d9068f812ada92df8e24 + 9a8d035b5f1c7264d8537d73a08cb812238699f1 https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index 1618d1330a..179f752bcc 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -9,7 +9,7 @@ 5 0 0 - 2 + 3 @@ -66,91 +66,91 @@ 3.5.0-beta4-20153-05 - 5.0.0-preview.2-runtime.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 2.1.0-preview.2.20155.1 + 5.0.0-preview.2-runtime.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 2.1.0-preview.2.20155.3 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 + 5.0.0-preview.2.20155.3 - 5.0.0-preview.2.20155.1 + 5.0.0-preview.2.20155.3 3.2.0-preview1.20067.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 - 5.0.0-preview.2.20155.1 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 + 5.0.0-preview.3.20156.2 - 5.0.0-preview.2.20155.2 - 5.0.0-preview.2.20155.2 - 5.0.0-preview.2.20155.2 - 5.0.0-preview.2.20155.2 - 5.0.0-preview.2.20155.2 - 5.0.0-preview.2.20155.2 - 5.0.0-preview.2.20155.2 + 5.0.0-preview.3.20156.3 + 5.0.0-preview.3.20156.3 + 5.0.0-preview.3.20156.3 + 5.0.0-preview.3.20156.3 + 5.0.0-preview.3.20156.3 + 5.0.0-preview.3.20156.3 + 5.0.0-preview.3.20156.3 - 5.0.0-preview.2.20155.8 - 5.0.0-preview.2.20155.8 - 5.0.0-preview.2.20155.8 - 5.0.0-preview.2.20155.8 + 5.0.0-preview.3.20156.7 + 5.0.0-preview.3.20156.7 + 5.0.0-preview.3.20156.7 + 5.0.0-preview.3.20156.7 diff --git a/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http2/Http2ConnectionTests.cs b/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http2/Http2ConnectionTests.cs index 26b146843b..b0595d4545 100644 --- a/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http2/Http2ConnectionTests.cs +++ b/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http2/Http2ConnectionTests.cs @@ -225,7 +225,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests await StartStreamAsync(1, _browserRequestHeaders, endStream: true); await ExpectAsync(Http2FrameType.HEADERS, - withLength: 37, + withLength: 33, withFlags: (byte)Http2HeadersFrameFlags.END_HEADERS, withStreamId: 1); await ExpectAsync(Http2FrameType.DATA, diff --git a/src/Servers/Kestrel/test/InMemory.FunctionalTests/HttpsTests.cs b/src/Servers/Kestrel/test/InMemory.FunctionalTests/HttpsTests.cs index 04c77b6d9c..c9ef2f32e8 100644 --- a/src/Servers/Kestrel/test/InMemory.FunctionalTests/HttpsTests.cs +++ b/src/Servers/Kestrel/test/InMemory.FunctionalTests/HttpsTests.cs @@ -143,6 +143,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests } [Fact] + [QuarantinedTest] public async Task ClientHandshakeFailureLoggedAsDebug() { var loggerProvider = new HandshakeErrorLoggerProvider(); diff --git a/src/Shared/E2ETesting/E2ETesting.props b/src/Shared/E2ETesting/E2ETesting.props index 64e74c095e..0e6552e7ec 100644 --- a/src/Shared/E2ETesting/E2ETesting.props +++ b/src/Shared/E2ETesting/E2ETesting.props @@ -4,7 +4,7 @@ $(DefaultItemExcludes);node_modules\** $([MSBuild]::NormalizeDirectory('$(ArtifactsTestResultsDir)','$(MSBuildProjectName)')) $([MSBuild]::EnsureTrailingSlash('$(RepoRoot)'))artifacts\tmp\selenium\ - true + true $([MSBuild]::NormalizePath($(MSBuildThisFileDirectory)selenium-config.json)) diff --git a/src/Shared/runtime/ReadMe.SharedCode.md b/src/Shared/runtime/ReadMe.SharedCode.md index dcb4cc4f0e..f24980b8a2 100644 --- a/src/Shared/runtime/ReadMe.SharedCode.md +++ b/src/Shared/runtime/ReadMe.SharedCode.md @@ -28,8 +28,8 @@ dotnet/AspNetCore code paths: - Run restore in the root once: `PS D:\github\AspNetCore> .\restore.cmd` - Activate to use the repo local runtime: `PS D:\github\AspNetCore> . .\activate.ps1` - Build the individual projects: -- `(AspNetCore) PS D:\github\AspNetCore\src\Shared\test\Shared.Tests> dotnet msbuild` -- `(AspNetCore) PS D:\github\AspNetCore\src\servers\Kestrel\core\src> dotnet msbuild` +- `(AspNetCore) PS D:\github\AspNetCore\src\Shared\test\Shared.Tests> dotnet build` +- `(AspNetCore) PS D:\github\AspNetCore\src\servers\Kestrel\core\src> dotnet build` ### Running dotnet/AspNetCore tests: - `(AspNetCore) PS D:\github\AspNetCore\src\Shared\test\Shared.Tests> dotnet test` diff --git a/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs b/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs index acd21ef2c4..4d975d5d7e 100644 --- a/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs +++ b/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs @@ -1214,11 +1214,13 @@ namespace Microsoft.AspNetCore.SignalR.Client finally { invocationMessageChannel.Writer.TryComplete(); - await invocationMessageReceiveTask; timer.Stop(); await timerTask; uploadStreamSource.Cancel(); await HandleConnectionClose(connectionState); + + // await after the connection has been closed, otherwise could deadlock on a user's .On callback(s) + await invocationMessageReceiveTask; } } diff --git a/src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.cs b/src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.cs index b303e71ddd..e2b18c9857 100644 --- a/src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.cs +++ b/src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.cs @@ -345,7 +345,7 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests var complete = await connection.ReadSentJsonAsync().OrTimeout(); Assert.Equal(HubProtocolConstants.CompletionMessageType, complete["type"]); Assert.EndsWith("canceled by client.", ((string)complete["error"])); - } + } } [Fact] @@ -414,6 +414,59 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests } } + [Fact] + public async Task CanAwaitInvokeFromOnHandlerWithServerClosingConnection() + { + using (StartVerifiableLog()) + { + var connection = new TestConnection(); + var hubConnection = CreateHubConnection(connection, loggerFactory: LoggerFactory); + await hubConnection.StartAsync().OrTimeout(); + + var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + hubConnection.On("Echo", async msg => + { + try + { + // This should be canceled when the connection is closed + await hubConnection.InvokeAsync("Echo", msg).OrTimeout(); + } + catch (Exception ex) + { + tcs.SetException(ex); + return; + } + + tcs.SetResult(null); + }); + + var closedTcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + hubConnection.Closed += _ => + { + closedTcs.SetResult(null); + + return Task.CompletedTask; + }; + + await connection.ReceiveJsonMessage(new { type = HubProtocolConstants.InvocationMessageType, target = "Echo", arguments = new object[] { "42" } }); + + // Read sent message first to make sure invoke has been processed and is waiting for a response + await connection.ReadSentJsonAsync().OrTimeout(); + await connection.ReceiveJsonMessage(new { type = HubProtocolConstants.CloseMessageType }); + + await closedTcs.Task.OrTimeout(); + + try + { + await tcs.Task.OrTimeout(); + Assert.True(false); + } + catch (TaskCanceledException) + { + } + } + } + [Fact] public async Task CanAwaitUsingHubConnection() {