Merge pull request #18151 from dotnet/johluo/feb-branding
Update branding to 3.1.2
This commit is contained in:
commit
36e79022be
|
|
@ -38,6 +38,19 @@ variables:
|
|||
value: ''
|
||||
- name: _SignType
|
||||
value: ''
|
||||
- name: _InternalRuntimeDownloadArgs
|
||||
value: ''
|
||||
- name: _InternalRuntimeDownloadCodeSignArgs
|
||||
value: ''
|
||||
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
- group: DotNet-MSRC-Storage
|
||||
- name: _InternalRuntimeDownloadArgs
|
||||
value: -DotNetRuntimeSourceFeed https://dotnetclimsrc.blob.core.windows.net/dotnet -DotNetRuntimeSourceFeedKey $(dotnetclimsrc-read-sas-token-base64) /p:DotNetAssetRootAccessTokenSuffix='$(dotnetclimsrc-read-sas-token-base64)'
|
||||
# The code signing doesn't use the aspnet build scripts, so the msbuild parameers have
|
||||
# to be passed directly. This is awkward, since we pass the same info above, but we have
|
||||
# to have it in two different forms
|
||||
- name: _InternalRuntimeDownloadCodeSignArgs
|
||||
value: /p:DotNetRuntimeSourceFeed=https://dotnetclimsrc.blob.core.windows.net/dotnet /p:DotNetRuntimeSourceFeedKey=$(dotnetclimsrc-read-sas-token-base64)
|
||||
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
|
||||
# DotNet-Blob-Feed provides: dotnetfeed-storage-access-key-1
|
||||
|
|
@ -81,7 +94,15 @@ stages:
|
|||
jobDisplayName: Code check
|
||||
agentOs: Windows
|
||||
steps:
|
||||
- powershell: ./eng/scripts/CodeCheck.ps1 -ci
|
||||
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
|
||||
- task: PowerShell@2
|
||||
displayName: Setup Private Feeds Credentials
|
||||
inputs:
|
||||
filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
|
||||
arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token
|
||||
env:
|
||||
Token: $(dn-bot-dnceng-artifact-feeds-rw)
|
||||
- powershell: ./eng/scripts/CodeCheck.ps1 -ci $(_InternalRuntimeDownloadArgs)
|
||||
displayName: Run eng/scripts/CodeCheck.ps1
|
||||
artifacts:
|
||||
- name: Code_Check_Logs
|
||||
|
|
@ -108,6 +129,14 @@ stages:
|
|||
# This is intentional to workaround https://github.com/dotnet/arcade/issues/1957 which always re-submits for code-signing, even
|
||||
# if they have already been signed. This results in slower builds due to re-submitting the same .nupkg many times for signing.
|
||||
# The sign settings have been configured to
|
||||
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
|
||||
- task: PowerShell@2
|
||||
displayName: Setup Private Feeds Credentials
|
||||
inputs:
|
||||
filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
|
||||
arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token
|
||||
env:
|
||||
Token: $(dn-bot-dnceng-artifact-feeds-rw)
|
||||
|
||||
- script: ./build.cmd
|
||||
-ci
|
||||
|
|
@ -117,6 +146,7 @@ stages:
|
|||
-buildNative
|
||||
/bl:artifacts/log/build.x64.binlog
|
||||
$(_BuildArgs)
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
displayName: Build x64
|
||||
|
||||
# Build the x86 shared framework
|
||||
|
|
@ -132,6 +162,7 @@ stages:
|
|||
/p:OnlyPackPlatformSpecificPackages=true
|
||||
/bl:artifacts/log/build.x86.binlog
|
||||
$(_BuildArgs)
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
displayName: Build x86
|
||||
|
||||
# This is in a separate build step with -forceCoreMsbuild to workaround MAX_PATH limitations - https://github.com/Microsoft/msbuild/issues/53
|
||||
|
|
@ -140,6 +171,7 @@ stages:
|
|||
-pack
|
||||
-noBuildDeps
|
||||
$(_BuildArgs)
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
displayName: Build SiteExtension
|
||||
|
||||
# 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,
|
||||
|
|
@ -165,6 +197,7 @@ stages:
|
|||
/p:AssetManifestFileName=aspnetcore-win-x64-x86.xml
|
||||
$(_BuildArgs)
|
||||
$(_PublishArgs)
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
/p:PublishInstallerBaseVersion=true
|
||||
displayName: Build Installers
|
||||
|
||||
|
|
@ -205,6 +238,7 @@ stages:
|
|||
/p:AssetManifestFileName=aspnetcore-win-arm.xml
|
||||
$(_BuildArgs)
|
||||
$(_PublishArgs)
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
installNodeJs: false
|
||||
installJdk: false
|
||||
artifacts:
|
||||
|
|
@ -231,6 +265,7 @@ stages:
|
|||
-p:AssetManifestFileName=aspnetcore-MacOS_x64.xml
|
||||
$(_BuildArgs)
|
||||
$(_PublishArgs)
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
installNodeJs: false
|
||||
installJdk: false
|
||||
artifacts:
|
||||
|
|
@ -251,6 +286,14 @@ stages:
|
|||
jobDisplayName: "Build: Linux x64"
|
||||
agentOs: Linux
|
||||
steps:
|
||||
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
|
||||
- task: Bash@3
|
||||
displayName: Setup Private Feeds Credentials
|
||||
inputs:
|
||||
filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh
|
||||
arguments: $(Build.SourcesDirectory)/NuGet.config $Token
|
||||
env:
|
||||
Token: $(dn-bot-dnceng-artifact-feeds-rw)
|
||||
- script: ./build.sh
|
||||
--ci
|
||||
--arch x64
|
||||
|
|
@ -261,6 +304,7 @@ stages:
|
|||
-p:OnlyPackPlatformSpecificPackages=true
|
||||
-bl:artifacts/log/build.linux-x64.binlog
|
||||
$(_BuildArgs)
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
displayName: Run build.sh
|
||||
- script: |
|
||||
git clean -xfd src/**/obj/
|
||||
|
|
@ -274,7 +318,8 @@ stages:
|
|||
-p:BuildRuntimeArchive=false \
|
||||
-p:LinuxInstallerType=deb \
|
||||
-bl:artifacts/log/build.deb.binlog \
|
||||
$(_BuildArgs)
|
||||
$(_BuildArgs) \
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
displayName: Build Debian installers
|
||||
- script: |
|
||||
git clean -xfd src/**/obj/
|
||||
|
|
@ -290,7 +335,8 @@ stages:
|
|||
-bl:artifacts/log/build.rpm.binlog \
|
||||
-p:AssetManifestFileName=aspnetcore-Linux_x64.xml \
|
||||
$(_BuildArgs) \
|
||||
$(_PublishArgs)
|
||||
$(_PublishArgs) \
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
displayName: Build RPM installers
|
||||
installNodeJs: false
|
||||
installJdk: false
|
||||
|
|
@ -322,6 +368,7 @@ stages:
|
|||
-p:AssetManifestFileName=aspnetcore-Linux_arm.xml
|
||||
$(_BuildArgs)
|
||||
$(_PublishArgs)
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
installNodeJs: false
|
||||
installJdk: false
|
||||
artifacts:
|
||||
|
|
@ -352,6 +399,7 @@ stages:
|
|||
-p:AssetManifestFileName=aspnetcore-Linux_arm64.xml
|
||||
$(_BuildArgs)
|
||||
$(_PublishArgs)
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
installNodeJs: false
|
||||
installJdk: false
|
||||
artifacts:
|
||||
|
|
@ -385,6 +433,7 @@ stages:
|
|||
-p:AssetManifestFileName=aspnetcore-Linux_musl_x64.xml
|
||||
$(_BuildArgs)
|
||||
$(_PublishArgs)
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
installNodeJs: false
|
||||
installJdk: false
|
||||
artifacts:
|
||||
|
|
@ -418,6 +467,7 @@ stages:
|
|||
-p:AssetManifestFileName=aspnetcore-Linux_musl_arm64.xml
|
||||
$(_BuildArgs)
|
||||
$(_PublishArgs)
|
||||
$(_InternalRuntimeDownloadArgs)
|
||||
installNodeJs: false
|
||||
installJdk: false
|
||||
artifacts:
|
||||
|
|
@ -439,7 +489,7 @@ stages:
|
|||
jobDisplayName: "Test: Windows Server 2016 x64"
|
||||
agentOs: Windows
|
||||
isTestingJob: true
|
||||
buildArgs: -all -pack -test -BuildNative "/p:SkipIISNewHandlerTests=true /p:SkipIISTests=true /p:SkipIISExpressTests=true /p:SkipIISNewShimTests=true /p:RunTemplateTests=false"
|
||||
buildArgs: -all -pack -test -BuildNative "/p:SkipIISNewHandlerTests=true /p:SkipIISTests=true /p:SkipIISExpressTests=true /p:SkipIISNewShimTests=true /p:RunTemplateTests=false" $(_InternalRuntimeDownloadArgs)
|
||||
beforeBuild:
|
||||
- powershell: "& ./src/Servers/IIS/tools/UpdateIISExpressCertificate.ps1; & ./src/Servers/IIS/tools/update_schema.ps1"
|
||||
displayName: Setup IISExpress test certificates and schema
|
||||
|
|
@ -475,7 +525,15 @@ stages:
|
|||
agentOs: Windows
|
||||
isTestingJob: true
|
||||
steps:
|
||||
- script: ./build.cmd -ci -all -pack
|
||||
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
|
||||
- task: PowerShell@2
|
||||
displayName: Setup Private Feeds Credentials
|
||||
inputs:
|
||||
filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
|
||||
arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token
|
||||
env:
|
||||
Token: $(dn-bot-dnceng-artifact-feeds-rw)
|
||||
- script: ./build.cmd -ci -all -pack $(_InternalRuntimeDownloadArgs)
|
||||
displayName: Build Repo
|
||||
- script: ./src/ProjectTemplates/build.cmd -ci -pack -NoRestore -NoBuilddeps "/p:RunTemplateTests=true /bl:artifacts/log/template.pack.binlog"
|
||||
displayName: Pack Templates
|
||||
|
|
@ -502,7 +560,7 @@ stages:
|
|||
jobDisplayName: "Test: macOS 10.13"
|
||||
agentOs: macOS
|
||||
isTestingJob: true
|
||||
buildArgs: --all --test "/p:RunTemplateTests=false"
|
||||
buildArgs: --all --test "/p:RunTemplateTests=false" $(_InternalRuntimeDownloadArgs)
|
||||
beforeBuild:
|
||||
- bash: "./eng/scripts/install-nginx-mac.sh"
|
||||
displayName: Installing Nginx
|
||||
|
|
@ -537,7 +595,7 @@ stages:
|
|||
jobDisplayName: "Test: Ubuntu 16.04 x64"
|
||||
agentOs: Linux
|
||||
isTestingJob: true
|
||||
buildArgs: --all --test "/p:RunTemplateTests=false"
|
||||
buildArgs: --all --test "/p:RunTemplateTests=false" $(_InternalRuntimeDownloadArgs)
|
||||
beforeBuild:
|
||||
- bash: "./eng/scripts/install-nginx-linux.sh"
|
||||
displayName: Installing Nginx
|
||||
|
|
@ -584,6 +642,25 @@ stages:
|
|||
chmod +x $HOME/bin/jq
|
||||
echo "##vso[task.prependpath]$HOME/bin"
|
||||
displayName: Install jq
|
||||
- task: UseDotNet@2
|
||||
displayName: 'Use .NET Core sdk'
|
||||
inputs:
|
||||
packageType: sdk
|
||||
# The SDK version selected here is intentionally supposed to use the latest release
|
||||
# For the purpose of building Linux distros, we can't depend on features of the SDK
|
||||
# which may not exist in pre-built versions of the SDK
|
||||
# Pinning to preview 8 since preview 9 has breaking changes
|
||||
version: 3.1.100
|
||||
installationPath: $(DotNetCoreSdkDir)
|
||||
includePreviewVersions: true
|
||||
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
|
||||
- task: Bash@3
|
||||
displayName: Setup Private Feeds Credentials
|
||||
inputs:
|
||||
filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh
|
||||
arguments: $(Build.SourcesDirectory)/NuGet.config $Token
|
||||
env:
|
||||
Token: $(dn-bot-dnceng-artifact-feeds-rw)
|
||||
- script: ./eng/scripts/ci-source-build.sh --ci --configuration Release /p:BuildManaged=true /p:BuildNodeJs=false
|
||||
displayName: Run ci-source-build.sh
|
||||
- task: PublishBuildArtifacts@1
|
||||
|
|
|
|||
|
|
@ -28,6 +28,14 @@ jobs:
|
|||
contents: '**/*.nupkg'
|
||||
targetFolder: $(Build.SourcesDirectory)/artifacts/packages/$(BuildConfiguration)/shipping/
|
||||
flattenFolders: true
|
||||
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
|
||||
- task: PowerShell@2
|
||||
displayName: Setup Private Feeds Credentials
|
||||
inputs:
|
||||
filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
|
||||
arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token
|
||||
env:
|
||||
Token: $(dn-bot-dnceng-artifact-feeds-rw)
|
||||
- powershell: .\eng\common\build.ps1
|
||||
-ci
|
||||
-restore
|
||||
|
|
@ -39,6 +47,7 @@ jobs:
|
|||
/p:DotNetSignType=$(_SignType)
|
||||
$(_BuildArgs)
|
||||
$(_PublishArgs)
|
||||
$(_InternalRuntimeDownloadCodeSignArgs)
|
||||
displayName: Sign and publish packages
|
||||
artifacts:
|
||||
- name: CodeSign_Xplat_${{ parameters.inputName }}_Logs
|
||||
|
|
|
|||
|
|
@ -161,6 +161,24 @@ jobs:
|
|||
- ${{ if ne(parameters.steps, '')}}:
|
||||
- ${{ parameters.steps }}
|
||||
- ${{ if eq(parameters.steps, '')}}:
|
||||
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
|
||||
- ${{ if eq(parameters.agentOs, 'Windows') }}:
|
||||
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
|
||||
- task: PowerShell@2
|
||||
displayName: Setup Private Feeds Credentials
|
||||
inputs:
|
||||
filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
|
||||
arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token
|
||||
env:
|
||||
Token: $(dn-bot-dnceng-artifact-feeds-rw)
|
||||
- ${{ if ne(parameters.agentOs, 'Windows') }}:
|
||||
- task: Bash@3
|
||||
displayName: Setup Private Feeds Credentials
|
||||
inputs:
|
||||
filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh
|
||||
arguments: $(Build.SourcesDirectory)/NuGet.config $Token
|
||||
env:
|
||||
Token: $(dn-bot-dnceng-artifact-feeds-rw)
|
||||
- ${{ if eq(parameters.buildScript, '') }}:
|
||||
- ${{ if eq(parameters.agentOs, 'Windows') }}:
|
||||
- script: .\$(BuildDirectory)\build.cmd -ci /p:DotNetSignType=$(_SignType) -Configuration $(BuildConfiguration) $(BuildScriptArgs)
|
||||
|
|
|
|||
|
|
@ -84,8 +84,8 @@
|
|||
<RuntimeInstallerBaseName>aspnetcore-runtime</RuntimeInstallerBaseName>
|
||||
<TargetingPackInstallerBaseName>aspnetcore-targeting-pack</TargetingPackInstallerBaseName>
|
||||
|
||||
<!-- Produce targeting pack installers/packages once per major.minor except in extraordinary cases i.e. 3.0.1. -->
|
||||
<!-- We can remove the 3.0.1 line from any branch other than release/3.0 and from here after 3.0.1 is released. -->
|
||||
<!-- Produce targeting pack installers/packages once per major.minor except in extraordinary cases i.e. 3.1.2. -->
|
||||
<!-- We can remove the 3.1.2 line from any branch other than release/3.1 and from here after 3.1.2 is released. -->
|
||||
<IsTargetingPackBuilding Condition=" '$(DotNetBuildFromSource)' == 'true' ">false</IsTargetingPackBuilding>
|
||||
<IsTargetingPackBuilding
|
||||
Condition=" '$(IsTargetingPackBuilding)' == '' AND '$(VersionPrefix)' == '3.0.1' ">true</IsTargetingPackBuilding>
|
||||
|
|
|
|||
24
build.ps1
24
build.ps1
|
|
@ -77,6 +77,12 @@ MSBuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]
|
|||
.PARAMETER MSBuildArguments
|
||||
Additional MSBuild arguments to be passed through.
|
||||
|
||||
.PARAMETER DotNetRuntimeSourceFeed
|
||||
Additional feed that can be used when downloading .NET runtimes
|
||||
|
||||
.PARAMETER DotNetRuntimeSourceFeedKey
|
||||
Key for feed that can be used when downloading .NET runtimes
|
||||
|
||||
.EXAMPLE
|
||||
Building both native and managed projects.
|
||||
|
||||
|
|
@ -151,6 +157,11 @@ 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,
|
||||
[string]$DotNetRuntimeSourceFeedKey,
|
||||
|
||||
# Capture the rest
|
||||
[Parameter(ValueFromRemainingArguments = $true)]
|
||||
|
|
@ -251,6 +262,16 @@ if (-not $Configuration) {
|
|||
}
|
||||
$MSBuildArguments += "/p:Configuration=$Configuration"
|
||||
|
||||
[string[]]$ToolsetBuildArguments = @()
|
||||
if ($DotNetRuntimeSourceFeed -or $DotNetRuntimeSourceFeedKey) {
|
||||
$runtimeFeedArg = "/p:DotNetRuntimeSourceFeed=$DotNetRuntimeSourceFeed"
|
||||
$runtimeFeedKeyArg = "/p:DotNetRuntimeSourceFeedKey=$DotNetRuntimeSourceFeedKey"
|
||||
$MSBuildArguments += $runtimeFeedArg
|
||||
$MSBuildArguments += $runtimeFeedKeyArg
|
||||
$ToolsetBuildArguments += $runtimeFeedArg
|
||||
$ToolsetBuildArguments += $runtimeFeedKeyArg
|
||||
}
|
||||
|
||||
$foundJdk = $false
|
||||
$javac = Get-Command javac -ErrorAction Ignore -CommandType Application
|
||||
$localJdkPath = "$PSScriptRoot\.tools\jdk\win-x64\"
|
||||
|
|
@ -375,7 +396,8 @@ try {
|
|||
/p:Configuration=Release `
|
||||
/p:Restore=$RunRestore `
|
||||
/p:Build=true `
|
||||
/clp:NoSummary
|
||||
/clp:NoSummary `
|
||||
@ToolsetBuildArguments
|
||||
}
|
||||
|
||||
MSBuild $toolsetBuildProj `
|
||||
|
|
|
|||
77
build.sh
77
build.sh
|
|
@ -29,6 +29,8 @@ build_installers=''
|
|||
build_projects=''
|
||||
target_arch='x64'
|
||||
configuration=''
|
||||
dotnet_runtime_source_feed=''
|
||||
dotnet_runtime_source_feed_key=''
|
||||
|
||||
if [ "$(uname)" = "Darwin" ]; then
|
||||
target_os_name='osx'
|
||||
|
|
@ -45,33 +47,36 @@ __usage() {
|
|||
echo "Usage: $(basename "${BASH_SOURCE[0]}") [options] [[--] <Arguments>...]
|
||||
|
||||
Arguments:
|
||||
<Arguments>... Arguments passed to the command. Variable number of arguments allowed.
|
||||
<Arguments>... Arguments passed to the command. Variable number of arguments allowed.
|
||||
|
||||
Options:
|
||||
--configuration|-c The build configuration (Debug, Release). Default=Debug
|
||||
--arch The CPU architecture to build for (x64, arm, arm64). Default=$target_arch
|
||||
--os-name The base runtime identifier to build for (linux, osx, linux-musl). Default=$target_os_name
|
||||
--configuration|-c The build configuration (Debug, Release). Default=Debug
|
||||
--arch The CPU architecture to build for (x64, arm, arm64). Default=$target_arch
|
||||
--os-name The base runtime identifier to build for (linux, osx, linux-musl). Default=$target_os_name
|
||||
|
||||
--[no-]restore Run restore.
|
||||
--[no-]build Compile projects. (Implies --no-restore)
|
||||
--[no-]pack Produce packages.
|
||||
--[no-]test Run tests.
|
||||
--[no-]restore Run restore.
|
||||
--[no-]build Compile projects. (Implies --no-restore)
|
||||
--[no-]pack Produce packages.
|
||||
--[no-]test Run tests.
|
||||
|
||||
--projects A list of projects to build. (Must be an absolute path.)
|
||||
Globbing patterns are supported, such as \"$(pwd)/**/*.csproj\".
|
||||
--no-build-deps Do not build project-to-project references and only build the specified project.
|
||||
--no-build-repo-tasks Suppress building RepoTasks.
|
||||
--projects A list of projects to build. (Must be an absolute path.)
|
||||
Globbing patterns are supported, such as \"$(pwd)/**/*.csproj\".
|
||||
--no-build-deps Do not build project-to-project references and only build the specified project.
|
||||
--no-build-repo-tasks Suppress building RepoTasks.
|
||||
|
||||
--all Build all project types.
|
||||
--[no-]build-native Build native projects (C, C++).
|
||||
--[no-]build-managed Build managed projects (C#, F#, VB).
|
||||
--[no-]build-nodejs Build NodeJS projects (TypeScript, JS).
|
||||
--[no-]build-java Build Java projects.
|
||||
--[no-]build-installers Build Java projects.
|
||||
--all Build all project types.
|
||||
--[no-]build-native Build native projects (C, C++).
|
||||
--[no-]build-managed Build managed projects (C#, F#, VB).
|
||||
--[no-]build-nodejs Build NodeJS projects (TypeScript, JS).
|
||||
--[no-]build-java Build Java projects.
|
||||
--[no-]build-installers Build Java projects.
|
||||
|
||||
--ci Apply CI specific settings and environment variables.
|
||||
--binarylog|-bl Use a binary logger
|
||||
--verbosity|-v MSBuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]
|
||||
--ci Apply CI specific settings and environment variables.
|
||||
--binarylog|-bl Use a binary logger
|
||||
--verbosity|-v MSBuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]
|
||||
|
||||
--dotnet-runtime-source-feed Additional feed that can be used when downloading .NET runtimes
|
||||
--dotnet-runtime-source-feed-key Key for feed that can be used when downloading .NET runtimes
|
||||
|
||||
Description:
|
||||
This build script installs required tools and runs an MSBuild command on this repository
|
||||
|
|
@ -188,16 +193,26 @@ while [[ $# -gt 0 ]]; do
|
|||
-no-build-repo-tasks|-nobuildrepotasks)
|
||||
build_repo_tasks=false
|
||||
;;
|
||||
-arch)
|
||||
shift
|
||||
target_arch="${1:-}"
|
||||
[ -z "$target_arch" ] && __error "Missing value for parameter --arch" && __usage
|
||||
;;
|
||||
-ci)
|
||||
ci=true
|
||||
;;
|
||||
-binarylog|-bl)
|
||||
use_default_binary_log=true
|
||||
;;
|
||||
-verbosity|-v)
|
||||
-dotnet-runtime-source-feed|-dotnetruntimesourcefeed)
|
||||
shift
|
||||
[ -z "${1:-}" ] && __error "Missing value for parameter --verbosity" && __usage
|
||||
verbosity="${1:-}"
|
||||
[ -z "${1:-}" ] && __error "Missing value for parameter --dotnet-runtime-source-feed" && __usage
|
||||
dotnet_runtime_source_feed="${1:-}"
|
||||
;;
|
||||
-dotnet-runtime-source-feed-key|-dotnetruntimesourcefeedkey)
|
||||
shift
|
||||
[ -z "${1:-}" ] && __error "Missing value for parameter --dotnet-runtime-source-feed-key" && __usage
|
||||
dotnet_runtime_source_feed_key="${1:-}"
|
||||
;;
|
||||
*)
|
||||
msbuild_args[${#msbuild_args[*]}]="$1"
|
||||
|
|
@ -270,6 +285,17 @@ msbuild_args[${#msbuild_args[*]}]="-p:Configuration=$configuration"
|
|||
echo "Setting msbuild verbosity to $verbosity"
|
||||
msbuild_args[${#msbuild_args[*]}]="-verbosity:$verbosity"
|
||||
|
||||
# Set up additional runtime args
|
||||
toolset_build_args=()
|
||||
if [ ! -z "$dotnet_runtime_source_feed" ] || [ ! -z "$dotnet_runtime_source_feed_key" ]; then
|
||||
runtimeFeedArg="/p:DotNetRuntimeSourceFeed=$dotnet_runtime_source_feed"
|
||||
runtimeFeedKeyArg="/p:DotNetRuntimeSourceFeedKey=$dotnet_runtime_source_feed_key"
|
||||
msbuild_args[${#msbuild_args[*]}]=$runtimeFeedArg
|
||||
msbuild_args[${#msbuild_args[*]}]=$runtimeFeedKeyArg
|
||||
toolset_build_args[${#toolset_build_args[*]}]=$runtimeFeedArg
|
||||
toolset_build_args[${#toolset_build_args[*]}]=$runtimeFeedKeyArg
|
||||
fi
|
||||
|
||||
# Initialize global variables need to be set before the import of Arcade is imported
|
||||
restore=$run_restore
|
||||
|
||||
|
|
@ -325,7 +351,8 @@ if [ "$build_repo_tasks" = true ]; then
|
|||
-p:Configuration=Release \
|
||||
-p:Restore=$run_restore \
|
||||
-p:Build=true \
|
||||
-clp:NoSummary
|
||||
-clp:NoSummary \
|
||||
${toolset_build_args[@]+"${toolset_build_args[@]}"}
|
||||
fi
|
||||
|
||||
# This incantation avoids unbound variable issues if msbuild_args is empty
|
||||
|
|
|
|||
|
|
@ -2,106 +2,106 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
|
||||
<AspNetCoreBaselineVersion>3.1.0</AspNetCoreBaselineVersion>
|
||||
<AspNetCoreBaselineVersion>3.1.1</AspNetCoreBaselineVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: AspNetCoreRuntime.3.0.x64-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'AspNetCoreRuntime.3.0.x64' ">
|
||||
<BaselinePackageVersion>3.0.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.0.2</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'AspNetCoreRuntime.3.0.x64' AND '$(TargetFramework)' == 'net461' " />
|
||||
<!-- Package: AspNetCoreRuntime.3.0.x86-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'AspNetCoreRuntime.3.0.x86' ">
|
||||
<BaselinePackageVersion>3.0.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.0.2</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'AspNetCoreRuntime.3.0.x86' AND '$(TargetFramework)' == 'net461' " />
|
||||
<!-- Package: dotnet-sql-cache-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'dotnet-sql-cache' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.ApiAuthorization.IdentityServer-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.ApiAuthorization.IdentityServer' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.ApiAuthorization.IdentityServer' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="IdentityServer4" Version="[3.0.0, )" />
|
||||
<BaselinePackageReference Include="IdentityServer4.AspNetIdentity" Version="[3.0.0, )" />
|
||||
<BaselinePackageReference Include="IdentityServer4.EntityFramework" Version="[3.0.0, )" />
|
||||
<BaselinePackageReference Include="IdentityServer4.EntityFramework.Storage" Version="[3.0.0, )" />
|
||||
<BaselinePackageReference Include="IdentityServer4.Storage" Version="[3.0.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Http" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Http" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.App.Runtime.win-x64-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.App.Runtime.win-x64' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Authentication.AzureAD.UI-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.AzureAD.UI' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.AzureAD.UI' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Authentication.AzureADB2C.UI-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.AzureADB2C.UI' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.AzureADB2C.UI' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Authentication.Certificate-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.Certificate' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.Certificate' AND '$(TargetFramework)' == 'netcoreapp3.1' " />
|
||||
<!-- Package: Microsoft.AspNetCore.Authentication.Facebook-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.Facebook' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.Facebook' AND '$(TargetFramework)' == 'netcoreapp3.1' " />
|
||||
<!-- Package: Microsoft.AspNetCore.Authentication.Google-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.Google' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.Google' AND '$(TargetFramework)' == 'netcoreapp3.1' " />
|
||||
<!-- Package: Microsoft.AspNetCore.Authentication.JwtBearer-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.JwtBearer' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.JwtBearer' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="[5.5.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Authentication.MicrosoftAccount-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.MicrosoftAccount' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.MicrosoftAccount' AND '$(TargetFramework)' == 'netcoreapp3.1' " />
|
||||
<!-- Package: Microsoft.AspNetCore.Authentication.Negotiate-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.Negotiate' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.Negotiate' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Authentication.OpenIdConnect-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.OpenIdConnect' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.OpenIdConnect' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="[5.5.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Authentication.Twitter-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.Twitter' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.Twitter' AND '$(TargetFramework)' == 'netcoreapp3.1' " />
|
||||
<!-- Package: Microsoft.AspNetCore.Authentication.WsFederation-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.WsFederation' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.WsFederation' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.IdentityModel.Protocols.WsFederation" Version="[5.5.0, )" />
|
||||
|
|
@ -109,39 +109,39 @@
|
|||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Authorization-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authorization' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authorization' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Metadata" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Metadata" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authorization' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Metadata" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Metadata" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.AzureAppServices.HostingStartup-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.AzureAppServices.HostingStartup' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.AzureAppServices.HostingStartup' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.AzureAppServicesIntegration" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.AzureAppServicesIntegration" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.AzureAppServices.SiteExtension-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.AzureAppServices.SiteExtension' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.AzureAppServices.SiteExtension' AND '$(TargetFramework)' == 'net461' ">
|
||||
<BaselinePackageReference Include="Microsoft.Web.Xdt.Extensions" Version="[3.1.0-rtm.19566.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Web.Xdt.Extensions" Version="[3.1.1-servicing.19615.10, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.AzureAppServicesIntegration-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.AzureAppServicesIntegration' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.AzureAppServicesIntegration' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Blazor-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Blazor' ">
|
||||
|
|
@ -186,273 +186,273 @@
|
|||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Components-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components.Analyzers" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authorization" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.JSInterop" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components.Analyzers" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authorization" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.JSInterop" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="System.ComponentModel.Annotations" Version="[4.7.0, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components.Analyzers" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authorization" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.JSInterop" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components.Analyzers" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authorization" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.JSInterop" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Components.Analyzers-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Analyzers' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Components.Authorization-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Authorization' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Authorization' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authorization" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authorization" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Authorization' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authorization" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authorization" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Components.Forms-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Forms' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Forms' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Forms' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="System.ComponentModel.Annotations" Version="[4.7.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Components.Web-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Web' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Web' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components.Forms" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.JSInterop" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components.Forms" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.JSInterop" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Web' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components.Forms" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.JSInterop" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components.Forms" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.JSInterop" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.ConcurrencyLimiter-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.ConcurrencyLimiter' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.ConcurrencyLimiter' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Connections.Abstractions-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Connections.Abstractions' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Connections.Abstractions' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Features" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Features" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="System.IO.Pipelines" Version="[4.7.0, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Connections.Abstractions' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Features" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Features" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="[1.1.0, )" />
|
||||
<BaselinePackageReference Include="System.IO.Pipelines" Version="[4.7.0, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Connections.Abstractions' AND '$(TargetFramework)' == 'netstandard2.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Features" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Features" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="System.IO.Pipelines" Version="[4.7.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Cryptography.Internal-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Cryptography.Internal' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Cryptography.Internal' AND '$(TargetFramework)' == 'netstandard2.0' " />
|
||||
<!-- Package: Microsoft.AspNetCore.Cryptography.KeyDerivation-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Cryptography.KeyDerivation' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Cryptography.KeyDerivation' AND '$(TargetFramework)' == 'netcoreapp2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Cryptography.KeyDerivation' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.DataProtection-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Win32.Registry" Version="[4.7.0, )" />
|
||||
<BaselinePackageReference Include="System.Security.Cryptography.Xml" Version="[4.7.0, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Win32.Registry" Version="[4.7.0, )" />
|
||||
<BaselinePackageReference Include="System.Security.Cryptography.Xml" Version="[4.7.0, )" />
|
||||
<BaselinePackageReference Include="System.Security.Principal.Windows" Version="[4.7.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.DataProtection.Abstractions-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.Abstractions' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.Abstractions' AND '$(TargetFramework)' == 'netstandard2.0' " />
|
||||
<!-- Package: Microsoft.AspNetCore.DataProtection.AzureKeyVault-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.AzureKeyVault' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.AzureKeyVault' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Azure.KeyVault" Version="[2.3.2, )" />
|
||||
<BaselinePackageReference Include="Microsoft.IdentityModel.Clients.ActiveDirectory" Version="[3.19.8, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.DataProtection.AzureStorage-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.AzureStorage' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.AzureStorage' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Azure.Storage.Blob" Version="[10.0.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Data.OData" Version="[5.8.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.DataProtection.EntityFrameworkCore-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.EntityFrameworkCore' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.EntityFrameworkCore' AND '$(TargetFramework)' == 'netstandard2.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.DataProtection.Extensions-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.Extensions' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.Extensions' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.Extensions' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.DataProtection.StackExchangeRedis-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.StackExchangeRedis' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.StackExchangeRedis' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="StackExchange.Redis" Version="[2.0.593, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.HeaderPropagation-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.HeaderPropagation' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.HeaderPropagation' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Http" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Http" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Hosting.WindowsServices-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Hosting.WindowsServices' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Hosting.WindowsServices' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="System.ServiceProcess.ServiceController" Version="[4.7.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Http.Connections.Client-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections.Client' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections.Client' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections.Common" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections.Common" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections.Client' AND '$(TargetFramework)' == 'netstandard2.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections.Common" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections.Common" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Http.Connections.Common-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections.Common' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections.Common' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections.Common' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="System.Text.Json" Version="[4.7.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Http.Features-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Features' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Features' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Primitives" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Primitives" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="System.IO.Pipelines" Version="[4.7.0, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Features' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Primitives" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Primitives" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="System.IO.Pipelines" Version="[4.7.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Identity.EntityFrameworkCore-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Identity.EntityFrameworkCore' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Identity.EntityFrameworkCore' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Stores" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Stores" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Identity.EntityFrameworkCore' AND '$(TargetFramework)' == 'netstandard2.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Stores" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Stores" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Identity.Specification.Tests-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Identity.Specification.Tests' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Identity.Specification.Tests' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Testing" Version="[3.1.0-rtm.19565.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Configuration" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Testing" Version="[3.1.1-servicing.19614.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Configuration" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="xunit.assert" Version="[2.4.1, )" />
|
||||
<BaselinePackageReference Include="xunit.extensibility.core" Version="[2.4.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Identity.UI-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Identity.UI' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Identity.UI' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Stores" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Stores" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Newtonsoft.Json" Version="[12.0.2, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.JsonPatch-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.JsonPatch' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.JsonPatch' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.CSharp" Version="[4.7.0, )" />
|
||||
|
|
@ -460,236 +460,238 @@
|
|||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Metadata-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Metadata' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Metadata' AND '$(TargetFramework)' == 'netstandard2.0' " />
|
||||
<!-- Package: Microsoft.AspNetCore.MiddlewareAnalysis-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.MiddlewareAnalysis' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.MiddlewareAnalysis' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Mvc.NewtonsoftJson-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Mvc.NewtonsoftJson' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Mvc.NewtonsoftJson' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Newtonsoft.Json" Version="[12.0.2, )" />
|
||||
<BaselinePackageReference Include="Newtonsoft.Json.Bson" Version="[1.0.2, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Mvc.Razor.Extensions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.CodeAnalysis.Razor" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyModel" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Mvc.Razor.Extensions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.CodeAnalysis.Razor" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyModel" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Mvc.Testing-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Mvc.Testing' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Mvc.Testing' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.TestHost" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyModel" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Hosting" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.TestHost" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyModel" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Hosting" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.NodeServices-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.NodeServices' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.NodeServices' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Console" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Console" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Newtonsoft.Json" Version="[12.0.2, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Owin-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Owin' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Owin' AND '$(TargetFramework)' == 'netcoreapp3.1' " />
|
||||
<!-- Package: Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Libuv" Version="[1.10.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.SignalR.Client-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Client' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Client' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Client.Core" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections.Client" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Client.Core" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections.Client" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.SignalR.Client.Core-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Client.Core' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Client.Core' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="[1.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="System.Threading.Channels" Version="[4.7.0, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Client.Core' AND '$(TargetFramework)' == 'netstandard2.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="System.Threading.Channels" Version="[4.7.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.SignalR.Common-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Common' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Common' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Common' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="System.Text.Json" Version="[4.7.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.SignalR.Protocols.Json-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Protocols.Json' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Protocols.Json' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Protocols.Json' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.SignalR.Protocols.MessagePack-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Protocols.MessagePack' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Protocols.MessagePack' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="MessagePack" Version="[1.7.3.7, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Newtonsoft.Json" Version="[12.0.2, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.SignalR.Specification.Tests-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Specification.Tests' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Specification.Tests' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="xunit.assert" Version="[2.4.1, )" />
|
||||
<BaselinePackageReference Include="xunit.extensibility.core" Version="[2.4.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.SignalR.StackExchangeRedis-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.StackExchangeRedis' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.StackExchangeRedis' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="MessagePack" Version="[1.7.3.7, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="StackExchange.Redis" Version="[2.0.593, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.SpaServices-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SpaServices' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SpaServices' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.NodeServices" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.NodeServices" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.SpaServices.Extensions-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SpaServices.Extensions' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SpaServices.Extensions' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SpaServices" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.FileProviders.Physical" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SpaServices" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.FileProviders.Physical" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.TestHost-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.TestHost' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.TestHost' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="System.IO.Pipelines" Version="[4.7.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.dotnet-openapi-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.dotnet-openapi' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.DotNet.Web.Client.ItemTemplates-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.DotNet.Web.Client.ItemTemplates' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.DotNet.Web.ItemTemplates-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.DotNet.Web.ItemTemplates' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.DotNet.Web.ProjectTemplates.3.1-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.DotNet.Web.ProjectTemplates.3.1' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.DotNet.Web.Spa.ProjectTemplates.3.1-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.DotNet.Web.Spa.ProjectTemplates.3.1' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.Extensions.ApiDescription.Client-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.ApiDescription.Client' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.Extensions.ApiDescription.Server-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.ApiDescription.Server' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore' AND '$(TargetFramework)' == 'netstandard2.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.Extensions.Identity.Core-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.Identity.Core' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.Identity.Core' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.Identity.Core' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.Extensions.Identity.Stores-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.Identity.Stores' ">
|
||||
<BaselinePackageVersion>3.1.0</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.1</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.Identity.Stores' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Core" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Core" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.Identity.Stores' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Core" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Core" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="[3.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.1, )" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
152
eng/Baseline.xml
152
eng/Baseline.xml
|
|
@ -4,86 +4,86 @@ This file contains a list of all the packages and their versions which were rele
|
|||
Update this list when preparing for a new patch.
|
||||
|
||||
-->
|
||||
<Baseline Version="3.1.0">
|
||||
<Package Id="AspNetCoreRuntime.3.0.x64" Version="3.0.0" />
|
||||
<Package Id="AspNetCoreRuntime.3.0.x86" Version="3.0.0" />
|
||||
<Package Id="dotnet-sql-cache" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.ApiAuthorization.IdentityServer" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.App.Runtime.win-x64" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.AzureAD.UI" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.AzureADB2C.UI" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Certificate" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Facebook" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Google" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Negotiate" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Twitter" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.WsFederation" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Authorization" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.AzureAppServices.HostingStartup" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.AzureAppServices.SiteExtension" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.AzureAppServicesIntegration" Version="3.1.0" />
|
||||
<Baseline Version="3.1.1">
|
||||
<Package Id="AspNetCoreRuntime.3.0.x64" Version="3.0.2" />
|
||||
<Package Id="AspNetCoreRuntime.3.0.x86" Version="3.0.2" />
|
||||
<Package Id="dotnet-sql-cache" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.ApiAuthorization.IdentityServer" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.App.Runtime.win-x64" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.AzureAD.UI" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.AzureADB2C.UI" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Certificate" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Facebook" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Google" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Negotiate" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Twitter" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.WsFederation" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Authorization" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.AzureAppServices.HostingStartup" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.AzureAppServices.SiteExtension" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.AzureAppServicesIntegration" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Blazor" Version="3.0.0-preview9.19465.2" />
|
||||
<Package Id="Microsoft.AspNetCore.Blazor.Build" Version="3.0.0-preview9.19465.2" />
|
||||
<Package Id="Microsoft.AspNetCore.Blazor.DevServer" Version="3.0.0-preview9.19465.2" />
|
||||
<Package Id="Microsoft.AspNetCore.Blazor.HttpClient" Version="3.0.0-preview9.19465.2" />
|
||||
<Package Id="Microsoft.AspNetCore.Blazor.Server" Version="3.0.0-preview9.19465.2" />
|
||||
<Package Id="Microsoft.AspNetCore.Blazor.Templates" Version="3.0.0-preview9.19465.2" />
|
||||
<Package Id="Microsoft.AspNetCore.Components" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Components.Analyzers" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Components.Authorization" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Components.Forms" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Components.Web" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.ConcurrencyLimiter" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Connections.Abstractions" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Cryptography.Internal" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.Abstractions" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.AzureKeyVault" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.AzureStorage" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.EntityFrameworkCore" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.Extensions" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.HeaderPropagation" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Hosting.WindowsServices" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Http.Connections.Client" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Http.Connections.Common" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Http.Features" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Identity.Specification.Tests" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Identity.UI" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.JsonPatch" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Metadata" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.MiddlewareAnalysis" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Mvc.Testing" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.NodeServices" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Owin" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Client" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Client.Core" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Common" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Specification.Tests" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.SpaServices" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.SpaServices.Extensions" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.TestHost" Version="3.1.0" />
|
||||
<Package Id="Microsoft.dotnet-openapi" Version="3.1.0" />
|
||||
<Package Id="Microsoft.DotNet.Web.Client.ItemTemplates" Version="3.1.0" />
|
||||
<Package Id="Microsoft.DotNet.Web.ItemTemplates" Version="3.1.0" />
|
||||
<Package Id="Microsoft.DotNet.Web.ProjectTemplates.3.1" Version="3.1.0" />
|
||||
<Package Id="Microsoft.DotNet.Web.Spa.ProjectTemplates.3.1" Version="3.1.0" />
|
||||
<Package Id="Microsoft.Extensions.ApiDescription.Client" Version="3.1.0" />
|
||||
<Package Id="Microsoft.Extensions.ApiDescription.Server" Version="3.1.0" />
|
||||
<Package Id="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="3.1.0" />
|
||||
<Package Id="Microsoft.Extensions.Identity.Core" Version="3.1.0" />
|
||||
<Package Id="Microsoft.Extensions.Identity.Stores" Version="3.1.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Components" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Components.Analyzers" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Components.Authorization" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Components.Forms" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Components.Web" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.ConcurrencyLimiter" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Connections.Abstractions" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Cryptography.Internal" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.Abstractions" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.AzureKeyVault" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.AzureStorage" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.EntityFrameworkCore" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.Extensions" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.HeaderPropagation" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Hosting.WindowsServices" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Http.Connections.Client" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Http.Connections.Common" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Http.Features" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Identity.Specification.Tests" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Identity.UI" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.JsonPatch" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Metadata" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.MiddlewareAnalysis" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Mvc.Testing" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.NodeServices" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Owin" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Client" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Client.Core" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Common" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Specification.Tests" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.SpaServices" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.SpaServices.Extensions" Version="3.1.1" />
|
||||
<Package Id="Microsoft.AspNetCore.TestHost" Version="3.1.1" />
|
||||
<Package Id="Microsoft.dotnet-openapi" Version="3.1.1" />
|
||||
<Package Id="Microsoft.DotNet.Web.Client.ItemTemplates" Version="3.1.1" />
|
||||
<Package Id="Microsoft.DotNet.Web.ItemTemplates" Version="3.1.1" />
|
||||
<Package Id="Microsoft.DotNet.Web.ProjectTemplates.3.1" Version="3.1.1" />
|
||||
<Package Id="Microsoft.DotNet.Web.Spa.ProjectTemplates.3.1" Version="3.1.1" />
|
||||
<Package Id="Microsoft.Extensions.ApiDescription.Client" Version="3.1.1" />
|
||||
<Package Id="Microsoft.Extensions.ApiDescription.Server" Version="3.1.1" />
|
||||
<Package Id="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="3.1.1" />
|
||||
<Package Id="Microsoft.Extensions.Identity.Core" Version="3.1.1" />
|
||||
<Package Id="Microsoft.Extensions.Identity.Stores" Version="3.1.1" />
|
||||
</Baseline>
|
||||
|
|
@ -13,281 +13,281 @@
|
|||
<Uri>https://github.com/aspnet/Blazor</Uri>
|
||||
<Sha>7868699de745fd30a654c798a99dc541b77b95c0</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.AspNetCore.Razor.Language" Version="3.1.1-servicing.19605.6">
|
||||
<Uri>https://github.com/aspnet/AspNetCore-Tooling</Uri>
|
||||
<Sha>9cf15bed711983d35362d62972ab87ccc88ba8ca</Sha>
|
||||
<Dependency Name="Microsoft.AspNetCore.Razor.Language" Version="3.1.1">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-AspNetCore-Tooling</Uri>
|
||||
<Sha>07f16c89db55ab6f9f773cc3db6eb5a52908065e</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.AspNetCore.Mvc.Razor.Extensions" Version="3.1.1-servicing.19605.6">
|
||||
<Uri>https://github.com/aspnet/AspNetCore-Tooling</Uri>
|
||||
<Sha>9cf15bed711983d35362d62972ab87ccc88ba8ca</Sha>
|
||||
<Dependency Name="Microsoft.AspNetCore.Mvc.Razor.Extensions" Version="3.1.1">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-AspNetCore-Tooling</Uri>
|
||||
<Sha>07f16c89db55ab6f9f773cc3db6eb5a52908065e</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.CodeAnalysis.Razor" Version="3.1.1-servicing.19605.6">
|
||||
<Uri>https://github.com/aspnet/AspNetCore-Tooling</Uri>
|
||||
<Sha>9cf15bed711983d35362d62972ab87ccc88ba8ca</Sha>
|
||||
<Dependency Name="Microsoft.CodeAnalysis.Razor" Version="3.1.1">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-AspNetCore-Tooling</Uri>
|
||||
<Sha>07f16c89db55ab6f9f773cc3db6eb5a52908065e</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.NET.Sdk.Razor" Version="3.1.1-servicing.19605.6">
|
||||
<Uri>https://github.com/aspnet/AspNetCore-Tooling</Uri>
|
||||
<Sha>9cf15bed711983d35362d62972ab87ccc88ba8ca</Sha>
|
||||
<Dependency Name="Microsoft.NET.Sdk.Razor" Version="3.1.1">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-AspNetCore-Tooling</Uri>
|
||||
<Sha>07f16c89db55ab6f9f773cc3db6eb5a52908065e</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="dotnet-ef" Version="3.1.1-servicing.19605.1">
|
||||
<Uri>https://github.com/aspnet/EntityFrameworkCore</Uri>
|
||||
<Sha>7f59c0bb92fb33698232f0d7007ebcb0a428b543</Sha>
|
||||
<Dependency Name="dotnet-ef" Version="3.1.1">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-EntityFrameworkCore</Uri>
|
||||
<Sha>fde8a73d63ea11e1f2bdc690cf1b16ba0a449649</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.InMemory" Version="3.1.1-servicing.19605.1">
|
||||
<Uri>https://github.com/aspnet/EntityFrameworkCore</Uri>
|
||||
<Sha>7f59c0bb92fb33698232f0d7007ebcb0a428b543</Sha>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.InMemory" Version="3.1.1">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-EntityFrameworkCore</Uri>
|
||||
<Sha>fde8a73d63ea11e1f2bdc690cf1b16ba0a449649</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.Relational" Version="3.1.1-servicing.19605.1">
|
||||
<Uri>https://github.com/aspnet/EntityFrameworkCore</Uri>
|
||||
<Sha>7f59c0bb92fb33698232f0d7007ebcb0a428b543</Sha>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.Relational" Version="3.1.1">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-EntityFrameworkCore</Uri>
|
||||
<Sha>fde8a73d63ea11e1f2bdc690cf1b16ba0a449649</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.1-servicing.19605.1">
|
||||
<Uri>https://github.com/aspnet/EntityFrameworkCore</Uri>
|
||||
<Sha>7f59c0bb92fb33698232f0d7007ebcb0a428b543</Sha>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.1">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-EntityFrameworkCore</Uri>
|
||||
<Sha>fde8a73d63ea11e1f2bdc690cf1b16ba0a449649</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.1-servicing.19605.1">
|
||||
<Uri>https://github.com/aspnet/EntityFrameworkCore</Uri>
|
||||
<Sha>7f59c0bb92fb33698232f0d7007ebcb0a428b543</Sha>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.1">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-EntityFrameworkCore</Uri>
|
||||
<Sha>fde8a73d63ea11e1f2bdc690cf1b16ba0a449649</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.Tools" Version="3.1.1-servicing.19605.1">
|
||||
<Uri>https://github.com/aspnet/EntityFrameworkCore</Uri>
|
||||
<Sha>7f59c0bb92fb33698232f0d7007ebcb0a428b543</Sha>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.Tools" Version="3.1.1">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-EntityFrameworkCore</Uri>
|
||||
<Sha>fde8a73d63ea11e1f2bdc690cf1b16ba0a449649</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore" Version="3.1.1-servicing.19605.1">
|
||||
<Uri>https://github.com/aspnet/EntityFrameworkCore</Uri>
|
||||
<Sha>7f59c0bb92fb33698232f0d7007ebcb0a428b543</Sha>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore" Version="3.1.1">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-EntityFrameworkCore</Uri>
|
||||
<Sha>fde8a73d63ea11e1f2bdc690cf1b16ba0a449649</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.AspNetCore.Analyzer.Testing" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.AspNetCore.Analyzer.Testing" Version="3.1.1-servicing.19614.4" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.AspNetCore.BenchmarkRunner.Sources" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.AspNetCore.BenchmarkRunner.Sources" Version="3.1.1-servicing.19614.4" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.ActivatorUtilities.Sources" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.ActivatorUtilities.Sources" Version="3.1.1-servicing.19614.4" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Caching.Abstractions" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Caching.Abstractions" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Caching.Memory" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Caching.Memory" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Caching.SqlServer" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Caching.SqlServer" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Caching.StackExchangeRedis" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Caching.StackExchangeRedis" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.CommandLineUtils.Sources" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.CommandLineUtils.Sources" Version="3.1.1-servicing.19614.4" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Abstractions" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Abstractions" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.AzureKeyVault" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.AzureKeyVault" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Binder" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Binder" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.CommandLine" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.CommandLine" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Ini" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Ini" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Json" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Json" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.KeyPerFile" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.KeyPerFile" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.UserSecrets" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.UserSecrets" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Xml" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Xml" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.DependencyInjection" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.DependencyInjection" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.DiagnosticAdapter" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.DiagnosticAdapter" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Diagnostics.HealthChecks" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Diagnostics.HealthChecks" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Abstractions" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Abstractions" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Composite" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Composite" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Embedded" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Embedded" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Physical" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Physical" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.FileSystemGlobbing" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.FileSystemGlobbing" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.HashCodeCombiner.Sources" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.HashCodeCombiner.Sources" Version="3.1.1-servicing.19614.4" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Hosting" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Hosting" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.HostFactoryResolver.Sources" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.HostFactoryResolver.Sources" Version="3.1.1-servicing.19614.4" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Http" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Http" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Localization.Abstractions" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Localization.Abstractions" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Localization" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Localization" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Abstractions" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Abstractions" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.AzureAppServices" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.AzureAppServices" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Configuration" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Configuration" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Console" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Console" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Debug" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Debug" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.EventSource" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.EventSource" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.EventLog" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.EventLog" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.TraceSource" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.TraceSource" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Testing" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Testing" Version="3.1.1-servicing.19614.4" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Logging" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.ObjectPool" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.ObjectPool" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Options.DataAnnotations" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Options.DataAnnotations" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Options" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Options" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.ParameterDefaultValue.Sources" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.ParameterDefaultValue.Sources" Version="3.1.1-servicing.19614.4" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Primitives" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.Primitives" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.TypeNameHelper.Sources" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.TypeNameHelper.Sources" Version="3.1.1-servicing.19614.4" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.ValueStopwatch.Sources" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.ValueStopwatch.Sources" Version="3.1.1-servicing.19614.4" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.WebEncoders" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.WebEncoders" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.JSInterop" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.JSInterop" Version="3.1.1" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Mono.WebAssembly.Interop" Version="3.1.1-preview4.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Mono.WebAssembly.Interop" Version="3.1.1-preview4.19614.4" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Bcl.AsyncInterfaces" Version="1.1.0" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
|
|
@ -377,25 +377,25 @@
|
|||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>0f7f38c4fd323b26da10cce95f857f77f0f09b48</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.DependencyModel" Version="3.1.1-servicing.19576.9" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||
<Uri>https://github.com/dotnet/core-setup</Uri>
|
||||
<Sha>f3f2dd583fffa254015fc21ff0e45784b333256d</Sha>
|
||||
<Dependency Name="Microsoft.Extensions.DependencyModel" Version="3.1.1" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-core-setup</Uri>
|
||||
<Sha>a1388f194c30cb21b36b75982962cb5e35954e4e</Sha>
|
||||
</Dependency>
|
||||
<!--
|
||||
Win-x64 is used here because we have picked an arbitrary runtime identifier to flow the version of the latest NETCore.App runtime.
|
||||
All Runtime.$rid packages should have the same version.
|
||||
-->
|
||||
<Dependency Name="Microsoft.NETCore.App.Runtime.win-x64" Version="3.1.1-servicing.19576.9" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||
<Uri>https://github.com/dotnet/core-setup</Uri>
|
||||
<Sha>f3f2dd583fffa254015fc21ff0e45784b333256d</Sha>
|
||||
<Dependency Name="Microsoft.NETCore.App.Runtime.win-x64" Version="3.1.1" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-core-setup</Uri>
|
||||
<Sha>a1388f194c30cb21b36b75982962cb5e35954e4e</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="NETStandard.Library.Ref" Version="2.1.0" Pinned="true">
|
||||
<Uri>https://github.com/dotnet/core-setup</Uri>
|
||||
<Sha>7d57652f33493fa022125b7f63aad0d70c52d810</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.NETCore.App.Internal" Version="3.1.1-servicing.19576.9" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||
<Uri>https://github.com/dotnet/core-setup</Uri>
|
||||
<Sha>f3f2dd583fffa254015fc21ff0e45784b333256d</Sha>
|
||||
<Dependency Name="Microsoft.NETCore.App.Internal" Version="3.1.1-servicing.19608.4" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-core-setup</Uri>
|
||||
<Sha>a1388f194c30cb21b36b75982962cb5e35954e4e</Sha>
|
||||
</Dependency>
|
||||
<!-- Keep these dependencies at the bottom of ProductDependencies, else they will be picked as the parent for CoherentParentDependencies -->
|
||||
<Dependency Name="Microsoft.NETCore.App.Ref" Version="3.1.0" Pinned="true">
|
||||
|
|
@ -413,9 +413,9 @@
|
|||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>0f7f38c4fd323b26da10cce95f857f77f0f09b48</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Internal.AspNetCore.Analyzers" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Internal.AspNetCore.Analyzers" Version="3.1.1-servicing.19614.4" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.DotNet.GenAPI" Version="1.0.0-beta.19607.3">
|
||||
<Uri>https://github.com/dotnet/arcade</Uri>
|
||||
|
|
@ -429,9 +429,9 @@
|
|||
<Uri>https://github.com/dotnet/arcade</Uri>
|
||||
<Sha>4d80b9cfa53e309c8f685abff3512f60c3d8a3d1</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.AspNetCore.Testing" Version="3.1.1-servicing.19604.6" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>d40e21ccc14908a054b2181b1d6aeb22c49c630d</Sha>
|
||||
<Dependency Name="Microsoft.AspNetCore.Testing" Version="3.1.1-servicing.19614.4" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://dev.azure.com/dnceng/internal/_git/aspnet-Extensions</Uri>
|
||||
<Sha>d00c382ec5d68a85d2eb4a49ab4559b8db7a2390</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="3.4.0-beta4-19569-03" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||
<Uri>https://github.com/dotnet/roslyn</Uri>
|
||||
|
|
|
|||
|
|
@ -8,12 +8,12 @@
|
|||
<PropertyGroup Label="Version settings">
|
||||
<AspNetCoreMajorVersion>3</AspNetCoreMajorVersion>
|
||||
<AspNetCoreMinorVersion>1</AspNetCoreMinorVersion>
|
||||
<AspNetCorePatchVersion>1</AspNetCorePatchVersion>
|
||||
<AspNetCorePatchVersion>2</AspNetCorePatchVersion>
|
||||
<PreReleasePreviewNumber>0</PreReleasePreviewNumber>
|
||||
<!--
|
||||
When StabilizePackageVersion is set to 'true', this branch will produce stable outputs for 'Shipping' packages
|
||||
-->
|
||||
<StabilizePackageVersion Condition="'$(StabilizePackageVersion)' == ''">false</StabilizePackageVersion>
|
||||
<StabilizePackageVersion Condition="'$(StabilizePackageVersion)' == ''">true</StabilizePackageVersion>
|
||||
<DotNetFinalVersionKind Condition="'$(StabilizePackageVersion)' == 'true'">release</DotNetFinalVersionKind>
|
||||
<IncludePreReleaseLabelInPackageVersion>true</IncludePreReleaseLabelInPackageVersion>
|
||||
<IncludePreReleaseLabelInPackageVersion Condition=" '$(DotNetFinalVersionKind)' == 'release' ">false</IncludePreReleaseLabelInPackageVersion>
|
||||
|
|
@ -66,10 +66,10 @@
|
|||
<!-- Packages from dotnet/roslyn -->
|
||||
<MicrosoftNetCompilersToolsetPackageVersion>3.4.0-beta4-19569-03</MicrosoftNetCompilersToolsetPackageVersion>
|
||||
<!-- Packages from dotnet/core-setup -->
|
||||
<MicrosoftExtensionsDependencyModelPackageVersion>3.1.1-servicing.19576.9</MicrosoftExtensionsDependencyModelPackageVersion>
|
||||
<MicrosoftNETCoreAppInternalPackageVersion>3.1.1-servicing.19576.9</MicrosoftNETCoreAppInternalPackageVersion>
|
||||
<MicrosoftExtensionsDependencyModelPackageVersion>3.1.1</MicrosoftExtensionsDependencyModelPackageVersion>
|
||||
<MicrosoftNETCoreAppInternalPackageVersion>3.1.1-servicing.19608.4</MicrosoftNETCoreAppInternalPackageVersion>
|
||||
<MicrosoftNETCoreAppRefPackageVersion>3.1.0</MicrosoftNETCoreAppRefPackageVersion>
|
||||
<MicrosoftNETCoreAppRuntimewinx64PackageVersion>3.1.1-servicing.19576.9</MicrosoftNETCoreAppRuntimewinx64PackageVersion>
|
||||
<MicrosoftNETCoreAppRuntimewinx64PackageVersion>3.1.1</MicrosoftNETCoreAppRuntimewinx64PackageVersion>
|
||||
<NETStandardLibraryRefPackageVersion>2.1.0</NETStandardLibraryRefPackageVersion>
|
||||
<!-- Packages from dotnet/corefx -->
|
||||
<MicrosoftBclAsyncInterfacesPackageVersion>1.1.0</MicrosoftBclAsyncInterfacesPackageVersion>
|
||||
|
|
@ -99,80 +99,80 @@
|
|||
<!-- Packages from aspnet/Blazor -->
|
||||
<MicrosoftAspNetCoreBlazorMonoPackageVersion>3.1.0-preview4.19605.1</MicrosoftAspNetCoreBlazorMonoPackageVersion>
|
||||
<!-- Packages from aspnet/Extensions -->
|
||||
<InternalAspNetCoreAnalyzersPackageVersion>3.1.1-servicing.19604.6</InternalAspNetCoreAnalyzersPackageVersion>
|
||||
<MicrosoftAspNetCoreAnalyzerTestingPackageVersion>3.1.1-servicing.19604.6</MicrosoftAspNetCoreAnalyzerTestingPackageVersion>
|
||||
<MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>3.1.1-servicing.19604.6</MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>
|
||||
<MicrosoftAspNetCoreTestingPackageVersion>3.1.1-servicing.19604.6</MicrosoftAspNetCoreTestingPackageVersion>
|
||||
<MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion>
|
||||
<MicrosoftExtensionsCachingAbstractionsPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsCachingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsCachingMemoryPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsCachingMemoryPackageVersion>
|
||||
<MicrosoftExtensionsCachingSqlServerPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsCachingSqlServerPackageVersion>
|
||||
<MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>
|
||||
<MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationAbstractionsPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsConfigurationAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationBinderPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsConfigurationBinderPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
|
||||
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationIniPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsConfigurationIniPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationJsonPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsConfigurationJsonPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationKeyPerFilePackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsConfigurationKeyPerFilePackageVersion>
|
||||
<MicrosoftExtensionsConfigurationPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsConfigurationPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationUserSecretsPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationXmlPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsConfigurationXmlPackageVersion>
|
||||
<MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsDependencyInjectionPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsDependencyInjectionPackageVersion>
|
||||
<MicrosoftExtensionsDiagnosticAdapterPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsDiagnosticAdapterPackageVersion>
|
||||
<MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersCompositePackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsFileProvidersCompositePackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersPhysicalPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsFileProvidersPhysicalPackageVersion>
|
||||
<MicrosoftExtensionsFileSystemGlobbingPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsFileSystemGlobbingPackageVersion>
|
||||
<MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>
|
||||
<MicrosoftExtensionsHostingAbstractionsPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsHostingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsHostingPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsHostingPackageVersion>
|
||||
<MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>
|
||||
<MicrosoftExtensionsHttpPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsHttpPackageVersion>
|
||||
<MicrosoftExtensionsLocalizationAbstractionsPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsLocalizationAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsLocalizationPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsLocalizationPackageVersion>
|
||||
<MicrosoftExtensionsLoggingAbstractionsPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsLoggingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConfigurationPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsLoggingConfigurationPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConsolePackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsLoggingConsolePackageVersion>
|
||||
<MicrosoftExtensionsLoggingDebugPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsLoggingDebugPackageVersion>
|
||||
<MicrosoftExtensionsLoggingEventSourcePackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsLoggingEventSourcePackageVersion>
|
||||
<MicrosoftExtensionsLoggingEventLogPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsLoggingEventLogPackageVersion>
|
||||
<MicrosoftExtensionsLoggingPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsLoggingPackageVersion>
|
||||
<MicrosoftExtensionsLoggingTestingPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsLoggingTestingPackageVersion>
|
||||
<MicrosoftExtensionsLoggingTraceSourcePackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsLoggingTraceSourcePackageVersion>
|
||||
<MicrosoftExtensionsObjectPoolPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsObjectPoolPackageVersion>
|
||||
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
|
||||
<MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>
|
||||
<MicrosoftExtensionsOptionsPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsOptionsPackageVersion>
|
||||
<MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>
|
||||
<MicrosoftExtensionsPrimitivesPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsPrimitivesPackageVersion>
|
||||
<MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>
|
||||
<MicrosoftExtensionsValueStopwatchSourcesPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsValueStopwatchSourcesPackageVersion>
|
||||
<MicrosoftExtensionsWebEncodersPackageVersion>3.1.1-servicing.19604.6</MicrosoftExtensionsWebEncodersPackageVersion>
|
||||
<InternalAspNetCoreAnalyzersPackageVersion>3.1.1-servicing.19614.4</InternalAspNetCoreAnalyzersPackageVersion>
|
||||
<MicrosoftAspNetCoreAnalyzerTestingPackageVersion>3.1.1-servicing.19614.4</MicrosoftAspNetCoreAnalyzerTestingPackageVersion>
|
||||
<MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>3.1.1-servicing.19614.4</MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>
|
||||
<MicrosoftAspNetCoreTestingPackageVersion>3.1.1-servicing.19614.4</MicrosoftAspNetCoreTestingPackageVersion>
|
||||
<MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion>3.1.1-servicing.19614.4</MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion>
|
||||
<MicrosoftExtensionsCachingAbstractionsPackageVersion>3.1.1</MicrosoftExtensionsCachingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsCachingMemoryPackageVersion>3.1.1</MicrosoftExtensionsCachingMemoryPackageVersion>
|
||||
<MicrosoftExtensionsCachingSqlServerPackageVersion>3.1.1</MicrosoftExtensionsCachingSqlServerPackageVersion>
|
||||
<MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>3.1.1</MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>
|
||||
<MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>3.1.1-servicing.19614.4</MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationAbstractionsPackageVersion>3.1.1</MicrosoftExtensionsConfigurationAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>3.1.1</MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationBinderPackageVersion>3.1.1</MicrosoftExtensionsConfigurationBinderPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>3.1.1</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
|
||||
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>3.1.1</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>3.1.1</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationIniPackageVersion>3.1.1</MicrosoftExtensionsConfigurationIniPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationJsonPackageVersion>3.1.1</MicrosoftExtensionsConfigurationJsonPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationKeyPerFilePackageVersion>3.1.1</MicrosoftExtensionsConfigurationKeyPerFilePackageVersion>
|
||||
<MicrosoftExtensionsConfigurationPackageVersion>3.1.1</MicrosoftExtensionsConfigurationPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationUserSecretsPackageVersion>3.1.1</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationXmlPackageVersion>3.1.1</MicrosoftExtensionsConfigurationXmlPackageVersion>
|
||||
<MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>3.1.1</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsDependencyInjectionPackageVersion>3.1.1</MicrosoftExtensionsDependencyInjectionPackageVersion>
|
||||
<MicrosoftExtensionsDiagnosticAdapterPackageVersion>3.1.1</MicrosoftExtensionsDiagnosticAdapterPackageVersion>
|
||||
<MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion>3.1.1</MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion>3.1.1</MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>3.1.1</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersCompositePackageVersion>3.1.1</MicrosoftExtensionsFileProvidersCompositePackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>3.1.1</MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersPhysicalPackageVersion>3.1.1</MicrosoftExtensionsFileProvidersPhysicalPackageVersion>
|
||||
<MicrosoftExtensionsFileSystemGlobbingPackageVersion>3.1.1</MicrosoftExtensionsFileSystemGlobbingPackageVersion>
|
||||
<MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>3.1.1-servicing.19614.4</MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>
|
||||
<MicrosoftExtensionsHostingAbstractionsPackageVersion>3.1.1</MicrosoftExtensionsHostingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsHostingPackageVersion>3.1.1</MicrosoftExtensionsHostingPackageVersion>
|
||||
<MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>3.1.1-servicing.19614.4</MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>
|
||||
<MicrosoftExtensionsHttpPackageVersion>3.1.1</MicrosoftExtensionsHttpPackageVersion>
|
||||
<MicrosoftExtensionsLocalizationAbstractionsPackageVersion>3.1.1</MicrosoftExtensionsLocalizationAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsLocalizationPackageVersion>3.1.1</MicrosoftExtensionsLocalizationPackageVersion>
|
||||
<MicrosoftExtensionsLoggingAbstractionsPackageVersion>3.1.1</MicrosoftExtensionsLoggingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>3.1.1</MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConfigurationPackageVersion>3.1.1</MicrosoftExtensionsLoggingConfigurationPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConsolePackageVersion>3.1.1</MicrosoftExtensionsLoggingConsolePackageVersion>
|
||||
<MicrosoftExtensionsLoggingDebugPackageVersion>3.1.1</MicrosoftExtensionsLoggingDebugPackageVersion>
|
||||
<MicrosoftExtensionsLoggingEventSourcePackageVersion>3.1.1</MicrosoftExtensionsLoggingEventSourcePackageVersion>
|
||||
<MicrosoftExtensionsLoggingEventLogPackageVersion>3.1.1</MicrosoftExtensionsLoggingEventLogPackageVersion>
|
||||
<MicrosoftExtensionsLoggingPackageVersion>3.1.1</MicrosoftExtensionsLoggingPackageVersion>
|
||||
<MicrosoftExtensionsLoggingTestingPackageVersion>3.1.1-servicing.19614.4</MicrosoftExtensionsLoggingTestingPackageVersion>
|
||||
<MicrosoftExtensionsLoggingTraceSourcePackageVersion>3.1.1</MicrosoftExtensionsLoggingTraceSourcePackageVersion>
|
||||
<MicrosoftExtensionsObjectPoolPackageVersion>3.1.1</MicrosoftExtensionsObjectPoolPackageVersion>
|
||||
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>3.1.1</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
|
||||
<MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>3.1.1</MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>
|
||||
<MicrosoftExtensionsOptionsPackageVersion>3.1.1</MicrosoftExtensionsOptionsPackageVersion>
|
||||
<MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>3.1.1-servicing.19614.4</MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>
|
||||
<MicrosoftExtensionsPrimitivesPackageVersion>3.1.1</MicrosoftExtensionsPrimitivesPackageVersion>
|
||||
<MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>3.1.1-servicing.19614.4</MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>
|
||||
<MicrosoftExtensionsValueStopwatchSourcesPackageVersion>3.1.1-servicing.19614.4</MicrosoftExtensionsValueStopwatchSourcesPackageVersion>
|
||||
<MicrosoftExtensionsWebEncodersPackageVersion>3.1.1</MicrosoftExtensionsWebEncodersPackageVersion>
|
||||
<MicrosoftInternalExtensionsRefsPackageVersion>3.1.0-rtm.19565.4</MicrosoftInternalExtensionsRefsPackageVersion>
|
||||
<MicrosoftJSInteropPackageVersion>3.1.1-servicing.19604.6</MicrosoftJSInteropPackageVersion>
|
||||
<MonoWebAssemblyInteropPackageVersion>3.1.1-preview4.19604.6</MonoWebAssemblyInteropPackageVersion>
|
||||
<MicrosoftJSInteropPackageVersion>3.1.1</MicrosoftJSInteropPackageVersion>
|
||||
<MonoWebAssemblyInteropPackageVersion>3.1.1-preview4.19614.4</MonoWebAssemblyInteropPackageVersion>
|
||||
<!-- Packages from aspnet/EntityFrameworkCore -->
|
||||
<dotnetefPackageVersion>3.1.1-servicing.19605.1</dotnetefPackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreInMemoryPackageVersion>3.1.1-servicing.19605.1</MicrosoftEntityFrameworkCoreInMemoryPackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreRelationalPackageVersion>3.1.1-servicing.19605.1</MicrosoftEntityFrameworkCoreRelationalPackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreSqlitePackageVersion>3.1.1-servicing.19605.1</MicrosoftEntityFrameworkCoreSqlitePackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreSqlServerPackageVersion>3.1.1-servicing.19605.1</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreToolsPackageVersion>3.1.1-servicing.19605.1</MicrosoftEntityFrameworkCoreToolsPackageVersion>
|
||||
<MicrosoftEntityFrameworkCorePackageVersion>3.1.1-servicing.19605.1</MicrosoftEntityFrameworkCorePackageVersion>
|
||||
<dotnetefPackageVersion>3.1.1</dotnetefPackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreInMemoryPackageVersion>3.1.1</MicrosoftEntityFrameworkCoreInMemoryPackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreRelationalPackageVersion>3.1.1</MicrosoftEntityFrameworkCoreRelationalPackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreSqlitePackageVersion>3.1.1</MicrosoftEntityFrameworkCoreSqlitePackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreSqlServerPackageVersion>3.1.1</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreToolsPackageVersion>3.1.1</MicrosoftEntityFrameworkCoreToolsPackageVersion>
|
||||
<MicrosoftEntityFrameworkCorePackageVersion>3.1.1</MicrosoftEntityFrameworkCorePackageVersion>
|
||||
<!-- Packages from aspnet/AspNetCore-Tooling -->
|
||||
<MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>3.1.1-servicing.19605.6</MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>
|
||||
<MicrosoftAspNetCoreRazorLanguagePackageVersion>3.1.1-servicing.19605.6</MicrosoftAspNetCoreRazorLanguagePackageVersion>
|
||||
<MicrosoftCodeAnalysisRazorPackageVersion>3.1.1-servicing.19605.6</MicrosoftCodeAnalysisRazorPackageVersion>
|
||||
<MicrosoftNETSdkRazorPackageVersion>3.1.1-servicing.19605.6</MicrosoftNETSdkRazorPackageVersion>
|
||||
<MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>3.1.1</MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>
|
||||
<MicrosoftAspNetCoreRazorLanguagePackageVersion>3.1.1</MicrosoftAspNetCoreRazorLanguagePackageVersion>
|
||||
<MicrosoftCodeAnalysisRazorPackageVersion>3.1.1</MicrosoftCodeAnalysisRazorPackageVersion>
|
||||
<MicrosoftNETSdkRazorPackageVersion>3.1.1</MicrosoftNETSdkRazorPackageVersion>
|
||||
</PropertyGroup>
|
||||
<!--
|
||||
|
||||
|
|
@ -269,5 +269,6 @@
|
|||
<PropertyGroup Label="Restore feeds">
|
||||
<!-- In an orchestrated build, this may be overridden to other Azure feeds. -->
|
||||
<DotNetAssetRootUrl Condition="'$(DotNetAssetRootUrl)'==''">https://dotnetcli.blob.core.windows.net/dotnet/</DotNetAssetRootUrl>
|
||||
<DotNetPrivateAssetRootUrl Condition="'$(DotNetPrivateAssetRootUrl)'==''">https://dotnetclimsrc.blob.core.windows.net/dotnet/</DotNetPrivateAssetRootUrl>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -210,7 +210,15 @@ function InstallDotNet {
|
|||
|
||||
local runtimeSourceFeedKey=''
|
||||
if [[ -n "${7:-}" ]]; then
|
||||
decodedFeedKey=`echo $7 | base64 --decode`
|
||||
# The 'base64' binary on alpine uses '-d' and doesn't support '--decode'
|
||||
# like the rest of the unix variants. At the same time, MacOS doesn't support
|
||||
# '-d'. To work around this, do a simple detection and switch the parameter
|
||||
# accordingly.
|
||||
decodeArg="--decode"
|
||||
if base64 --help 2>&1 | grep -q "BusyBox"; then
|
||||
decodeArg="-d"
|
||||
fi
|
||||
decodedFeedKey=`echo $7 | base64 $decodeArg`
|
||||
runtimeSourceFeedKey="--feed-credential $decodedFeedKey"
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,11 @@
|
|||
This script runs a quick check for common errors, such as checking that Visual Studio solutions are up to date or that generated code has been committed to source.
|
||||
#>
|
||||
param(
|
||||
[switch]$ci
|
||||
[switch]$ci,
|
||||
# Optional arguments that enable downloading an internal
|
||||
# runtime or runtime from a non-default location
|
||||
[string]$DotNetRuntimeSourceFeed,
|
||||
[string]$DotNetRuntimeSourceFeedKey
|
||||
)
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
|
@ -43,7 +47,12 @@ function LogError {
|
|||
try {
|
||||
if ($ci) {
|
||||
# Install dotnet.exe
|
||||
& $repoRoot/restore.cmd -ci -NoBuildNodeJS
|
||||
if ($DotNetRuntimeSourceFeed -or $DotNetRuntimeSourceFeedKey) {
|
||||
& $repoRoot/restore.cmd -ci -NoBuildNodeJS -DotNetRuntimeSourceFeed $DotNetRuntimeSourceFeed -DotNetRuntimeSourceFeedKey $DotNetRuntimeSourceFeedKey
|
||||
}
|
||||
else{
|
||||
& $repoRoot/restore.cmd -ci -NoBuildNodeJS
|
||||
}
|
||||
}
|
||||
|
||||
. "$repoRoot/activate.ps1"
|
||||
|
|
@ -171,12 +180,13 @@ try {
|
|||
# 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>nul'
|
||||
|
||||
# Temporary: Disable check for blazor js file
|
||||
$changedFilesExclusion = "src/Components/Web.JS/dist/Release/blazor.server.js"
|
||||
# Temporary: Disable check for blazor js file and nuget.config (updated automatically for
|
||||
# internal builds)
|
||||
$changedFilesExclusions = @("src/Components/Web.JS/dist/Release/blazor.server.js", "NuGet.config")
|
||||
|
||||
if ($changedFiles) {
|
||||
foreach ($file in $changedFiles) {
|
||||
if ($file -eq $changedFilesExclusion) {continue}
|
||||
if ($changedFilesExclusions -contains $file) {continue}
|
||||
|
||||
$filePath = Resolve-Path "${repoRoot}/${file}"
|
||||
LogError "Generated code is not up to date in $file. You might need to regenerate the reference assemblies or project list (see docs/ReferenceAssemblies.md and docs/ReferenceResolution.md)" -filepath $filePath
|
||||
|
|
|
|||
|
|
@ -9,10 +9,31 @@ set -euo pipefail
|
|||
scriptroot="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
reporoot="$(dirname "$(dirname "$scriptroot")")"
|
||||
|
||||
# For local development, make a backup copy of this file first
|
||||
if [ ! -f "$reporoot/global.bak.json" ]; then
|
||||
mv "$reporoot/global.json" "$reporoot/global.bak.json"
|
||||
fi
|
||||
|
||||
# Detect the current version of .NET Core installed
|
||||
export SDK_VERSION=$(dotnet --version)
|
||||
echo "The ambient version of .NET Core SDK version = $SDK_VERSION"
|
||||
|
||||
# Update the global.json file to match the current .NET environment
|
||||
cat "$reporoot/global.bak.json" | \
|
||||
jq '.sdk.version=env.SDK_VERSION' | \
|
||||
jq '.tools.dotnet=env.SDK_VERSION' | \
|
||||
jq 'del(.tools.runtimes)' \
|
||||
> "$reporoot/global.json"
|
||||
|
||||
# Restore the original global.json file
|
||||
trap "{
|
||||
mv "$reporoot/global.bak.json" "$reporoot/global.json"
|
||||
}" EXIT
|
||||
|
||||
# Build repo tasks
|
||||
"$reporoot/eng/common/build.sh" --restore --build --ci --configuration Release /p:ProjectToBuild=$reporoot/eng/tools/RepoTasks/RepoTasks.csproj
|
||||
|
||||
export DotNetBuildFromSource='true'
|
||||
|
||||
# Build projects
|
||||
"$reporoot/eng/common/build.sh" --restore --build --pack "$@"
|
||||
"$reporoot/eng/common/build.sh" --restore --build --pack "$@"
|
||||
|
|
@ -0,0 +1,149 @@
|
|||
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.Build.Framework;
|
||||
using Microsoft.Build.Utilities;
|
||||
|
||||
namespace RepoTasks
|
||||
{
|
||||
public class DownloadFile : Microsoft.Build.Utilities.Task
|
||||
{
|
||||
[Required]
|
||||
public string Uri { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// If this field is set and the task fail to download the file from `Uri`, with a NotFound
|
||||
/// status, it will try to download the file from `PrivateUri`.
|
||||
/// </summary>
|
||||
public string PrivateUri { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Suffix for the private URI in base64 form (for SAS compatibility)
|
||||
/// </summary>
|
||||
public string PrivateUriSuffix { get; set; }
|
||||
|
||||
public int MaxRetries { get; set; } = 5;
|
||||
|
||||
[Required]
|
||||
public string DestinationPath { get; set; }
|
||||
|
||||
public bool Overwrite { get; set; }
|
||||
|
||||
public override bool Execute()
|
||||
{
|
||||
return ExecuteAsync().GetAwaiter().GetResult();
|
||||
}
|
||||
|
||||
private async System.Threading.Tasks.Task<bool> ExecuteAsync()
|
||||
{
|
||||
string destinationDir = Path.GetDirectoryName(DestinationPath);
|
||||
if (!Directory.Exists(destinationDir))
|
||||
{
|
||||
Directory.CreateDirectory(destinationDir);
|
||||
}
|
||||
|
||||
if (File.Exists(DestinationPath) && !Overwrite)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
const string FileUriProtocol = "file://";
|
||||
|
||||
if (Uri.StartsWith(FileUriProtocol, StringComparison.Ordinal))
|
||||
{
|
||||
var filePath = Uri.Substring(FileUriProtocol.Length);
|
||||
Log.LogMessage($"Copying '{filePath}' to '{DestinationPath}'");
|
||||
File.Copy(filePath, DestinationPath);
|
||||
return true;
|
||||
}
|
||||
|
||||
List<string> errorMessages = new List<string>();
|
||||
bool? downloadStatus = await DownloadWithRetriesAsync(Uri, DestinationPath, errorMessages);
|
||||
|
||||
if (downloadStatus == false && !string.IsNullOrEmpty(PrivateUri))
|
||||
{
|
||||
string uriSuffix = "";
|
||||
if (!string.IsNullOrEmpty(PrivateUriSuffix))
|
||||
{
|
||||
var uriSuffixBytes = System.Convert.FromBase64String(PrivateUriSuffix);
|
||||
uriSuffix = System.Text.Encoding.UTF8.GetString(uriSuffixBytes);
|
||||
}
|
||||
downloadStatus = await DownloadWithRetriesAsync($"{PrivateUri}{uriSuffix}", DestinationPath, errorMessages);
|
||||
}
|
||||
|
||||
if (downloadStatus != true)
|
||||
{
|
||||
foreach (var error in errorMessages)
|
||||
{
|
||||
Log.LogError(error);
|
||||
}
|
||||
}
|
||||
|
||||
return downloadStatus == true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Attempt to download file from `source` with retries when response error is different of FileNotFound and Success.
|
||||
/// </summary>
|
||||
/// <param name="source">URL to the file to be downloaded.</param>
|
||||
/// <param name="target">Local path where to put the downloaded file.</param>
|
||||
/// <returns>true: Download Succeeded. false: Download failed with 404. null: Download failed but is retriable.</returns>
|
||||
private async Task<bool?> DownloadWithRetriesAsync(string source, string target, List<string> errorMessages)
|
||||
{
|
||||
Random rng = new Random();
|
||||
|
||||
Log.LogMessage(MessageImportance.High, $"Attempting download '{source}' to '{target}'");
|
||||
|
||||
using (var httpClient = new HttpClient())
|
||||
{
|
||||
for (int retryNumber = 0; retryNumber < MaxRetries; retryNumber++)
|
||||
{
|
||||
try
|
||||
{
|
||||
var httpResponse = await httpClient.GetAsync(source);
|
||||
|
||||
Log.LogMessage(MessageImportance.High, $"{source} -> {httpResponse.StatusCode}");
|
||||
|
||||
// The Azure Storage REST API returns '400 - Bad Request' in some cases
|
||||
// where the resource is not found on the storage.
|
||||
// https://docs.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes
|
||||
if (httpResponse.StatusCode == HttpStatusCode.NotFound ||
|
||||
httpResponse.ReasonPhrase.IndexOf("The requested URI does not represent any resource on the server.", StringComparison.OrdinalIgnoreCase) == 0)
|
||||
{
|
||||
errorMessages.Add($"Problems downloading file from '{source}'. Does the resource exist on the storage? {httpResponse.StatusCode} : {httpResponse.ReasonPhrase}");
|
||||
return false;
|
||||
}
|
||||
|
||||
httpResponse.EnsureSuccessStatusCode();
|
||||
|
||||
using (var outStream = File.Create(target))
|
||||
{
|
||||
await httpResponse.Content.CopyToAsync(outStream);
|
||||
}
|
||||
|
||||
Log.LogMessage(MessageImportance.High, $"returning true {source} -> {httpResponse.StatusCode}");
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.LogMessage(MessageImportance.High, $"returning error in {source} ");
|
||||
errorMessages.Add($"Problems downloading file from '{source}'. {e.Message} {e.StackTrace}");
|
||||
File.Delete(target);
|
||||
}
|
||||
|
||||
await System.Threading.Tasks.Task.Delay(rng.Next(1000, 10000));
|
||||
}
|
||||
}
|
||||
|
||||
Log.LogMessage(MessageImportance.High, $"giving up {source} ");
|
||||
errorMessages.Add($"Giving up downloading the file from '{source}' after {MaxRetries} retries.");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -10,4 +10,5 @@
|
|||
<UsingTask TaskName="RepoTasks.GenerateSharedFrameworkDepsFile" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.CreateFrameworkListFile" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.RemoveSharedFrameworkDependencies" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.DownloadFile" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ This package is an internal implementation of the .NET Core SDK and is not meant
|
|||
|
||||
<DotNetRuntimeArchiveFileName>dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-$(TargetRuntimeIdentifier)$(ArchiveExtension)</DotNetRuntimeArchiveFileName>
|
||||
<DotNetRuntimeDownloadUrl>$(DotNetAssetRootUrl)Runtime/$(MicrosoftNETCoreAppInternalPackageVersion)/$(DotNetRuntimeArchiveFileName)</DotNetRuntimeDownloadUrl>
|
||||
<DotNetRuntimePrivateDownloadUrl>$(DotNetPrivateAssetRootUrl)Runtime/$(MicrosoftNETCoreAppInternalPackageVersion)/$(DotNetRuntimeArchiveFileName)</DotNetRuntimePrivateDownloadUrl>
|
||||
<DotNetRuntimeArchive>$(BaseIntermediateOutputPath)$(DotNetRuntimeArchiveFileName)</DotNetRuntimeArchive>
|
||||
|
||||
<!-- Setting this suppresses getting documentation .xml files in the shared runtime output. -->
|
||||
|
|
@ -379,9 +380,10 @@ This package is an internal implementation of the .NET Core SDK and is not meant
|
|||
-->
|
||||
<Target Name="_DownloadAndExtractDotNetRuntime" Condition="'$(DotNetBuildFromSource)' != 'true'">
|
||||
<DownloadFile Condition=" ! Exists('$(DotNetRuntimeArchive)')"
|
||||
SourceUrl="$(DotNetRuntimeDownloadUrl)$(DotNetAssetRootAccessTokenSuffix)"
|
||||
DestinationFolder="$(BaseIntermediateOutputPath)"
|
||||
DestinationFileName="$(DotNetRuntimeArchiveFileName)" />
|
||||
Uri="$(DotNetRuntimeDownloadUrl)"
|
||||
PrivateUri="$(DotNetRuntimePrivateDownloadUrl)"
|
||||
PrivateUriSuffix="$(DotNetAssetRootAccessTokenSuffix)"
|
||||
DestinationPath="$(DotNetRuntimeArchive)" />
|
||||
|
||||
<!-- Extract the dotnet-runtime archive -->
|
||||
<Exec Condition="'$(ArchiveExtension)' == '.tar.gz'"
|
||||
|
|
|
|||
|
|
@ -23,13 +23,15 @@
|
|||
<PropertyGroup>
|
||||
<DotNetAssetRootUrl Condition=" '$(DotNetAssetRootUrl)' == '' ">https://dotnetcli.azureedge.net/dotnet/</DotNetAssetRootUrl>
|
||||
<DotNetAssetRootUrl Condition=" ! $(DotNetAssetRootUrl.EndsWith('/'))">$(DotNetAssetRootUrl)/</DotNetAssetRootUrl>
|
||||
<DotNetPrivateAssetRootUrl Condition=" '$(DotNetPrivateAssetRootUrl)' == '' ">https://dotnetclimsrc.azureedge.net/dotnet/</DotNetPrivateAssetRootUrl>
|
||||
<DotNetPrivateAssetRootUrl Condition=" ! $(DotNetPrivateAssetRootUrl.EndsWith('/'))">$(DotNetPrivateAssetRootUrl)/</DotNetPrivateAssetRootUrl>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<RemoteAsset Include="$(DotNetAssetRootUrl)Runtime/$(MicrosoftNETCoreAppInternalPackageVersion)/dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-win-x64.exe$(DotNetAssetRootAccessTokenSuffix)">
|
||||
<RemoteAsset Include="Runtime/$(MicrosoftNETCoreAppInternalPackageVersion)/dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-win-x64.exe">
|
||||
<TargetFileName>dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-win-x64.exe</TargetFileName>
|
||||
</RemoteAsset>
|
||||
<RemoteAsset Include="$(DotNetAssetRootUrl)Runtime/$(MicrosoftNETCoreAppInternalPackageVersion)/dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-win-x86.exe$(DotNetAssetRootAccessTokenSuffix)">
|
||||
<RemoteAsset Include="Runtime/$(MicrosoftNETCoreAppInternalPackageVersion)/dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-win-x86.exe">
|
||||
<TargetFileName>dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-win-x86.exe</TargetFileName>
|
||||
</RemoteAsset>
|
||||
</ItemGroup>
|
||||
|
|
@ -37,7 +39,10 @@
|
|||
<MakeDir Directories="$(DepsPath)" />
|
||||
|
||||
<DownloadFile Condition=" ! Exists('$(DepsPath)%(RemoteAsset.TargetFileName)') "
|
||||
SourceUrl="%(RemoteAsset.Identity)" DestinationFolder="$(DepsPath)" DestinationFileName="%(RemoteAsset.TargetFileName)" />
|
||||
Uri="$(DotNetAssetRootUrl)%(RemoteAsset.Identity)"
|
||||
PrivateUri="$(DotNetPrivateAssetRootUrl)%(RemoteAsset.Identity)"
|
||||
PrivateUriSuffix="$(DotNetAssetRootAccessTokenSuffix)"
|
||||
DestinationPath="$(DepsPath)%(RemoteAsset.TargetFileName)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="ExtractPropertiesFromDotNetMsi" DependsOnTargets="FetchDependencies" BeforeTargets="BeforeBuild">
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<!-- Targeting pack version should be the one we just built, if we're building it. Otherwise we use the baseline version -->
|
||||
<PropertyGroup>
|
||||
<MicrosoftAspNetCoreAppRefPackageVersion Condition="'$(IsTargetingPackBuilding)' != 'false'">%(_TargetingPackVersionInfo.PackageVersion)</MicrosoftAspNetCoreAppRefPackageVersion>
|
||||
<MicrosoftAspNetCoreAppRefPackageVersion Condition="'$(IsTargetingPackBuilding)' == 'false'">$(AspNetCoreBaselineVersion)</MicrosoftAspNetCoreAppRefPackageVersion>
|
||||
<MicrosoftAspNetCoreAppRefPackageVersion Condition="'$(IsTargetingPackBuilding)' == 'false'">$(TargetingPackVersionPrefix)</MicrosoftAspNetCoreAppRefPackageVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Runtime and Ref packs may have separate versions. -->
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal
|
|||
IHttpTransportFeature,
|
||||
IConnectionInherentKeepAliveFeature
|
||||
{
|
||||
private static long _tenSeconds = TimeSpan.FromSeconds(10).Ticks;
|
||||
|
||||
private readonly object _stateLock = new object();
|
||||
private readonly object _itemsLock = new object();
|
||||
private readonly object _heartbeatLock = new object();
|
||||
|
|
@ -40,6 +42,12 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal
|
|||
private IDuplexPipe _application;
|
||||
private IDictionary<object, object> _items;
|
||||
|
||||
private CancellationTokenSource _sendCts;
|
||||
private bool _activeSend;
|
||||
private long _startedSendTime;
|
||||
private readonly object _sendingLock = new object();
|
||||
internal CancellationToken SendingToken { get; private set; }
|
||||
|
||||
// This tcs exists so that multiple calls to DisposeAsync all wait asynchronously
|
||||
// on the same task
|
||||
private readonly TaskCompletionSource<object> _disposeTcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
|
|
@ -258,8 +266,26 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal
|
|||
}
|
||||
else
|
||||
{
|
||||
// The other transports don't close their own output, so we can do it here safely
|
||||
Application?.Output.Complete();
|
||||
// Normally it isn't safe to try and acquire this lock because the Send can hold onto it for a long time if there is backpressure
|
||||
// It is safe to wait for this lock now because the Send will be in one of 4 states
|
||||
// 1. In the middle of a write which is in the middle of being canceled by the CancelPendingFlush above, when it throws
|
||||
// an OperationCanceledException it will complete the PipeWriter which will make any other Send waiting on the lock
|
||||
// throw an InvalidOperationException if they call Write
|
||||
// 2. About to write and see that there is a pending cancel from the CancelPendingFlush, go to 1 to see what happens
|
||||
// 3. Enters the Send and sees the Dispose state from DisposeAndRemoveAsync and releases the lock
|
||||
// 4. No Send in progress
|
||||
await WriteLock.WaitAsync();
|
||||
try
|
||||
{
|
||||
// Complete the applications read loop
|
||||
Application?.Output.Complete();
|
||||
}
|
||||
finally
|
||||
{
|
||||
WriteLock.Release();
|
||||
}
|
||||
|
||||
Application?.Input.CancelPendingRead();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -401,7 +427,7 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal
|
|||
nonClonedContext.Response.RegisterForDispose(timeoutSource);
|
||||
nonClonedContext.Response.RegisterForDispose(tokenSource);
|
||||
|
||||
var longPolling = new LongPollingServerTransport(timeoutSource.Token, Application.Input, loggerFactory);
|
||||
var longPolling = new LongPollingServerTransport(timeoutSource.Token, Application.Input, loggerFactory, this);
|
||||
|
||||
// Start the transport
|
||||
TransportTask = longPolling.ProcessRequestAsync(nonClonedContext, tokenSource.Token);
|
||||
|
|
@ -507,6 +533,40 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal
|
|||
await connectionDelegate(this);
|
||||
}
|
||||
|
||||
internal void StartSendCancellation()
|
||||
{
|
||||
lock (_sendingLock)
|
||||
{
|
||||
if (_sendCts == null || _sendCts.IsCancellationRequested)
|
||||
{
|
||||
_sendCts = new CancellationTokenSource();
|
||||
SendingToken = _sendCts.Token;
|
||||
}
|
||||
_startedSendTime = DateTime.UtcNow.Ticks;
|
||||
_activeSend = true;
|
||||
}
|
||||
}
|
||||
internal void TryCancelSend(long currentTicks)
|
||||
{
|
||||
lock (_sendingLock)
|
||||
{
|
||||
if (_activeSend)
|
||||
{
|
||||
if (currentTicks - _startedSendTime > _tenSeconds)
|
||||
{
|
||||
_sendCts.Cancel();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
internal void StopSendCancellation()
|
||||
{
|
||||
lock (_sendingLock)
|
||||
{
|
||||
_activeSend = false;
|
||||
}
|
||||
}
|
||||
|
||||
private static class Log
|
||||
{
|
||||
private static readonly Action<ILogger, string, Exception> _disposingConnection =
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal
|
|||
connection.SupportedFormats = TransferFormat.Text;
|
||||
|
||||
// We only need to provide the Input channel since writing to the application is handled through /send.
|
||||
var sse = new ServerSentEventsServerTransport(connection.Application.Input, connection.ConnectionId, _loggerFactory);
|
||||
var sse = new ServerSentEventsServerTransport(connection.Application.Input, connection.ConnectionId, connection, _loggerFactory);
|
||||
|
||||
await DoPersistentConnection(connectionDelegate, sse, context, connection);
|
||||
}
|
||||
|
|
@ -216,7 +216,9 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal
|
|||
connection.Transport.Output.Complete(connection.ApplicationTask.Exception);
|
||||
|
||||
// Wait for the transport to run
|
||||
await connection.TransportTask;
|
||||
// Ignore exceptions, it has been logged if there is one and the application has finished
|
||||
// So there is no one to give the exception to
|
||||
await connection.TransportTask.NoThrow();
|
||||
|
||||
// If the status code is a 204 it means the connection is done
|
||||
if (context.Response.StatusCode == StatusCodes.Status204NoContent)
|
||||
|
|
@ -234,12 +236,12 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal
|
|||
connection.MarkInactive();
|
||||
}
|
||||
}
|
||||
else if (resultTask.IsFaulted)
|
||||
else if (resultTask.IsFaulted || resultTask.IsCanceled)
|
||||
{
|
||||
// Cancel current request to release any waiting poll and let dispose acquire the lock
|
||||
currentRequestTcs.TrySetCanceled();
|
||||
|
||||
// transport task was faulted, we should remove the connection
|
||||
// We should be able to safely dispose because there's no more data being written
|
||||
// We don't need to wait for close here since we've already waited for both sides
|
||||
await _manager.DisposeAndRemoveAsync(connection, closeGracefully: false);
|
||||
}
|
||||
else
|
||||
|
|
@ -434,6 +436,14 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal
|
|||
|
||||
context.Response.StatusCode = StatusCodes.Status404NotFound;
|
||||
context.Response.ContentType = "text/plain";
|
||||
|
||||
// There are no writes anymore (since this is the write "loop")
|
||||
// So it is safe to complete the writer
|
||||
// We complete the writer here because we already have the WriteLock acquired
|
||||
// and it's unsafe to complete outside of the lock
|
||||
// Other code isn't guaranteed to be able to acquire the lock before another write
|
||||
// even if CancelPendingFlush is called, and the other write could hang if there is backpressure
|
||||
connection.Application.Output.Complete();
|
||||
return;
|
||||
}
|
||||
catch (IOException ex)
|
||||
|
|
@ -481,11 +491,8 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal
|
|||
|
||||
Log.TerminatingConection(_logger);
|
||||
|
||||
// Complete the receiving end of the pipe
|
||||
connection.Application.Output.Complete();
|
||||
|
||||
// Dispose the connection gracefully, but don't wait for it. We assign it here so we can wait in tests
|
||||
connection.DisposeAndRemoveTask = _manager.DisposeAndRemoveAsync(connection, closeGracefully: true);
|
||||
// Dispose the connection, but don't wait for it. We assign it here so we can wait in tests
|
||||
connection.DisposeAndRemoveTask = _manager.DisposeAndRemoveAsync(connection, closeGracefully: false);
|
||||
|
||||
context.Response.StatusCode = StatusCodes.Status202Accepted;
|
||||
context.Response.ContentType = "text/plain";
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal
|
|||
private readonly TimerAwaitable _nextHeartbeat;
|
||||
private readonly ILogger<HttpConnectionManager> _logger;
|
||||
private readonly ILogger<HttpConnectionContext> _connectionLogger;
|
||||
private readonly bool _useSendTimeout = true;
|
||||
private readonly TimeSpan _disconnectTimeout;
|
||||
|
||||
public HttpConnectionManager(ILoggerFactory loggerFactory, IHostApplicationLifetime appLifetime)
|
||||
|
|
@ -44,6 +45,11 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal
|
|||
_connectionLogger = loggerFactory.CreateLogger<HttpConnectionContext>();
|
||||
_nextHeartbeat = new TimerAwaitable(_heartbeatTickRate, _heartbeatTickRate);
|
||||
_disconnectTimeout = connectionOptions.Value.DisconnectTimeout ?? ConnectionOptionsSetup.DefaultDisconectTimeout;
|
||||
if (AppContext.TryGetSwitch("Microsoft.AspNetCore.Http.Connections.DoNotUseSendTimeout", out var timeoutDisabled))
|
||||
{
|
||||
_useSendTimeout = !timeoutDisabled;
|
||||
}
|
||||
|
||||
// Register these last as the callbacks could run immediately
|
||||
appLifetime.ApplicationStarted.Register(() => Start());
|
||||
appLifetime.ApplicationStopping.Register(() => CloseConnections());
|
||||
|
|
@ -155,20 +161,26 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal
|
|||
// Capture the connection state
|
||||
var lastSeenUtc = connection.LastSeenUtcIfInactive;
|
||||
|
||||
var utcNow = DateTimeOffset.UtcNow;
|
||||
// Once the decision has been made to dispose we don't check the status again
|
||||
// But don't clean up connections while the debugger is attached.
|
||||
if (!Debugger.IsAttached && lastSeenUtc.HasValue && (DateTimeOffset.UtcNow - lastSeenUtc.Value).TotalSeconds > _disconnectTimeout.TotalSeconds)
|
||||
if (!Debugger.IsAttached && lastSeenUtc.HasValue && (utcNow - lastSeenUtc.Value).TotalSeconds > _disconnectTimeout.TotalSeconds)
|
||||
{
|
||||
Log.ConnectionTimedOut(_logger, connection.ConnectionId);
|
||||
HttpConnectionsEventSource.Log.ConnectionTimedOut(connection.ConnectionId);
|
||||
|
||||
// This is most likely a long polling connection. The transport here ends because
|
||||
// a poll completed and has been inactive for > 5 seconds so we wait for the
|
||||
// a poll completed and has been inactive for > 5 seconds so we wait for the
|
||||
// application to finish gracefully
|
||||
_ = DisposeAndRemoveAsync(connection, closeGracefully: true);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!Debugger.IsAttached && _useSendTimeout)
|
||||
{
|
||||
connection.TryCancelSend(utcNow.Ticks);
|
||||
}
|
||||
|
||||
// Tick the heartbeat, if the connection is still active
|
||||
connection.TickHeartbeat();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
using System.Runtime.CompilerServices;
|
||||
namespace System.Threading.Tasks
|
||||
{
|
||||
internal static class TaskExtensions
|
||||
{
|
||||
public static async Task NoThrow(this Task task)
|
||||
{
|
||||
await new NoThrowAwaiter(task);
|
||||
}
|
||||
}
|
||||
internal readonly struct NoThrowAwaiter : ICriticalNotifyCompletion
|
||||
{
|
||||
private readonly Task _task;
|
||||
public NoThrowAwaiter(Task task) { _task = task; }
|
||||
public NoThrowAwaiter GetAwaiter() => this;
|
||||
public bool IsCompleted => _task.IsCompleted;
|
||||
// Observe exception
|
||||
public void GetResult() { _ = _task.Exception; }
|
||||
public void OnCompleted(Action continuation) => _task.GetAwaiter().OnCompleted(continuation);
|
||||
public void UnsafeOnCompleted(Action continuation) => OnCompleted(continuation);
|
||||
}
|
||||
}
|
||||
|
|
@ -16,12 +16,19 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal.Transports
|
|||
private readonly PipeReader _application;
|
||||
private readonly ILogger _logger;
|
||||
private readonly CancellationToken _timeoutToken;
|
||||
private readonly HttpConnectionContext _connection;
|
||||
|
||||
public LongPollingServerTransport(CancellationToken timeoutToken, PipeReader application, ILoggerFactory loggerFactory)
|
||||
: this(timeoutToken, application, loggerFactory, connection: null)
|
||||
{ }
|
||||
|
||||
public LongPollingServerTransport(CancellationToken timeoutToken, PipeReader application, ILoggerFactory loggerFactory, HttpConnectionContext connection)
|
||||
{
|
||||
_timeoutToken = timeoutToken;
|
||||
_application = application;
|
||||
|
||||
_connection = connection;
|
||||
|
||||
// We create the logger with a string to preserve the logging namespace after the server side transport renames.
|
||||
_logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Connections.Internal.Transports.LongPollingTransport");
|
||||
}
|
||||
|
|
@ -33,7 +40,7 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal.Transports
|
|||
var result = await _application.ReadAsync(token);
|
||||
var buffer = result.Buffer;
|
||||
|
||||
if (buffer.IsEmpty && result.IsCompleted)
|
||||
if (buffer.IsEmpty && (result.IsCompleted || result.IsCanceled))
|
||||
{
|
||||
Log.LongPolling204(_logger);
|
||||
context.Response.ContentType = "text/plain";
|
||||
|
|
@ -51,19 +58,22 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal.Transports
|
|||
|
||||
try
|
||||
{
|
||||
await context.Response.Body.WriteAsync(buffer);
|
||||
_connection?.StartSendCancellation();
|
||||
await context.Response.Body.WriteAsync(buffer, _connection?.SendingToken ?? default);
|
||||
}
|
||||
finally
|
||||
{
|
||||
_connection?.StopSendCancellation();
|
||||
_application.AdvanceTo(buffer.End);
|
||||
}
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
// 3 cases:
|
||||
// 4 cases:
|
||||
// 1 - Request aborted, the client disconnected (no response)
|
||||
// 2 - The poll timeout is hit (200)
|
||||
// 3 - A new request comes in and cancels this request (204)
|
||||
// 3 - SendingToken was canceled, abort the connection
|
||||
// 4 - A new request comes in and cancels this request (204)
|
||||
|
||||
// Case 1
|
||||
if (context.RequestAborted.IsCancellationRequested)
|
||||
|
|
@ -81,9 +91,16 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal.Transports
|
|||
context.Response.ContentType = "text/plain";
|
||||
context.Response.StatusCode = StatusCodes.Status200OK;
|
||||
}
|
||||
else
|
||||
else if (_connection?.SendingToken.IsCancellationRequested == true)
|
||||
{
|
||||
// Case 3
|
||||
context.Response.ContentType = "text/plain";
|
||||
context.Response.StatusCode = StatusCodes.Status204NoContent;
|
||||
throw;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Case 4
|
||||
Log.LongPolling204(_logger);
|
||||
context.Response.ContentType = "text/plain";
|
||||
context.Response.StatusCode = StatusCodes.Status204NoContent;
|
||||
|
|
|
|||
|
|
@ -16,11 +16,17 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal.Transports
|
|||
private readonly PipeReader _application;
|
||||
private readonly string _connectionId;
|
||||
private readonly ILogger _logger;
|
||||
private readonly HttpConnectionContext _connection;
|
||||
|
||||
public ServerSentEventsServerTransport(PipeReader application, string connectionId, ILoggerFactory loggerFactory)
|
||||
: this(application, connectionId, connection: null, loggerFactory)
|
||||
{ }
|
||||
|
||||
public ServerSentEventsServerTransport(PipeReader application, string connectionId, HttpConnectionContext connection, ILoggerFactory loggerFactory)
|
||||
{
|
||||
_application = application;
|
||||
_connectionId = connectionId;
|
||||
_connection = connection;
|
||||
|
||||
// We create the logger with a string to preserve the logging namespace after the server side transport renames.
|
||||
_logger = loggerFactory.CreateLogger("Microsoft.AspNetCore.Http.Connections.Internal.Transports.ServerSentEventsTransport");
|
||||
|
|
@ -51,11 +57,17 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal.Transports
|
|||
|
||||
try
|
||||
{
|
||||
if (result.IsCanceled)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (!buffer.IsEmpty)
|
||||
{
|
||||
Log.SSEWritingMessage(_logger, buffer.Length);
|
||||
|
||||
await ServerSentEventsMessageFormatter.WriteMessageAsync(buffer, context.Response.Body);
|
||||
_connection?.StartSendCancellation();
|
||||
await ServerSentEventsMessageFormatter.WriteMessageAsync(buffer, context.Response.Body, _connection?.SendingToken ?? default);
|
||||
}
|
||||
else if (result.IsCompleted)
|
||||
{
|
||||
|
|
@ -64,6 +76,7 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal.Transports
|
|||
}
|
||||
finally
|
||||
{
|
||||
_connection?.StopSendCancellation();
|
||||
_application.AdvanceTo(buffer.End);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -231,7 +231,8 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal.Transports
|
|||
|
||||
if (WebSocketCanSend(socket))
|
||||
{
|
||||
await socket.SendAsync(buffer, webSocketMessageType);
|
||||
_connection.StartSendCancellation();
|
||||
await socket.SendAsync(buffer, webSocketMessageType, _connection.SendingToken);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -254,6 +255,7 @@ namespace Microsoft.AspNetCore.Http.Connections.Internal.Transports
|
|||
}
|
||||
finally
|
||||
{
|
||||
_connection.StopSendCancellation();
|
||||
_application.Input.AdvanceTo(buffer.End);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
using System;
|
||||
using System.Buffers;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Microsoft.AspNetCore.Http.Connections
|
||||
|
|
@ -15,19 +16,19 @@ namespace Microsoft.AspNetCore.Http.Connections
|
|||
|
||||
private const byte LineFeed = (byte)'\n';
|
||||
|
||||
public static async Task WriteMessageAsync(ReadOnlySequence<byte> payload, Stream output)
|
||||
public static async Task WriteMessageAsync(ReadOnlySequence<byte> payload, Stream output, CancellationToken token)
|
||||
{
|
||||
// Payload does not contain a line feed so write it directly to output
|
||||
if (payload.PositionOf(LineFeed) == null)
|
||||
{
|
||||
if (payload.Length > 0)
|
||||
{
|
||||
await output.WriteAsync(DataPrefix, 0, DataPrefix.Length);
|
||||
await output.WriteAsync(payload);
|
||||
await output.WriteAsync(Newline, 0, Newline.Length);
|
||||
await output.WriteAsync(DataPrefix, 0, DataPrefix.Length, token);
|
||||
await output.WriteAsync(payload, token);
|
||||
await output.WriteAsync(Newline, 0, Newline.Length, token);
|
||||
}
|
||||
|
||||
await output.WriteAsync(Newline, 0, Newline.Length);
|
||||
await output.WriteAsync(Newline, 0, Newline.Length, token);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -37,7 +38,7 @@ namespace Microsoft.AspNetCore.Http.Connections
|
|||
await WriteMessageToMemory(ms, payload);
|
||||
ms.Position = 0;
|
||||
|
||||
await ms.CopyToAsync(output);
|
||||
await ms.CopyToAsync(output, token);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -1050,6 +1050,178 @@ namespace Microsoft.AspNetCore.Http.Connections.Tests
|
|||
}
|
||||
}
|
||||
|
||||
private class BlockingStream : Stream
|
||||
{
|
||||
private readonly SyncPoint _sync;
|
||||
private bool _isSSE;
|
||||
public BlockingStream(SyncPoint sync, bool isSSE = false)
|
||||
{
|
||||
_sync = sync;
|
||||
_isSSE = isSSE;
|
||||
}
|
||||
public override bool CanRead => throw new NotImplementedException();
|
||||
public override bool CanSeek => throw new NotImplementedException();
|
||||
public override bool CanWrite => throw new NotImplementedException();
|
||||
public override long Length => throw new NotImplementedException();
|
||||
public override long Position { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
|
||||
public override Task CopyToAsync(Stream destination, int bufferSize, CancellationToken cancellationToken)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
public override void Flush()
|
||||
{
|
||||
}
|
||||
public override int Read(byte[] buffer, int offset, int count)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
public override long Seek(long offset, SeekOrigin origin)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
public override void SetLength(long value)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
public override void Write(byte[] buffer, int offset, int count)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
public override async Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
|
||||
{
|
||||
if (_isSSE)
|
||||
{
|
||||
// SSE does an initial write of :\r\n that we want to ignore in testing
|
||||
_isSSE = false;
|
||||
return;
|
||||
}
|
||||
await _sync.WaitToContinue();
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
}
|
||||
#if NETCOREAPP2_1
|
||||
public override async ValueTask WriteAsync(ReadOnlyMemory<byte> buffer, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (_isSSE)
|
||||
{
|
||||
// SSE does an initial write of :\r\n that we want to ignore in testing
|
||||
_isSSE = false;
|
||||
return;
|
||||
}
|
||||
await _sync.WaitToContinue();
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[LogLevel(LogLevel.Debug)]
|
||||
public async Task LongPollingConnectionClosesWhenSendTimeoutReached()
|
||||
{
|
||||
bool ExpectedErrors(WriteContext writeContext)
|
||||
{
|
||||
return (writeContext.LoggerName == typeof(Internal.Transports.LongPollingServerTransport).FullName &&
|
||||
writeContext.EventId.Name == "LongPollingTerminated") ||
|
||||
(writeContext.LoggerName == typeof(HttpConnectionManager).FullName && writeContext.EventId.Name == "FailedDispose");
|
||||
}
|
||||
|
||||
using (StartVerifiableLog(expectedErrorsFilter: ExpectedErrors))
|
||||
{
|
||||
var manager = CreateConnectionManager(LoggerFactory);
|
||||
var connection = manager.CreateConnection();
|
||||
connection.TransportType = HttpTransportType.LongPolling;
|
||||
var dispatcher = new HttpConnectionDispatcher(manager, LoggerFactory);
|
||||
var context = MakeRequest("/foo", connection);
|
||||
var services = new ServiceCollection();
|
||||
services.AddSingleton<TestConnectionHandler>();
|
||||
var builder = new ConnectionBuilder(services.BuildServiceProvider());
|
||||
builder.UseConnectionHandler<TestConnectionHandler>();
|
||||
var app = builder.Build();
|
||||
var options = new HttpConnectionDispatcherOptions();
|
||||
// First poll completes immediately
|
||||
await dispatcher.ExecuteAsync(context, options, app).OrTimeout();
|
||||
var sync = new SyncPoint();
|
||||
context.Response.Body = new BlockingStream(sync);
|
||||
var dispatcherTask = dispatcher.ExecuteAsync(context, options, app);
|
||||
await connection.Transport.Output.WriteAsync(new byte[] { 1 }).OrTimeout();
|
||||
await sync.WaitForSyncPoint().OrTimeout();
|
||||
// Cancel write to response body
|
||||
connection.TryCancelSend(long.MaxValue);
|
||||
sync.Continue();
|
||||
await dispatcherTask.OrTimeout();
|
||||
// Connection should be removed on canceled write
|
||||
Assert.False(manager.TryGetConnection(connection.ConnectionId, out var _));
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[LogLevel(LogLevel.Debug)]
|
||||
public async Task SSEConnectionClosesWhenSendTimeoutReached()
|
||||
{
|
||||
using (StartVerifiableLog())
|
||||
{
|
||||
var manager = CreateConnectionManager(LoggerFactory);
|
||||
var connection = manager.CreateConnection();
|
||||
connection.TransportType = HttpTransportType.ServerSentEvents;
|
||||
var dispatcher = new HttpConnectionDispatcher(manager, LoggerFactory);
|
||||
var context = MakeRequest("/foo", connection);
|
||||
SetTransport(context, connection.TransportType);
|
||||
var services = new ServiceCollection();
|
||||
services.AddSingleton<TestConnectionHandler>();
|
||||
var builder = new ConnectionBuilder(services.BuildServiceProvider());
|
||||
builder.UseConnectionHandler<TestConnectionHandler>();
|
||||
var app = builder.Build();
|
||||
var sync = new SyncPoint();
|
||||
context.Response.Body = new BlockingStream(sync, isSSE: true);
|
||||
var options = new HttpConnectionDispatcherOptions();
|
||||
var dispatcherTask = dispatcher.ExecuteAsync(context, options, app);
|
||||
await connection.Transport.Output.WriteAsync(new byte[] { 1 }).OrTimeout();
|
||||
await sync.WaitForSyncPoint().OrTimeout();
|
||||
// Cancel write to response body
|
||||
connection.TryCancelSend(long.MaxValue);
|
||||
sync.Continue();
|
||||
await dispatcherTask.OrTimeout();
|
||||
// Connection should be removed on canceled write
|
||||
Assert.False(manager.TryGetConnection(connection.ConnectionId, out var _));
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[LogLevel(LogLevel.Debug)]
|
||||
public async Task WebSocketConnectionClosesWhenSendTimeoutReached()
|
||||
{
|
||||
bool ExpectedErrors(WriteContext writeContext)
|
||||
{
|
||||
return writeContext.LoggerName == typeof(Internal.Transports.WebSocketsServerTransport).FullName &&
|
||||
writeContext.EventId.Name == "ErrorWritingFrame";
|
||||
}
|
||||
using (StartVerifiableLog(expectedErrorsFilter: ExpectedErrors))
|
||||
{
|
||||
var manager = CreateConnectionManager(LoggerFactory);
|
||||
var connection = manager.CreateConnection();
|
||||
connection.TransportType = HttpTransportType.WebSockets;
|
||||
var dispatcher = new HttpConnectionDispatcher(manager, LoggerFactory);
|
||||
var sync = new SyncPoint();
|
||||
var context = MakeRequest("/foo", connection);
|
||||
SetTransport(context, connection.TransportType, sync);
|
||||
var services = new ServiceCollection();
|
||||
services.AddSingleton<TestConnectionHandler>();
|
||||
var builder = new ConnectionBuilder(services.BuildServiceProvider());
|
||||
builder.UseConnectionHandler<TestConnectionHandler>();
|
||||
var app = builder.Build();
|
||||
var options = new HttpConnectionDispatcherOptions();
|
||||
options.WebSockets.CloseTimeout = TimeSpan.FromSeconds(0);
|
||||
var dispatcherTask = dispatcher.ExecuteAsync(context, options, app);
|
||||
await connection.Transport.Output.WriteAsync(new byte[] { 1 }).OrTimeout();
|
||||
await sync.WaitForSyncPoint().OrTimeout();
|
||||
// Cancel write to response body
|
||||
connection.TryCancelSend(long.MaxValue);
|
||||
sync.Continue();
|
||||
await dispatcherTask.OrTimeout();
|
||||
// Connection should be removed on canceled write
|
||||
Assert.False(manager.TryGetConnection(connection.ConnectionId, out var _));
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[LogLevel(LogLevel.Trace)]
|
||||
public async Task WebSocketTransportTimesOutWhenCloseFrameNotReceived()
|
||||
|
|
@ -1622,6 +1794,8 @@ namespace Microsoft.AspNetCore.Http.Connections.Tests
|
|||
Assert.Equal(StatusCodes.Status202Accepted, deleteContext.Response.StatusCode);
|
||||
Assert.Equal("text/plain", deleteContext.Response.ContentType);
|
||||
|
||||
await connection.DisposeAndRemoveTask.OrTimeout();
|
||||
|
||||
// Verify the connection was removed from the manager
|
||||
Assert.False(manager.TryGetConnection(connection.ConnectionToken, out _));
|
||||
}
|
||||
|
|
@ -1675,6 +1849,110 @@ namespace Microsoft.AspNetCore.Http.Connections.Tests
|
|||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task DeleteEndpointTerminatesLongPollingWithHangingApplication()
|
||||
{
|
||||
using (StartVerifiableLog())
|
||||
{
|
||||
var manager = CreateConnectionManager(LoggerFactory);
|
||||
var pipeOptions = new PipeOptions(pauseWriterThreshold: 2, resumeWriterThreshold: 1);
|
||||
var connection = manager.CreateConnection(pipeOptions, pipeOptions);
|
||||
connection.TransportType = HttpTransportType.LongPolling;
|
||||
|
||||
var dispatcher = new HttpConnectionDispatcher(manager, LoggerFactory);
|
||||
|
||||
var context = MakeRequest("/foo", connection);
|
||||
|
||||
var services = new ServiceCollection();
|
||||
services.AddSingleton<NeverEndingConnectionHandler>();
|
||||
var builder = new ConnectionBuilder(services.BuildServiceProvider());
|
||||
builder.UseConnectionHandler<NeverEndingConnectionHandler>();
|
||||
var app = builder.Build();
|
||||
var options = new HttpConnectionDispatcherOptions();
|
||||
|
||||
var pollTask = dispatcher.ExecuteAsync(context, options, app);
|
||||
Assert.True(pollTask.IsCompleted);
|
||||
|
||||
// Now send the second poll
|
||||
pollTask = dispatcher.ExecuteAsync(context, options, app);
|
||||
|
||||
// Issue the delete request and make sure the poll completes
|
||||
var deleteContext = new DefaultHttpContext();
|
||||
deleteContext.Request.Path = "/foo";
|
||||
deleteContext.Request.QueryString = new QueryString($"?id={connection.ConnectionId}");
|
||||
deleteContext.Request.Method = "DELETE";
|
||||
|
||||
Assert.False(pollTask.IsCompleted);
|
||||
|
||||
await dispatcher.ExecuteAsync(deleteContext, options, app).OrTimeout();
|
||||
|
||||
await pollTask.OrTimeout();
|
||||
|
||||
// Verify that transport shuts down
|
||||
await connection.TransportTask.OrTimeout();
|
||||
|
||||
// Verify the response from the DELETE request
|
||||
Assert.Equal(StatusCodes.Status202Accepted, deleteContext.Response.StatusCode);
|
||||
Assert.Equal("text/plain", deleteContext.Response.ContentType);
|
||||
Assert.Equal(HttpConnectionStatus.Disposed, connection.Status);
|
||||
|
||||
// Verify the connection not removed because application is hanging
|
||||
Assert.True(manager.TryGetConnection(connection.ConnectionId, out _));
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task PollCanReceiveFinalMessageAfterAppCompletes()
|
||||
{
|
||||
using (StartVerifiableLog())
|
||||
{
|
||||
var transportType = HttpTransportType.LongPolling;
|
||||
var manager = CreateConnectionManager(LoggerFactory);
|
||||
var dispatcher = new HttpConnectionDispatcher(manager, LoggerFactory);
|
||||
var connection = manager.CreateConnection();
|
||||
connection.TransportType = transportType;
|
||||
|
||||
var waitForMessageTcs1 = new TaskCompletionSource<object>();
|
||||
var messageTcs1 = new TaskCompletionSource<object>();
|
||||
var waitForMessageTcs2 = new TaskCompletionSource<object>();
|
||||
var messageTcs2 = new TaskCompletionSource<object>();
|
||||
ConnectionDelegate connectionDelegate = async c =>
|
||||
{
|
||||
await waitForMessageTcs1.Task.OrTimeout();
|
||||
await c.Transport.Output.WriteAsync(Encoding.UTF8.GetBytes("Message1")).OrTimeout();
|
||||
messageTcs1.TrySetResult(null);
|
||||
await waitForMessageTcs2.Task.OrTimeout();
|
||||
await c.Transport.Output.WriteAsync(Encoding.UTF8.GetBytes("Message2")).OrTimeout();
|
||||
messageTcs2.TrySetResult(null);
|
||||
};
|
||||
{
|
||||
var options = new HttpConnectionDispatcherOptions();
|
||||
var context = MakeRequest("/foo", connection);
|
||||
await dispatcher.ExecuteAsync(context, options, connectionDelegate).OrTimeout();
|
||||
|
||||
// second poll should have data
|
||||
waitForMessageTcs1.SetResult(null);
|
||||
await messageTcs1.Task.OrTimeout();
|
||||
|
||||
var ms = new MemoryStream();
|
||||
context.Response.Body = ms;
|
||||
// Now send the second poll
|
||||
await dispatcher.ExecuteAsync(context, options, connectionDelegate).OrTimeout();
|
||||
Assert.Equal("Message1", Encoding.UTF8.GetString(ms.ToArray()));
|
||||
|
||||
waitForMessageTcs2.SetResult(null);
|
||||
await messageTcs2.Task.OrTimeout();
|
||||
|
||||
context = MakeRequest("/foo", connection);
|
||||
ms.Seek(0, SeekOrigin.Begin);
|
||||
context.Response.Body = ms;
|
||||
// This is the third poll which gets the final message after the app is complete
|
||||
await dispatcher.ExecuteAsync(context, options, connectionDelegate).OrTimeout();
|
||||
Assert.Equal("Message2", Encoding.UTF8.GetString(ms.ToArray()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task NegotiateDoesNotReturnWebSocketsWhenNotAvailable()
|
||||
{
|
||||
|
|
@ -1987,12 +2265,12 @@ namespace Microsoft.AspNetCore.Http.Connections.Tests
|
|||
return context;
|
||||
}
|
||||
|
||||
private static void SetTransport(HttpContext context, HttpTransportType transportType)
|
||||
private static void SetTransport(HttpContext context, HttpTransportType transportType, SyncPoint sync = null)
|
||||
{
|
||||
switch (transportType)
|
||||
{
|
||||
case HttpTransportType.WebSockets:
|
||||
context.Features.Set<IHttpWebSocketFeature>(new TestWebSocketConnectionFeature());
|
||||
context.Features.Set<IHttpWebSocketFeature>(new TestWebSocketConnectionFeature(sync));
|
||||
break;
|
||||
case HttpTransportType.ServerSentEvents:
|
||||
context.Request.Headers["Accept"] = "text/event-stream";
|
||||
|
|
|
|||
|
|
@ -235,9 +235,6 @@ namespace Microsoft.AspNetCore.Http.Connections.Tests
|
|||
try
|
||||
{
|
||||
Assert.True(result.IsCompleted);
|
||||
|
||||
// We should be able to write
|
||||
await connection.Transport.Output.WriteAsync(new byte[] { 1 });
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
|
@ -248,13 +245,9 @@ namespace Microsoft.AspNetCore.Http.Connections.Tests
|
|||
connection.TransportTask = Task.Run(async () =>
|
||||
{
|
||||
var result = await connection.Application.Input.ReadAsync();
|
||||
Assert.Equal(new byte[] { 1 }, result.Buffer.ToArray());
|
||||
connection.Application.Input.AdvanceTo(result.Buffer.End);
|
||||
|
||||
result = await connection.Application.Input.ReadAsync();
|
||||
try
|
||||
{
|
||||
Assert.True(result.IsCompleted);
|
||||
Assert.True(result.IsCanceled);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ namespace Microsoft.AspNetCore.Http.Connections.Tests
|
|||
var buffer = new ReadOnlySequence<byte>(Encoding.UTF8.GetBytes(payload));
|
||||
|
||||
var output = new MemoryStream();
|
||||
await ServerSentEventsMessageFormatter.WriteMessageAsync(buffer, output);
|
||||
await ServerSentEventsMessageFormatter.WriteMessageAsync(buffer, output, default);
|
||||
|
||||
Assert.Equal(encoded, Encoding.UTF8.GetString(output.ToArray()));
|
||||
}
|
||||
|
|
@ -32,7 +32,7 @@ namespace Microsoft.AspNetCore.Http.Connections.Tests
|
|||
var buffer = ReadOnlySequenceFactory.SegmentPerByteFactory.CreateWithContent(Encoding.UTF8.GetBytes(payload));
|
||||
|
||||
var output = new MemoryStream();
|
||||
await ServerSentEventsMessageFormatter.WriteMessageAsync(buffer, output);
|
||||
await ServerSentEventsMessageFormatter.WriteMessageAsync(buffer, output, default);
|
||||
|
||||
Assert.Equal(encoded, Encoding.UTF8.GetString(output.ToArray()));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,11 +5,21 @@ using System.Threading;
|
|||
using System.Threading.Channels;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Http.Features;
|
||||
using Microsoft.AspNetCore.Internal;
|
||||
using Microsoft.AspNetCore.SignalR.Tests;
|
||||
|
||||
namespace Microsoft.AspNetCore.Http.Connections.Tests
|
||||
{
|
||||
internal class TestWebSocketConnectionFeature : IHttpWebSocketFeature, IDisposable
|
||||
{
|
||||
public TestWebSocketConnectionFeature()
|
||||
{ }
|
||||
public TestWebSocketConnectionFeature(SyncPoint sync)
|
||||
{
|
||||
_sync = sync;
|
||||
}
|
||||
|
||||
private readonly SyncPoint _sync;
|
||||
private readonly TaskCompletionSource<object> _accepted = new TaskCompletionSource<object>();
|
||||
|
||||
public bool IsWebSocketRequest => true;
|
||||
|
|
@ -27,8 +37,8 @@ namespace Microsoft.AspNetCore.Http.Connections.Tests
|
|||
var clientToServer = Channel.CreateUnbounded<WebSocketMessage>();
|
||||
var serverToClient = Channel.CreateUnbounded<WebSocketMessage>();
|
||||
|
||||
var clientSocket = new WebSocketChannel(serverToClient.Reader, clientToServer.Writer);
|
||||
var serverSocket = new WebSocketChannel(clientToServer.Reader, serverToClient.Writer);
|
||||
var clientSocket = new WebSocketChannel(serverToClient.Reader, clientToServer.Writer, _sync);
|
||||
var serverSocket = new WebSocketChannel(clientToServer.Reader, serverToClient.Writer, _sync);
|
||||
|
||||
Client = clientSocket;
|
||||
SubProtocol = context.SubProtocol;
|
||||
|
|
@ -45,16 +55,18 @@ namespace Microsoft.AspNetCore.Http.Connections.Tests
|
|||
{
|
||||
private readonly ChannelReader<WebSocketMessage> _input;
|
||||
private readonly ChannelWriter<WebSocketMessage> _output;
|
||||
private readonly SyncPoint _sync;
|
||||
|
||||
private WebSocketCloseStatus? _closeStatus;
|
||||
private string _closeStatusDescription;
|
||||
private WebSocketState _state;
|
||||
private WebSocketMessage _internalBuffer = new WebSocketMessage();
|
||||
|
||||
public WebSocketChannel(ChannelReader<WebSocketMessage> input, ChannelWriter<WebSocketMessage> output)
|
||||
public WebSocketChannel(ChannelReader<WebSocketMessage> input, ChannelWriter<WebSocketMessage> output, SyncPoint sync = null)
|
||||
{
|
||||
_input = input;
|
||||
_output = output;
|
||||
_sync = sync;
|
||||
}
|
||||
|
||||
public override WebSocketCloseStatus? CloseStatus => _closeStatus;
|
||||
|
|
@ -173,11 +185,17 @@ namespace Microsoft.AspNetCore.Http.Connections.Tests
|
|||
throw new InvalidOperationException("Unexpected close");
|
||||
}
|
||||
|
||||
public override Task SendAsync(ArraySegment<byte> buffer, WebSocketMessageType messageType, bool endOfMessage, CancellationToken cancellationToken)
|
||||
public override async Task SendAsync(ArraySegment<byte> buffer, WebSocketMessageType messageType, bool endOfMessage, CancellationToken cancellationToken)
|
||||
{
|
||||
if (_sync != null)
|
||||
{
|
||||
await _sync.WaitToContinue();
|
||||
}
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
|
||||
var copy = new byte[buffer.Count];
|
||||
Buffer.BlockCopy(buffer.Array, buffer.Offset, copy, 0, buffer.Count);
|
||||
return SendMessageAsync(new WebSocketMessage
|
||||
await SendMessageAsync(new WebSocketMessage
|
||||
{
|
||||
Buffer = copy,
|
||||
MessageType = messageType,
|
||||
|
|
|
|||
|
|
@ -74,7 +74,16 @@ namespace System.IO.Pipelines
|
|||
|
||||
_length += source.Length;
|
||||
var task = _pipeWriter.WriteAsync(source);
|
||||
if (!task.IsCompletedSuccessfully)
|
||||
|
||||
if (task.IsCompletedSuccessfully)
|
||||
{
|
||||
// Cancellation can be triggered by PipeWriter.CancelPendingFlush
|
||||
if (task.Result.IsCanceled)
|
||||
{
|
||||
throw new OperationCanceledException();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return WriteSlowAsync(task);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,9 +37,10 @@ namespace Microsoft.AspNetCore.SignalR.Tests
|
|||
|
||||
public TransferFormat ActiveFormat { get; set; }
|
||||
|
||||
public TestClient(IHubProtocol protocol = null, IInvocationBinder invocationBinder = null, string userIdentifier = null)
|
||||
public TestClient(IHubProtocol protocol = null, IInvocationBinder invocationBinder = null, string userIdentifier = null, long pauseWriterThreshold = 32768)
|
||||
{
|
||||
var options = new PipeOptions(readerScheduler: PipeScheduler.Inline, writerScheduler: PipeScheduler.Inline, useSynchronizationContext: false);
|
||||
var options = new PipeOptions(readerScheduler: PipeScheduler.Inline, writerScheduler: PipeScheduler.Inline, useSynchronizationContext: false,
|
||||
pauseWriterThreshold: pauseWriterThreshold, resumeWriterThreshold: pauseWriterThreshold / 2);
|
||||
var pair = DuplexPipe.CreateConnectionPair(options, options);
|
||||
Connection = new DefaultConnectionContext(Guid.NewGuid().ToString(), pair.Transport, pair.Application);
|
||||
|
||||
|
|
@ -70,16 +71,7 @@ namespace Microsoft.AspNetCore.SignalR.Tests
|
|||
{
|
||||
if (sendHandshakeRequestMessage)
|
||||
{
|
||||
var memoryBufferWriter = MemoryBufferWriter.Get();
|
||||
try
|
||||
{
|
||||
HandshakeProtocol.WriteRequestMessage(new HandshakeRequestMessage(_protocol.Name, _protocol.Version), memoryBufferWriter);
|
||||
await Connection.Application.Output.WriteAsync(memoryBufferWriter.ToArray());
|
||||
}
|
||||
finally
|
||||
{
|
||||
MemoryBufferWriter.Return(memoryBufferWriter);
|
||||
}
|
||||
await Connection.Application.Output.WriteAsync(GetHandshakeRequestMessage());
|
||||
}
|
||||
|
||||
var connection = handler.OnConnectedAsync(Connection);
|
||||
|
|
@ -257,7 +249,7 @@ namespace Microsoft.AspNetCore.SignalR.Tests
|
|||
}
|
||||
else
|
||||
{
|
||||
// read first message out of the incoming data
|
||||
// read first message out of the incoming data
|
||||
if (HandshakeProtocol.TryParseResponseMessage(ref buffer, out var responseMessage))
|
||||
{
|
||||
return responseMessage;
|
||||
|
|
@ -312,6 +304,20 @@ namespace Microsoft.AspNetCore.SignalR.Tests
|
|||
}
|
||||
}
|
||||
|
||||
public byte[] GetHandshakeRequestMessage()
|
||||
{
|
||||
var memoryBufferWriter = MemoryBufferWriter.Get();
|
||||
try
|
||||
{
|
||||
HandshakeProtocol.WriteRequestMessage(new HandshakeRequestMessage(_protocol.Name, _protocol.Version), memoryBufferWriter);
|
||||
return memoryBufferWriter.ToArray();
|
||||
}
|
||||
finally
|
||||
{
|
||||
MemoryBufferWriter.Return(memoryBufferWriter);
|
||||
}
|
||||
}
|
||||
|
||||
private class DefaultInvocationBinder : IInvocationBinder
|
||||
{
|
||||
public IReadOnlyList<Type> GetParameterTypes(string methodName)
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ namespace Microsoft.AspNetCore.SignalR.Microbenchmarks
|
|||
_parser = new ServerSentEventsMessageParser();
|
||||
_rawData = new ReadOnlySequence<byte>(protocol.GetMessageBytes(hubMessage));
|
||||
var ms = new MemoryStream();
|
||||
ServerSentEventsMessageFormatter.WriteMessageAsync(_rawData, ms).GetAwaiter().GetResult();
|
||||
ServerSentEventsMessageFormatter.WriteMessageAsync(_rawData, ms, default).GetAwaiter().GetResult();
|
||||
_sseFormattedData = ms.ToArray();
|
||||
}
|
||||
|
||||
|
|
@ -81,7 +81,7 @@ namespace Microsoft.AspNetCore.SignalR.Microbenchmarks
|
|||
[Benchmark]
|
||||
public Task WriteSingleMessage()
|
||||
{
|
||||
return ServerSentEventsMessageFormatter.WriteMessageAsync(_rawData, Stream.Null);
|
||||
return ServerSentEventsMessageFormatter.WriteMessageAsync(_rawData, Stream.Null, default);
|
||||
}
|
||||
|
||||
public enum Message
|
||||
|
|
|
|||
|
|
@ -82,10 +82,10 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
/// <inheritdoc />
|
||||
public override Task SendAllAsync(string methodName, object[] args, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return SendToAllConnections(methodName, args, null);
|
||||
return SendToAllConnections(methodName, args, include: null, cancellationToken);
|
||||
}
|
||||
|
||||
private Task SendToAllConnections(string methodName, object[] args, Func<HubConnectionContext, bool> include)
|
||||
private Task SendToAllConnections(string methodName, object[] args, Func<HubConnectionContext, bool> include, CancellationToken cancellationToken)
|
||||
{
|
||||
List<Task> tasks = null;
|
||||
SerializedHubMessage message = null;
|
||||
|
|
@ -103,7 +103,7 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
message = CreateSerializedInvocationMessage(methodName, args);
|
||||
}
|
||||
|
||||
var task = connection.WriteAsync(message);
|
||||
var task = connection.WriteAsync(message, cancellationToken);
|
||||
|
||||
if (!task.IsCompletedSuccessfully)
|
||||
{
|
||||
|
|
@ -127,7 +127,8 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
|
||||
// Tasks and message are passed by ref so they can be lazily created inside the method post-filtering,
|
||||
// while still being re-usable when sending to multiple groups
|
||||
private void SendToGroupConnections(string methodName, object[] args, ConcurrentDictionary<string, HubConnectionContext> connections, Func<HubConnectionContext, bool> include, ref List<Task> tasks, ref SerializedHubMessage message)
|
||||
private void SendToGroupConnections(string methodName, object[] args, ConcurrentDictionary<string, HubConnectionContext> connections, Func<HubConnectionContext, bool> include,
|
||||
ref List<Task> tasks, ref SerializedHubMessage message, CancellationToken cancellationToken)
|
||||
{
|
||||
// foreach over ConcurrentDictionary avoids allocating an enumerator
|
||||
foreach (var connection in connections)
|
||||
|
|
@ -142,7 +143,7 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
message = CreateSerializedInvocationMessage(methodName, args);
|
||||
}
|
||||
|
||||
var task = connection.Value.WriteAsync(message);
|
||||
var task = connection.Value.WriteAsync(message, cancellationToken);
|
||||
|
||||
if (!task.IsCompletedSuccessfully)
|
||||
{
|
||||
|
|
@ -175,7 +176,7 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
// Write message directly to connection without caching it in memory
|
||||
var message = CreateInvocationMessage(methodName, args);
|
||||
|
||||
return connection.WriteAsync(message).AsTask();
|
||||
return connection.WriteAsync(message, cancellationToken).AsTask();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
|
@ -193,7 +194,7 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
// group might be modified inbetween checking and sending
|
||||
List<Task> tasks = null;
|
||||
SerializedHubMessage message = null;
|
||||
SendToGroupConnections(methodName, args, group, null, ref tasks, ref message);
|
||||
SendToGroupConnections(methodName, args, group, null, ref tasks, ref message, cancellationToken);
|
||||
|
||||
if (tasks != null)
|
||||
{
|
||||
|
|
@ -221,7 +222,7 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
var group = _groups[groupName];
|
||||
if (group != null)
|
||||
{
|
||||
SendToGroupConnections(methodName, args, group, null, ref tasks, ref message);
|
||||
SendToGroupConnections(methodName, args, group, null, ref tasks, ref message, cancellationToken);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -247,7 +248,7 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
List<Task> tasks = null;
|
||||
SerializedHubMessage message = null;
|
||||
|
||||
SendToGroupConnections(methodName, args, group, connection => !excludedConnectionIds.Contains(connection.ConnectionId), ref tasks, ref message);
|
||||
SendToGroupConnections(methodName, args, group, connection => !excludedConnectionIds.Contains(connection.ConnectionId), ref tasks, ref message, cancellationToken);
|
||||
|
||||
if (tasks != null)
|
||||
{
|
||||
|
|
@ -271,7 +272,7 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
/// <inheritdoc />
|
||||
public override Task SendUserAsync(string userId, string methodName, object[] args, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return SendToAllConnections(methodName, args, connection => string.Equals(connection.UserIdentifier, userId, StringComparison.Ordinal));
|
||||
return SendToAllConnections(methodName, args, connection => string.Equals(connection.UserIdentifier, userId, StringComparison.Ordinal), cancellationToken);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
|
@ -292,19 +293,19 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
/// <inheritdoc />
|
||||
public override Task SendAllExceptAsync(string methodName, object[] args, IReadOnlyList<string> excludedConnectionIds, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return SendToAllConnections(methodName, args, connection => !excludedConnectionIds.Contains(connection.ConnectionId));
|
||||
return SendToAllConnections(methodName, args, connection => !excludedConnectionIds.Contains(connection.ConnectionId), cancellationToken);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override Task SendConnectionsAsync(IReadOnlyList<string> connectionIds, string methodName, object[] args, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return SendToAllConnections(methodName, args, connection => connectionIds.Contains(connection.ConnectionId));
|
||||
return SendToAllConnections(methodName, args, connection => connectionIds.Contains(connection.ConnectionId), cancellationToken);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override Task SendUsersAsync(IReadOnlyList<string> userIds, string methodName, object[] args, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return SendToAllConnections(methodName, args, connection => userIds.Contains(connection.UserIdentifier));
|
||||
return SendToAllConnections(methodName, args, connection => userIds.Contains(connection.UserIdentifier), cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
private readonly long _keepAliveInterval;
|
||||
private readonly long _clientTimeoutInterval;
|
||||
private readonly SemaphoreSlim _writeLock = new SemaphoreSlim(1);
|
||||
private readonly bool _useAbsoluteClientTimeout;
|
||||
private readonly object _receiveMessageTimeoutLock = new object();
|
||||
|
||||
private StreamTracker _streamTracker;
|
||||
private long _lastSendTimeStamp = DateTime.UtcNow.Ticks;
|
||||
|
|
@ -41,10 +43,13 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
private bool _receivedMessageThisInterval = false;
|
||||
private ReadOnlyMemory<byte> _cachedPingMessage;
|
||||
private bool _clientTimeoutActive;
|
||||
private bool _connectionAborted;
|
||||
private volatile bool _connectionAborted;
|
||||
private volatile bool _allowReconnect = true;
|
||||
private int _streamBufferCapacity;
|
||||
private long? _maxMessageSize;
|
||||
private bool _receivedMessageTimeoutEnabled = false;
|
||||
private long _receivedMessageElapsedTicks = 0;
|
||||
private long _receivedMessageTimestamp;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="HubConnectionContext"/> class.
|
||||
|
|
@ -64,6 +69,11 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
ConnectionAborted = _connectionAbortedTokenSource.Token;
|
||||
|
||||
HubCallerContext = new DefaultHubCallerContext(this);
|
||||
|
||||
if (AppContext.TryGetSwitch("Microsoft.AspNetCore.SignalR.UseAbsoluteClientTimeout", out var useAbsoluteClientTimeout))
|
||||
{
|
||||
_useAbsoluteClientTimeout = useAbsoluteClientTimeout;
|
||||
}
|
||||
}
|
||||
|
||||
internal StreamTracker StreamTracker
|
||||
|
|
@ -131,7 +141,7 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
// Try to grab the lock synchronously, if we fail, go to the slower path
|
||||
if (!_writeLock.Wait(0))
|
||||
{
|
||||
return new ValueTask(WriteSlowAsync(message));
|
||||
return new ValueTask(WriteSlowAsync(message, cancellationToken));
|
||||
}
|
||||
|
||||
if (_connectionAborted)
|
||||
|
|
@ -141,7 +151,7 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
}
|
||||
|
||||
// This method should never throw synchronously
|
||||
var task = WriteCore(message);
|
||||
var task = WriteCore(message, cancellationToken);
|
||||
|
||||
// The write didn't complete synchronously so await completion
|
||||
if (!task.IsCompletedSuccessfully)
|
||||
|
|
@ -167,7 +177,7 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
// Try to grab the lock synchronously, if we fail, go to the slower path
|
||||
if (!_writeLock.Wait(0))
|
||||
{
|
||||
return new ValueTask(WriteSlowAsync(message));
|
||||
return new ValueTask(WriteSlowAsync(message, cancellationToken));
|
||||
}
|
||||
|
||||
if (_connectionAborted)
|
||||
|
|
@ -177,7 +187,7 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
}
|
||||
|
||||
// This method should never throw synchronously
|
||||
var task = WriteCore(message);
|
||||
var task = WriteCore(message, cancellationToken);
|
||||
|
||||
// The write didn't complete synchronously so await completion
|
||||
if (!task.IsCompletedSuccessfully)
|
||||
|
|
@ -191,7 +201,7 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
return default;
|
||||
}
|
||||
|
||||
private ValueTask<FlushResult> WriteCore(HubMessage message)
|
||||
private ValueTask<FlushResult> WriteCore(HubMessage message, CancellationToken cancellationToken)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
@ -199,7 +209,7 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
// write it without caching.
|
||||
Protocol.WriteMessage(message, _connectionContext.Transport.Output);
|
||||
|
||||
return _connectionContext.Transport.Output.FlushAsync();
|
||||
return _connectionContext.Transport.Output.FlushAsync(cancellationToken);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
|
@ -211,14 +221,14 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
}
|
||||
}
|
||||
|
||||
private ValueTask<FlushResult> WriteCore(SerializedHubMessage message)
|
||||
private ValueTask<FlushResult> WriteCore(SerializedHubMessage message, CancellationToken cancellationToken)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Grab a preserialized buffer for this protocol.
|
||||
var buffer = message.GetSerializedMessage(Protocol);
|
||||
|
||||
return _connectionContext.Transport.Output.WriteAsync(buffer);
|
||||
return _connectionContext.Transport.Output.WriteAsync(buffer, cancellationToken);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
|
@ -249,10 +259,10 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
}
|
||||
}
|
||||
|
||||
private async Task WriteSlowAsync(HubMessage message)
|
||||
private async Task WriteSlowAsync(HubMessage message, CancellationToken cancellationToken)
|
||||
{
|
||||
// Failed to get the lock immediately when entering WriteAsync so await until it is available
|
||||
await _writeLock.WaitAsync();
|
||||
await _writeLock.WaitAsync(cancellationToken);
|
||||
|
||||
try
|
||||
{
|
||||
|
|
@ -261,7 +271,7 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
return;
|
||||
}
|
||||
|
||||
await WriteCore(message);
|
||||
await WriteCore(message, cancellationToken);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
|
@ -274,7 +284,7 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
}
|
||||
}
|
||||
|
||||
private async Task WriteSlowAsync(SerializedHubMessage message)
|
||||
private async Task WriteSlowAsync(SerializedHubMessage message, CancellationToken cancellationToken)
|
||||
{
|
||||
// Failed to get the lock immediately when entering WriteAsync so await until it is available
|
||||
await _writeLock.WaitAsync();
|
||||
|
|
@ -286,7 +296,7 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
return;
|
||||
}
|
||||
|
||||
await WriteCore(message);
|
||||
await WriteCore(message, cancellationToken);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
|
@ -370,6 +380,9 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
private void AbortAllowReconnect()
|
||||
{
|
||||
_connectionAborted = true;
|
||||
// Cancel any current writes or writes that are about to happen and have already gone past the _connectionAborted bool
|
||||
// We have to do this outside of the lock otherwise it could hang if the write is observing backpressure
|
||||
_connectionContext.Transport.Output.CancelPendingFlush();
|
||||
|
||||
// If we already triggered the token then noop, this isn't thread safe but it's good enough
|
||||
// to avoid spawning a new task in the most common cases
|
||||
|
|
@ -525,9 +538,23 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
internal Task AbortAsync()
|
||||
{
|
||||
AbortAllowReconnect();
|
||||
|
||||
// Acquire lock to make sure all writes are completed
|
||||
if (!_writeLock.Wait(0))
|
||||
{
|
||||
return AbortAsyncSlow();
|
||||
}
|
||||
_writeLock.Release();
|
||||
return _abortCompletedTcs.Task;
|
||||
}
|
||||
|
||||
private async Task AbortAsyncSlow()
|
||||
{
|
||||
await _writeLock.WaitAsync();
|
||||
_writeLock.Release();
|
||||
await _abortCompletedTcs.Task;
|
||||
}
|
||||
|
||||
private void KeepAliveTick()
|
||||
{
|
||||
var currentTime = DateTime.UtcNow.Ticks;
|
||||
|
|
@ -564,17 +591,41 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
|
||||
private void CheckClientTimeout()
|
||||
{
|
||||
// If it's been too long since we've heard from the client, then close this
|
||||
if (DateTime.UtcNow.Ticks - Volatile.Read(ref _lastReceivedTimeStamp) > _clientTimeoutInterval)
|
||||
if (Debugger.IsAttached)
|
||||
{
|
||||
if (!_receivedMessageThisInterval)
|
||||
{
|
||||
Log.ClientTimeout(_logger, TimeSpan.FromTicks(_clientTimeoutInterval));
|
||||
AbortAllowReconnect();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
_receivedMessageThisInterval = false;
|
||||
Volatile.Write(ref _lastReceivedTimeStamp, DateTime.UtcNow.Ticks);
|
||||
if (_useAbsoluteClientTimeout)
|
||||
{
|
||||
// If it's been too long since we've heard from the client, then close this
|
||||
if (DateTime.UtcNow.Ticks - Volatile.Read(ref _lastReceivedTimeStamp) > _clientTimeoutInterval)
|
||||
{
|
||||
if (!_receivedMessageThisInterval)
|
||||
{
|
||||
Log.ClientTimeout(_logger, TimeSpan.FromTicks(_clientTimeoutInterval));
|
||||
AbortAllowReconnect();
|
||||
}
|
||||
|
||||
_receivedMessageThisInterval = false;
|
||||
Volatile.Write(ref _lastReceivedTimeStamp, DateTime.UtcNow.Ticks);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lock (_receiveMessageTimeoutLock)
|
||||
{
|
||||
if (_receivedMessageTimeoutEnabled)
|
||||
{
|
||||
_receivedMessageElapsedTicks = DateTime.UtcNow.Ticks - _receivedMessageTimestamp;
|
||||
|
||||
if (_receivedMessageElapsedTicks >= _clientTimeoutInterval)
|
||||
{
|
||||
Log.ClientTimeout(_logger, TimeSpan.FromTicks(_clientTimeoutInterval));
|
||||
AbortAllowReconnect();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -623,6 +674,35 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
_receivedMessageThisInterval = true;
|
||||
}
|
||||
|
||||
internal void BeginClientTimeout()
|
||||
{
|
||||
// check if new timeout behavior is in use
|
||||
if (!_useAbsoluteClientTimeout)
|
||||
{
|
||||
lock (_receiveMessageTimeoutLock)
|
||||
{
|
||||
_receivedMessageTimeoutEnabled = true;
|
||||
_receivedMessageTimestamp = DateTime.UtcNow.Ticks;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal void StopClientTimeout()
|
||||
{
|
||||
// check if new timeout behavior is in use
|
||||
if (!_useAbsoluteClientTimeout)
|
||||
{
|
||||
lock (_receiveMessageTimeoutLock)
|
||||
{
|
||||
// we received a message so stop the timer and reset it
|
||||
// it will resume after the message has been processed
|
||||
_receivedMessageElapsedTicks = 0;
|
||||
_receivedMessageTimestamp = 0;
|
||||
_receivedMessageTimeoutEnabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class Log
|
||||
{
|
||||
// Category: HubConnectionContext
|
||||
|
|
|
|||
|
|
@ -213,6 +213,8 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
{
|
||||
var input = connection.Input;
|
||||
var protocol = connection.Protocol;
|
||||
connection.BeginClientTimeout();
|
||||
|
||||
|
||||
var binder = new HubConnectionBinder<THub>(_dispatcher, connection);
|
||||
|
||||
|
|
@ -221,6 +223,8 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
var result = await input.ReadAsync();
|
||||
var buffer = result.Buffer;
|
||||
|
||||
connection.ResetClientTimeout();
|
||||
|
||||
try
|
||||
{
|
||||
if (result.IsCanceled)
|
||||
|
|
@ -230,15 +234,21 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
|
||||
if (!buffer.IsEmpty)
|
||||
{
|
||||
connection.ResetClientTimeout();
|
||||
|
||||
bool messageReceived = false;
|
||||
// No message limit, just parse and dispatch
|
||||
if (_maximumMessageSize == null)
|
||||
{
|
||||
while (protocol.TryParseMessage(ref buffer, binder, out var message))
|
||||
{
|
||||
messageReceived = true;
|
||||
connection.StopClientTimeout();
|
||||
await _dispatcher.DispatchMessageAsync(connection, message);
|
||||
}
|
||||
|
||||
if (messageReceived)
|
||||
{
|
||||
connection.BeginClientTimeout();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -258,6 +268,9 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
|
||||
if (protocol.TryParseMessage(ref segment, binder, out var message))
|
||||
{
|
||||
messageReceived = true;
|
||||
connection.StopClientTimeout();
|
||||
|
||||
await _dispatcher.DispatchMessageAsync(connection, message);
|
||||
}
|
||||
else if (overLength)
|
||||
|
|
@ -273,6 +286,11 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
// Update the buffer to the remaining segment
|
||||
buffer = buffer.Slice(segment.Start);
|
||||
}
|
||||
|
||||
if (messageReceived)
|
||||
{
|
||||
connection.BeginClientTimeout();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ namespace Microsoft.AspNetCore.SignalR.Internal
|
|||
|
||||
public Task SendCoreAsync(string method, object[] args, CancellationToken cancellationToken = default)
|
||||
{
|
||||
return _lifetimeManager.SendAllAsync(method, args);
|
||||
return _lifetimeManager.SendAllAsync(method, args, cancellationToken);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,14 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using System.Threading;
|
||||
using Microsoft.AspNetCore.SignalR.Protocol;
|
||||
using Microsoft.AspNetCore.SignalR.Specification.Tests;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Logging.Abstractions;
|
||||
using Microsoft.AspNetCore.SignalR.Specification.Tests;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.SignalR.Tests
|
||||
{
|
||||
|
|
@ -13,5 +18,241 @@ namespace Microsoft.AspNetCore.SignalR.Tests
|
|||
{
|
||||
return new DefaultHubLifetimeManager<MyHub>(new Logger<DefaultHubLifetimeManager<MyHub>>(NullLoggerFactory.Instance));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SendAllAsyncWillCancelWithToken()
|
||||
{
|
||||
using (var client1 = new TestClient())
|
||||
using (var client2 = new TestClient(pauseWriterThreshold: 2))
|
||||
{
|
||||
var manager = CreateNewHubLifetimeManager();
|
||||
var connection1 = HubConnectionContextUtils.Create(client1.Connection);
|
||||
var connection2 = HubConnectionContextUtils.Create(client2.Connection);
|
||||
await manager.OnConnectedAsync(connection1).OrTimeout();
|
||||
await manager.OnConnectedAsync(connection2).OrTimeout();
|
||||
var cts = new CancellationTokenSource();
|
||||
var sendTask = manager.SendAllAsync("Hello", new object[] { "World" }, cts.Token).OrTimeout();
|
||||
Assert.False(sendTask.IsCompleted);
|
||||
cts.Cancel();
|
||||
await sendTask.OrTimeout();
|
||||
var message = Assert.IsType<InvocationMessage>(client1.TryRead());
|
||||
Assert.Equal("Hello", message.Target);
|
||||
Assert.Single(message.Arguments);
|
||||
Assert.Equal("World", (string)message.Arguments[0]);
|
||||
var tcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
connection2.ConnectionAborted.Register(t =>
|
||||
{
|
||||
((TaskCompletionSource<object>)t).SetResult(null);
|
||||
}, tcs);
|
||||
await tcs.Task.OrTimeout();
|
||||
Assert.False(connection1.ConnectionAborted.IsCancellationRequested);
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SendAllExceptAsyncWillCancelWithToken()
|
||||
{
|
||||
using (var client1 = new TestClient())
|
||||
using (var client2 = new TestClient(pauseWriterThreshold: 2))
|
||||
{
|
||||
var manager = CreateNewHubLifetimeManager();
|
||||
var connection1 = HubConnectionContextUtils.Create(client1.Connection);
|
||||
var connection2 = HubConnectionContextUtils.Create(client2.Connection);
|
||||
await manager.OnConnectedAsync(connection1).OrTimeout();
|
||||
await manager.OnConnectedAsync(connection2).OrTimeout();
|
||||
var cts = new CancellationTokenSource();
|
||||
var sendTask = manager.SendAllExceptAsync("Hello", new object[] { "World" }, new List<string> { connection1.ConnectionId }, cts.Token).OrTimeout();
|
||||
Assert.False(sendTask.IsCompleted);
|
||||
cts.Cancel();
|
||||
await sendTask.OrTimeout();
|
||||
var tcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
connection2.ConnectionAborted.Register(t =>
|
||||
{
|
||||
((TaskCompletionSource<object>)t).SetResult(null);
|
||||
}, tcs);
|
||||
await tcs.Task.OrTimeout();
|
||||
Assert.False(connection1.ConnectionAborted.IsCancellationRequested);
|
||||
Assert.Null(client1.TryRead());
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SendConnectionAsyncWillCancelWithToken()
|
||||
{
|
||||
using (var client1 = new TestClient(pauseWriterThreshold: 2))
|
||||
{
|
||||
var manager = CreateNewHubLifetimeManager();
|
||||
var connection1 = HubConnectionContextUtils.Create(client1.Connection);
|
||||
await manager.OnConnectedAsync(connection1).OrTimeout();
|
||||
var cts = new CancellationTokenSource();
|
||||
var sendTask = manager.SendConnectionAsync(connection1.ConnectionId, "Hello", new object[] { "World" }, cts.Token).OrTimeout();
|
||||
Assert.False(sendTask.IsCompleted);
|
||||
cts.Cancel();
|
||||
await sendTask.OrTimeout();
|
||||
var tcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
connection1.ConnectionAborted.Register(t =>
|
||||
{
|
||||
((TaskCompletionSource<object>)t).SetResult(null);
|
||||
}, tcs);
|
||||
await tcs.Task.OrTimeout();
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SendConnectionsAsyncWillCancelWithToken()
|
||||
{
|
||||
using (var client1 = new TestClient(pauseWriterThreshold: 2))
|
||||
{
|
||||
var manager = CreateNewHubLifetimeManager();
|
||||
var connection1 = HubConnectionContextUtils.Create(client1.Connection);
|
||||
await manager.OnConnectedAsync(connection1).OrTimeout();
|
||||
var cts = new CancellationTokenSource();
|
||||
var sendTask = manager.SendConnectionsAsync(new List<string> { connection1.ConnectionId }, "Hello", new object[] { "World" }, cts.Token).OrTimeout();
|
||||
Assert.False(sendTask.IsCompleted);
|
||||
cts.Cancel();
|
||||
await sendTask.OrTimeout();
|
||||
var tcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
connection1.ConnectionAborted.Register(t =>
|
||||
{
|
||||
((TaskCompletionSource<object>)t).SetResult(null);
|
||||
}, tcs);
|
||||
await tcs.Task.OrTimeout();
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SendGroupAsyncWillCancelWithToken()
|
||||
{
|
||||
using (var client1 = new TestClient(pauseWriterThreshold: 2))
|
||||
{
|
||||
var manager = CreateNewHubLifetimeManager();
|
||||
var connection1 = HubConnectionContextUtils.Create(client1.Connection);
|
||||
await manager.OnConnectedAsync(connection1).OrTimeout();
|
||||
await manager.AddToGroupAsync(connection1.ConnectionId, "group").OrTimeout();
|
||||
var cts = new CancellationTokenSource();
|
||||
var sendTask = manager.SendGroupAsync("group", "Hello", new object[] { "World" }, cts.Token).OrTimeout();
|
||||
Assert.False(sendTask.IsCompleted);
|
||||
cts.Cancel();
|
||||
await sendTask.OrTimeout();
|
||||
var tcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
connection1.ConnectionAborted.Register(t =>
|
||||
{
|
||||
((TaskCompletionSource<object>)t).SetResult(null);
|
||||
}, tcs);
|
||||
await tcs.Task.OrTimeout();
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SendGroupExceptAsyncWillCancelWithToken()
|
||||
{
|
||||
using (var client1 = new TestClient())
|
||||
using (var client2 = new TestClient(pauseWriterThreshold: 2))
|
||||
{
|
||||
var manager = CreateNewHubLifetimeManager();
|
||||
var connection1 = HubConnectionContextUtils.Create(client1.Connection);
|
||||
var connection2 = HubConnectionContextUtils.Create(client2.Connection);
|
||||
await manager.OnConnectedAsync(connection1).OrTimeout();
|
||||
await manager.OnConnectedAsync(connection2).OrTimeout();
|
||||
await manager.AddToGroupAsync(connection1.ConnectionId, "group").OrTimeout();
|
||||
await manager.AddToGroupAsync(connection2.ConnectionId, "group").OrTimeout();
|
||||
var cts = new CancellationTokenSource();
|
||||
var sendTask = manager.SendGroupExceptAsync("group", "Hello", new object[] { "World" }, new List<string> { connection1.ConnectionId }, cts.Token).OrTimeout();
|
||||
Assert.False(sendTask.IsCompleted);
|
||||
cts.Cancel();
|
||||
await sendTask.OrTimeout();
|
||||
var tcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
connection2.ConnectionAborted.Register(t =>
|
||||
{
|
||||
((TaskCompletionSource<object>)t).SetResult(null);
|
||||
}, tcs);
|
||||
await tcs.Task.OrTimeout();
|
||||
Assert.False(connection1.ConnectionAborted.IsCancellationRequested);
|
||||
Assert.Null(client1.TryRead());
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SendGroupsAsyncWillCancelWithToken()
|
||||
{
|
||||
using (var client1 = new TestClient(pauseWriterThreshold: 2))
|
||||
{
|
||||
var manager = CreateNewHubLifetimeManager();
|
||||
var connection1 = HubConnectionContextUtils.Create(client1.Connection);
|
||||
await manager.OnConnectedAsync(connection1).OrTimeout();
|
||||
await manager.AddToGroupAsync(connection1.ConnectionId, "group").OrTimeout();
|
||||
var cts = new CancellationTokenSource();
|
||||
var sendTask = manager.SendGroupsAsync(new List<string> { "group" }, "Hello", new object[] { "World" }, cts.Token).OrTimeout();
|
||||
Assert.False(sendTask.IsCompleted);
|
||||
cts.Cancel();
|
||||
await sendTask.OrTimeout();
|
||||
var tcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
connection1.ConnectionAborted.Register(t =>
|
||||
{
|
||||
((TaskCompletionSource<object>)t).SetResult(null);
|
||||
}, tcs);
|
||||
await tcs.Task.OrTimeout();
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SendUserAsyncWillCancelWithToken()
|
||||
{
|
||||
using (var client1 = new TestClient())
|
||||
using (var client2 = new TestClient(pauseWriterThreshold: 2))
|
||||
{
|
||||
var manager = CreateNewHubLifetimeManager();
|
||||
var connection1 = HubConnectionContextUtils.Create(client1.Connection, userIdentifier: "user");
|
||||
var connection2 = HubConnectionContextUtils.Create(client2.Connection, userIdentifier: "user");
|
||||
await manager.OnConnectedAsync(connection1).OrTimeout();
|
||||
await manager.OnConnectedAsync(connection2).OrTimeout();
|
||||
var cts = new CancellationTokenSource();
|
||||
var sendTask = manager.SendUserAsync("user", "Hello", new object[] { "World" }, cts.Token).OrTimeout();
|
||||
Assert.False(sendTask.IsCompleted);
|
||||
cts.Cancel();
|
||||
await sendTask.OrTimeout();
|
||||
var message = Assert.IsType<InvocationMessage>(client1.TryRead());
|
||||
Assert.Equal("Hello", message.Target);
|
||||
Assert.Single(message.Arguments);
|
||||
Assert.Equal("World", (string)message.Arguments[0]);
|
||||
var tcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
connection2.ConnectionAborted.Register(t =>
|
||||
{
|
||||
((TaskCompletionSource<object>)t).SetResult(null);
|
||||
}, tcs);
|
||||
await tcs.Task.OrTimeout();
|
||||
Assert.False(connection1.ConnectionAborted.IsCancellationRequested);
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SendUsersAsyncWillCancelWithToken()
|
||||
{
|
||||
using (var client1 = new TestClient())
|
||||
using (var client2 = new TestClient(pauseWriterThreshold: 2))
|
||||
{
|
||||
var manager = CreateNewHubLifetimeManager();
|
||||
var connection1 = HubConnectionContextUtils.Create(client1.Connection, userIdentifier: "user1");
|
||||
var connection2 = HubConnectionContextUtils.Create(client2.Connection, userIdentifier: "user2");
|
||||
await manager.OnConnectedAsync(connection1).OrTimeout();
|
||||
await manager.OnConnectedAsync(connection2).OrTimeout();
|
||||
var cts = new CancellationTokenSource();
|
||||
var sendTask = manager.SendUsersAsync(new List<string> { "user1", "user2" }, "Hello", new object[] { "World" }, cts.Token).OrTimeout();
|
||||
Assert.False(sendTask.IsCompleted);
|
||||
cts.Cancel();
|
||||
await sendTask.OrTimeout();
|
||||
var message = Assert.IsType<InvocationMessage>(client1.TryRead());
|
||||
Assert.Equal("Hello", message.Target);
|
||||
Assert.Single(message.Arguments);
|
||||
Assert.Equal("World", (string)message.Arguments[0]);
|
||||
var tcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
connection2.ConnectionAborted.Register(t =>
|
||||
{
|
||||
((TaskCompletionSource<object>)t).SetResult(null);
|
||||
}, tcs);
|
||||
await tcs.Task.OrTimeout();
|
||||
Assert.False(connection1.ConnectionAborted.IsCancellationRequested);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2797,6 +2797,47 @@ namespace Microsoft.AspNetCore.SignalR.Tests
|
|||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task HubMethodInvokeDoesNotCountTowardsClientTimeout()
|
||||
{
|
||||
using (StartVerifiableLog())
|
||||
{
|
||||
var tcsService = new TcsService();
|
||||
var serviceProvider = HubConnectionHandlerTestUtils.CreateServiceProvider(services =>
|
||||
{
|
||||
services.Configure<HubOptions>(options =>
|
||||
options.ClientTimeoutInterval = TimeSpan.FromMilliseconds(0));
|
||||
services.AddSingleton(tcsService);
|
||||
}, LoggerFactory);
|
||||
var connectionHandler = serviceProvider.GetService<HubConnectionHandler<LongRunningHub>>();
|
||||
|
||||
using (var client = new TestClient(new JsonHubProtocol()))
|
||||
{
|
||||
var connectionHandlerTask = await client.ConnectAsync(connectionHandler);
|
||||
// This starts the timeout logic
|
||||
await client.SendHubMessageAsync(PingMessage.Instance);
|
||||
|
||||
// Call long running hub method
|
||||
var hubMethodTask = client.InvokeAsync(nameof(LongRunningHub.LongRunningMethod));
|
||||
await tcsService.StartedMethod.Task.OrTimeout();
|
||||
|
||||
// Tick heartbeat while hub method is running to show that close isn't triggered
|
||||
client.TickHeartbeat();
|
||||
|
||||
// Unblock long running hub method
|
||||
tcsService.EndMethod.SetResult(null);
|
||||
|
||||
await hubMethodTask.OrTimeout();
|
||||
|
||||
// Tick heartbeat again now that we're outside of the hub method
|
||||
client.TickHeartbeat();
|
||||
|
||||
// Connection is closed
|
||||
await connectionHandlerTask.OrTimeout();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task EndingConnectionSendsCloseMessageWithNoError()
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue