Merge branch 'master' into merge/release/5.0-preview5-to-master
This commit is contained in:
commit
5e65e399be
|
|
@ -0,0 +1,14 @@
|
|||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: Issue with .NET runtime or core .NET libraries
|
||||
url: https://github.com/dotnet/runtime/issues/new/choose
|
||||
about: Please open issues relating to the .NET runtime or core .NET libraries in dotnet/runtime.
|
||||
- name: Issue with .NET SDK
|
||||
url: https://github.com/dotnet/sdk/issues/new/choose
|
||||
about: Please open issues relating to the .NET SDK itself in dotnet/sdk.
|
||||
- name: Issue with Entity Framework Core
|
||||
url: https://github.com/dotnet/efcore/issues/new/choose
|
||||
about: Please open issues relating to Entity Framework Core in dotnet/efcore.
|
||||
- name: Issue with Roslyn compiler
|
||||
url: https://github.com/dotnet/roslyn/issues/new/choose
|
||||
about: Please open issues relating to the Roslyn .NET compiler in dotnet/roslyn.
|
||||
|
|
@ -2,14 +2,12 @@
|
|||
<configuration>
|
||||
<packageSources>
|
||||
<clear />
|
||||
<add key="dotnet-core" value="https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json" />
|
||||
<add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
|
||||
<add key="dotnet-tools" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" />
|
||||
<add key="dotnet5" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json" />
|
||||
<add key="dotnet5-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-transport/nuget/v3/index.json" />
|
||||
<add key="roslyn" value="https://dotnet.myget.org/F/roslyn/api/v3/index.json" />
|
||||
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
|
||||
<add key="aspnetcore-dev" value="https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json" />
|
||||
<add key="aspnetcore-tools" value="https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json" />
|
||||
<add key="roslyn-tools" value="https://dotnet.myget.org/F/roslyn-tools/api/v3/index.json" />
|
||||
<!-- Used for the SiteExtension 3.1 bits that are included in the 5.0 build -->
|
||||
<add key="dotnet31-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet3.1-transport/nuget/v3/index.json" />
|
||||
|
|
|
|||
20
build.ps1
20
build.ps1
|
|
@ -253,9 +253,7 @@ $RunRestore = if ($NoRestore) { $false }
|
|||
# Target selection
|
||||
$MSBuildArguments += "/p:Restore=$RunRestore"
|
||||
$MSBuildArguments += "/p:Build=$RunBuild"
|
||||
if (-not $RunBuild) {
|
||||
$MSBuildArguments += "/p:NoBuild=true"
|
||||
}
|
||||
if (-not $RunBuild) { $MSBuildArguments += "/p:NoBuild=true" }
|
||||
$MSBuildArguments += "/p:Pack=$Pack"
|
||||
$MSBuildArguments += "/p:Test=$Test"
|
||||
$MSBuildArguments += "/p:Sign=$Sign"
|
||||
|
|
@ -364,18 +362,20 @@ Remove-Item variable:global:_MSBuildExe -ea Ignore
|
|||
# Import Arcade
|
||||
. "$PSScriptRoot/eng/common/tools.ps1"
|
||||
|
||||
# Add default .binlog location if not already on the command line. tools.ps1 does not handle this; it just checks
|
||||
# $BinaryLog, $CI and $ExcludeCIBinarylog values for an error case. But tools.ps1 provides a nice function to help.
|
||||
if ($BinaryLog) {
|
||||
$bl = GetMSBuildBinaryLogCommandLineArgument($MSBuildArguments)
|
||||
if (-not $bl) {
|
||||
$MSBuildArguments += "/bl:" + (Join-Path $LogDir "Build.binlog")
|
||||
}
|
||||
}
|
||||
|
||||
# Capture MSBuild crash logs
|
||||
$env:MSBUILDDEBUGPATH = $LogDir
|
||||
|
||||
$local:exit_code = $null
|
||||
try {
|
||||
# Import custom tools configuration, if present in the repo.
|
||||
# Note: Import in global scope so that the script set top-level variables without qualification.
|
||||
$configureToolsetScript = Join-Path $EngRoot "configure-toolset.ps1"
|
||||
if (Test-Path $configureToolsetScript) {
|
||||
. $configureToolsetScript
|
||||
}
|
||||
|
||||
# Set this global property so Arcade will always initialize the toolset. The error message you get when you build on a clean machine
|
||||
# with -norestore is not obvious about what to do to fix it. As initialization takes very little time, we think always initializing
|
||||
# the toolset is a better default behavior.
|
||||
|
|
|
|||
26
build.sh
26
build.sh
|
|
@ -288,10 +288,6 @@ if [ -z "$configuration" ]; then
|
|||
fi
|
||||
msbuild_args[${#msbuild_args[*]}]="-p:Configuration=$configuration"
|
||||
|
||||
# Set verbosity
|
||||
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$dotnet_runtime_source_feed_key" ]; then
|
||||
|
|
@ -328,15 +324,25 @@ fi
|
|||
# Import Arcade
|
||||
. "$DIR/eng/common/tools.sh"
|
||||
|
||||
# Add default .binlog location if not already on the command line. tools.sh does not handle this; it just checks
|
||||
# $binary_log, $ci and $exclude_ci_binary_log values for an error case.
|
||||
if [[ "$binary_log" == true ]]; then
|
||||
found=false
|
||||
for arg in "${msbuild_args[@]}"; do
|
||||
opt="$(echo "${arg/#--/-}" | awk '{print tolower($0)}')"
|
||||
if [[ "$opt" == [-/]bl:* || "$opt" == [-/]binarylogger:* ]]; then
|
||||
found=true
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [[ "$found" == false ]]; then
|
||||
msbuild_args[${#msbuild_args[*]}]="/bl:$log_dir/Build.binlog"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Capture MSBuild crash logs
|
||||
export MSBUILDDEBUGPATH="$log_dir"
|
||||
|
||||
# Import custom tools configuration, if present in the repo.
|
||||
configure_toolset_script="$eng_root/configure-toolset.sh"
|
||||
if [[ -a "$configure_toolset_script" ]]; then
|
||||
. "$configure_toolset_script"
|
||||
fi
|
||||
|
||||
# Set this global property so Arcade will always initialize the toolset. The error message you get when you build on a clean machine
|
||||
# with -norestore is not obvious about what to do to fix it. As initialization takes very little time, we think always initializing
|
||||
# the toolset is a better default behavior.
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
|
||||
<AspNetCoreBaselineVersion>3.1.3</AspNetCoreBaselineVersion>
|
||||
<AspNetCoreBaselineVersion>3.1.4</AspNetCoreBaselineVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: AspNetCoreRuntime.3.0.x64-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'AspNetCoreRuntime.3.0.x64' ">
|
||||
|
|
@ -16,92 +16,92 @@
|
|||
<ItemGroup Condition=" '$(PackageId)' == 'AspNetCoreRuntime.3.0.x86' AND '$(TargetFramework)' == 'net461' " />
|
||||
<!-- Package: dotnet-sql-cache-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'dotnet-sql-cache' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.ApiAuthorization.IdentityServer-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.ApiAuthorization.IdentityServer' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.ApiAuthorization.IdentityServer' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="[3.1.4, )" />
|
||||
<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.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Http" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.App.Runtime.win-x64-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.App.Runtime.win-x64' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Authentication.AzureAD.UI-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.AzureAD.UI' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.AzureAD.UI' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Authentication.AzureADB2C.UI-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.AzureADB2C.UI' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.AzureADB2C.UI' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Authentication.Certificate-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.Certificate' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.Negotiate' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Authentication.OpenIdConnect-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.OpenIdConnect' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authorization' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Metadata" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Metadata" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authorization' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Metadata" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Metadata" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.AzureAppServices.HostingStartup-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.AzureAppServices.HostingStartup' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.AzureAppServices.HostingStartup' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.AzureAppServicesIntegration" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.AzureAppServicesIntegration" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.AzureAppServices.SiteExtension-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.AzureAppServices.SiteExtension' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.AzureAppServices.SiteExtension' AND '$(TargetFramework)' == 'net461' ">
|
||||
<BaselinePackageReference Include="Microsoft.Web.Xdt.Extensions" Version="[3.1.3-servicing.20163.14, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Web.Xdt.Extensions" Version="[3.1.4-servicing.20216.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.AzureAppServicesIntegration-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.AzureAppServicesIntegration' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.AzureAppServicesIntegration' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Blazor-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Blazor' ">
|
||||
|
|
@ -184,277 +184,277 @@
|
|||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Components-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components.Analyzers" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authorization" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.JSInterop" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components.Analyzers" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authorization" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.JSInterop" Version="[3.1.4, )" />
|
||||
<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.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authorization" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.JSInterop" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components.Analyzers" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authorization" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.JSInterop" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Components.Analyzers-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Analyzers' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Components.Authorization-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Authorization' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Authorization' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authorization" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authorization" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Authorization' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authorization" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authorization" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Components.Forms-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Forms' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Forms' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Forms' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.4, )" />
|
||||
<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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Web' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components.Forms" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.JSInterop" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components.Forms" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.JSInterop" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Components.Web' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components.Forms" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.JSInterop" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Components.Forms" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.JSInterop" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.ConcurrencyLimiter-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.ConcurrencyLimiter' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.ConcurrencyLimiter' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Connections.Abstractions-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Connections.Abstractions' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Connections.Abstractions' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Features" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Features" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="System.IO.Pipelines" Version="[4.7.1, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Connections.Abstractions' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Features" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="[1.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Features" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="[1.1.1, )" />
|
||||
<BaselinePackageReference Include="System.IO.Pipelines" Version="[4.7.1, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Connections.Abstractions' AND '$(TargetFramework)' == 'netstandard2.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Features" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Features" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="System.IO.Pipelines" Version="[4.7.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Cryptography.Internal-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Cryptography.Internal' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Cryptography.Internal' AND '$(TargetFramework)' == 'netcoreapp3.1' " />
|
||||
<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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Cryptography.KeyDerivation' AND '$(TargetFramework)' == 'netcoreapp2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Cryptography.KeyDerivation' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Cryptography.KeyDerivation' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.DataProtection-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.4, )" />
|
||||
<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.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.4, )" />
|
||||
<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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.Abstractions' AND '$(TargetFramework)' == 'netcoreapp3.1' " />
|
||||
<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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.AzureKeyVault' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.4, )" />
|
||||
<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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.AzureStorage' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.4, )" />
|
||||
<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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.EntityFrameworkCore' AND '$(TargetFramework)' == 'netstandard2.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.DataProtection.Extensions-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.Extensions' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.Extensions' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.Extensions' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.DataProtection.StackExchangeRedis-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.StackExchangeRedis' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.DataProtection.StackExchangeRedis' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.DataProtection" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="StackExchange.Redis" Version="[2.0.593, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.HeaderPropagation-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.HeaderPropagation' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.HeaderPropagation' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Http" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Http" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Hosting.WindowsServices-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Hosting.WindowsServices' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections.Client' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections.Common" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections.Common" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections.Client' AND '$(TargetFramework)' == 'netstandard2.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections.Common" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections.Common" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Http.Connections.Common-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections.Common' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections.Common' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections.Common' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="System.Text.Json" Version="[4.7.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="System.Text.Json" Version="[4.7.2, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Http.Features-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Features' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Features' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Primitives" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Primitives" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="System.IO.Pipelines" Version="[4.7.1, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Features' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Primitives" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Primitives" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="System.IO.Pipelines" Version="[4.7.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Identity.EntityFrameworkCore-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Identity.EntityFrameworkCore' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Identity.EntityFrameworkCore' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Stores" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Stores" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Identity.EntityFrameworkCore' AND '$(TargetFramework)' == 'netstandard2.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Stores" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Stores" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Identity.Specification.Tests-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Identity.Specification.Tests' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Identity.Specification.Tests' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Configuration" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Configuration" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.4, )" />
|
||||
<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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Identity.UI' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Stores" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Stores" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Newtonsoft.Json" Version="[12.0.2, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.JsonPatch-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.JsonPatch' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.JsonPatch' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.CSharp" Version="[4.7.0, )" />
|
||||
|
|
@ -462,239 +462,239 @@
|
|||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Metadata-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Metadata' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Metadata' AND '$(TargetFramework)' == 'netcoreapp3.1' " />
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Metadata' AND '$(TargetFramework)' == 'netstandard2.0' " />
|
||||
<!-- Package: Microsoft.AspNetCore.MiddlewareAnalysis-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.MiddlewareAnalysis' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.MiddlewareAnalysis' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Mvc.NewtonsoftJson-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Mvc.NewtonsoftJson' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Mvc.NewtonsoftJson' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="[3.1.4, )" />
|
||||
<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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Mvc.Razor.Extensions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.CodeAnalysis.Razor" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyModel" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Mvc.Razor.Extensions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.CodeAnalysis.Razor" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyModel" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Mvc.Testing-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Mvc.Testing' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Mvc.Testing' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.TestHost" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyModel" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Hosting" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.TestHost" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyModel" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Hosting" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.NodeServices-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.NodeServices' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.NodeServices' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Console" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Console" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Newtonsoft.Json" Version="[12.0.2, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Owin-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Owin' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Libuv" Version="[1.10.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.SignalR.Client-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Client' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Client' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Client.Core" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections.Client" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Client.Core" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections.Client" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.SignalR.Client.Core-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Client.Core' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Client.Core' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="[1.1.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="System.Threading.Channels" Version="[4.7.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="[1.1.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="System.Threading.Channels" Version="[4.7.1, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Client.Core' AND '$(TargetFramework)' == 'netstandard2.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="System.Threading.Channels" Version="[4.7.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="System.Threading.Channels" Version="[4.7.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.SignalR.Common-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Common' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Common' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Common' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="System.Text.Json" Version="[4.7.1, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="System.Text.Json" Version="[4.7.2, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.SignalR.Protocols.Json-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Protocols.Json' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Protocols.Json' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Protocols.Json' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.SignalR.Protocols.MessagePack-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Protocols.MessagePack' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Protocols.MessagePack' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.4, )" />
|
||||
<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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.4, )" />
|
||||
<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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Specification.Tests' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[3.1.4, )" />
|
||||
<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.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</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.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="StackExchange.Redis" Version="[2.0.593, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.SpaServices-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SpaServices' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SpaServices' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.NodeServices" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.NodeServices" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.SpaServices.Extensions-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SpaServices.Extensions' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SpaServices.Extensions' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SpaServices" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.FileProviders.Physical" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.SpaServices" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.FileProviders.Physical" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.TestHost-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.TestHost' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.TestHost' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="System.IO.Pipelines" Version="[4.7.1, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.dotnet-openapi-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.dotnet-openapi' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.DotNet.Web.Client.ItemTemplates-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.DotNet.Web.Client.ItemTemplates' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.DotNet.Web.ItemTemplates-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.DotNet.Web.ItemTemplates' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.DotNet.Web.ProjectTemplates.3.1-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.DotNet.Web.ProjectTemplates.3.1' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.DotNet.Web.Spa.ProjectTemplates.3.1-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.DotNet.Web.Spa.ProjectTemplates.3.1' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.Extensions.ApiDescription.Client-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.ApiDescription.Client' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.Extensions.ApiDescription.Server-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.ApiDescription.Server' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore' AND '$(TargetFramework)' == 'netstandard2.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.Extensions.Identity.Core-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.Identity.Core' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.Identity.Core' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.Identity.Core' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.Extensions.Identity.Stores-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.Identity.Stores' ">
|
||||
<BaselinePackageVersion>3.1.3</BaselinePackageVersion>
|
||||
<BaselinePackageVersion>3.1.4</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.Identity.Stores' AND '$(TargetFramework)' == 'netcoreapp3.1' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Core" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Core" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.Identity.Stores' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Core" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.3, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Identity.Core" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="[3.1.4, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[3.1.4, )" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
148
eng/Baseline.xml
148
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.3">
|
||||
<Baseline Version="3.1.4">
|
||||
<Package Id="AspNetCoreRuntime.3.0.x64" Version="3.0.3" />
|
||||
<Package Id="AspNetCoreRuntime.3.0.x86" Version="3.0.3" />
|
||||
<Package Id="dotnet-sql-cache" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.ApiAuthorization.IdentityServer" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.App.Runtime.win-x64" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.AzureAD.UI" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.AzureADB2C.UI" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Certificate" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Facebook" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Google" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Negotiate" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Twitter" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.WsFederation" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Authorization" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.AzureAppServices.HostingStartup" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.AzureAppServices.SiteExtension" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.AzureAppServicesIntegration" Version="3.1.3" />
|
||||
<Package Id="dotnet-sql-cache" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.ApiAuthorization.IdentityServer" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.App.Runtime.win-x64" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.AzureAD.UI" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.AzureADB2C.UI" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Certificate" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Facebook" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Google" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Negotiate" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Twitter" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.WsFederation" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Authorization" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.AzureAppServices.HostingStartup" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.AzureAppServices.SiteExtension" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.AzureAppServicesIntegration" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Blazor" Version="3.2.0-preview1.20073.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Blazor.Build" Version="3.2.0-preview1.20073.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Blazor.DevServer" Version="3.2.0-preview1.20073.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Blazor.HttpClient" Version="3.2.0-preview1.20073.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Blazor.Server" Version="3.2.0-preview1.20073.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Blazor.Templates" Version="3.2.0-preview1.20073.1" />
|
||||
<Package Id="Microsoft.AspNetCore.Components" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Components.Analyzers" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Components.Authorization" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Components.Forms" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Components.Web" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.ConcurrencyLimiter" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Connections.Abstractions" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Cryptography.Internal" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.Abstractions" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.AzureKeyVault" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.AzureStorage" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.EntityFrameworkCore" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.Extensions" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.HeaderPropagation" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Hosting.WindowsServices" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Http.Connections.Client" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Http.Connections.Common" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Http.Features" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Identity.Specification.Tests" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Identity.UI" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.JsonPatch" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Metadata" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.MiddlewareAnalysis" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Mvc.Testing" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.NodeServices" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Owin" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Client" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Client.Core" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Common" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Specification.Tests" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.SpaServices" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.SpaServices.Extensions" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.TestHost" Version="3.1.3" />
|
||||
<Package Id="Microsoft.dotnet-openapi" Version="3.1.3" />
|
||||
<Package Id="Microsoft.DotNet.Web.Client.ItemTemplates" Version="3.1.3" />
|
||||
<Package Id="Microsoft.DotNet.Web.ItemTemplates" Version="3.1.3" />
|
||||
<Package Id="Microsoft.DotNet.Web.ProjectTemplates.3.1" Version="3.1.3" />
|
||||
<Package Id="Microsoft.DotNet.Web.Spa.ProjectTemplates.3.1" Version="3.1.3" />
|
||||
<Package Id="Microsoft.Extensions.ApiDescription.Client" Version="3.1.3" />
|
||||
<Package Id="Microsoft.Extensions.ApiDescription.Server" Version="3.1.3" />
|
||||
<Package Id="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="3.1.3" />
|
||||
<Package Id="Microsoft.Extensions.Identity.Core" Version="3.1.3" />
|
||||
<Package Id="Microsoft.Extensions.Identity.Stores" Version="3.1.3" />
|
||||
<Package Id="Microsoft.AspNetCore.Components" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Components.Analyzers" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Components.Authorization" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Components.Forms" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Components.Web" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.ConcurrencyLimiter" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Connections.Abstractions" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Cryptography.Internal" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.Abstractions" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.AzureKeyVault" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.AzureStorage" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.EntityFrameworkCore" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.Extensions" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.HeaderPropagation" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Hosting.WindowsServices" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Http.Connections.Client" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Http.Connections.Common" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Http.Features" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Identity.Specification.Tests" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Identity.UI" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.JsonPatch" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Metadata" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.MiddlewareAnalysis" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Mvc.Testing" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.NodeServices" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Owin" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Client" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Client.Core" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Common" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.Specification.Tests" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.SpaServices" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.SpaServices.Extensions" Version="3.1.4" />
|
||||
<Package Id="Microsoft.AspNetCore.TestHost" Version="3.1.4" />
|
||||
<Package Id="Microsoft.dotnet-openapi" Version="3.1.4" />
|
||||
<Package Id="Microsoft.DotNet.Web.Client.ItemTemplates" Version="3.1.4" />
|
||||
<Package Id="Microsoft.DotNet.Web.ItemTemplates" Version="3.1.4" />
|
||||
<Package Id="Microsoft.DotNet.Web.ProjectTemplates.3.1" Version="3.1.4" />
|
||||
<Package Id="Microsoft.DotNet.Web.Spa.ProjectTemplates.3.1" Version="3.1.4" />
|
||||
<Package Id="Microsoft.Extensions.ApiDescription.Client" Version="3.1.4" />
|
||||
<Package Id="Microsoft.Extensions.ApiDescription.Server" Version="3.1.4" />
|
||||
<Package Id="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="3.1.4" />
|
||||
<Package Id="Microsoft.Extensions.Identity.Core" Version="3.1.4" />
|
||||
<Package Id="Microsoft.Extensions.Identity.Stores" Version="3.1.4" />
|
||||
</Baseline>
|
||||
|
|
|
|||
|
|
@ -13,292 +13,292 @@
|
|||
<Uri>https://github.com/dotnet/blazor</Uri>
|
||||
<Sha>dd7fb4d3931d556458f62642c2edfc59f6295bfb</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.AspNetCore.Razor.Language" Version="5.0.0-preview.5.20271.4">
|
||||
<Dependency Name="Microsoft.AspNetCore.Razor.Language" Version="5.0.0-preview.6.20271.3">
|
||||
<Uri>https://github.com/dotnet/aspnetcore-tooling</Uri>
|
||||
<Sha>56c409d3bff43702b87e6d7edfe61126db5ac50a</Sha>
|
||||
<Sha>beba53c682fa5b5193606647eb627c4c170464e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.AspNetCore.Mvc.Razor.Extensions" Version="5.0.0-preview.5.20271.4">
|
||||
<Dependency Name="Microsoft.AspNetCore.Mvc.Razor.Extensions" Version="5.0.0-preview.6.20271.3">
|
||||
<Uri>https://github.com/dotnet/aspnetcore-tooling</Uri>
|
||||
<Sha>56c409d3bff43702b87e6d7edfe61126db5ac50a</Sha>
|
||||
<Sha>beba53c682fa5b5193606647eb627c4c170464e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.CodeAnalysis.Razor" Version="5.0.0-preview.5.20271.4">
|
||||
<Dependency Name="Microsoft.CodeAnalysis.Razor" Version="5.0.0-preview.6.20271.3">
|
||||
<Uri>https://github.com/dotnet/aspnetcore-tooling</Uri>
|
||||
<Sha>56c409d3bff43702b87e6d7edfe61126db5ac50a</Sha>
|
||||
<Sha>beba53c682fa5b5193606647eb627c4c170464e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.NET.Sdk.Razor" Version="5.0.0-preview.5.20271.4">
|
||||
<Dependency Name="Microsoft.NET.Sdk.Razor" Version="5.0.0-preview.6.20271.3">
|
||||
<Uri>https://github.com/dotnet/aspnetcore-tooling</Uri>
|
||||
<Sha>56c409d3bff43702b87e6d7edfe61126db5ac50a</Sha>
|
||||
<Sha>beba53c682fa5b5193606647eb627c4c170464e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="dotnet-ef" Version="5.0.0-preview.5.20261.5">
|
||||
<Dependency Name="dotnet-ef" Version="5.0.0-preview.6.20271.1">
|
||||
<Uri>https://github.com/dotnet/efcore</Uri>
|
||||
<Sha>ad308e68c15941ac1e863854cc2b3b0d116beb81</Sha>
|
||||
<Sha>3f2fa3f0a9c6dfd949339f4aaccd558c4c36e182</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.InMemory" Version="5.0.0-preview.5.20261.5">
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.InMemory" Version="5.0.0-preview.6.20271.1">
|
||||
<Uri>https://github.com/dotnet/efcore</Uri>
|
||||
<Sha>ad308e68c15941ac1e863854cc2b3b0d116beb81</Sha>
|
||||
<Sha>3f2fa3f0a9c6dfd949339f4aaccd558c4c36e182</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.Relational" Version="5.0.0-preview.5.20261.5">
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.Relational" Version="5.0.0-preview.6.20271.1">
|
||||
<Uri>https://github.com/dotnet/efcore</Uri>
|
||||
<Sha>ad308e68c15941ac1e863854cc2b3b0d116beb81</Sha>
|
||||
<Sha>3f2fa3f0a9c6dfd949339f4aaccd558c4c36e182</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.0-preview.5.20261.5">
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.0-preview.6.20271.1">
|
||||
<Uri>https://github.com/dotnet/efcore</Uri>
|
||||
<Sha>ad308e68c15941ac1e863854cc2b3b0d116beb81</Sha>
|
||||
<Sha>3f2fa3f0a9c6dfd949339f4aaccd558c4c36e182</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.0-preview.5.20261.5">
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.0-preview.6.20271.1">
|
||||
<Uri>https://github.com/dotnet/efcore</Uri>
|
||||
<Sha>ad308e68c15941ac1e863854cc2b3b0d116beb81</Sha>
|
||||
<Sha>3f2fa3f0a9c6dfd949339f4aaccd558c4c36e182</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.Tools" Version="5.0.0-preview.5.20261.5">
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore.Tools" Version="5.0.0-preview.6.20271.1">
|
||||
<Uri>https://github.com/dotnet/efcore</Uri>
|
||||
<Sha>ad308e68c15941ac1e863854cc2b3b0d116beb81</Sha>
|
||||
<Sha>3f2fa3f0a9c6dfd949339f4aaccd558c4c36e182</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore" Version="5.0.0-preview.5.20261.5">
|
||||
<Dependency Name="Microsoft.EntityFrameworkCore" Version="5.0.0-preview.6.20271.1">
|
||||
<Uri>https://github.com/dotnet/efcore</Uri>
|
||||
<Sha>ad308e68c15941ac1e863854cc2b3b0d116beb81</Sha>
|
||||
<Sha>3f2fa3f0a9c6dfd949339f4aaccd558c4c36e182</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Caching.Abstractions" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Caching.Abstractions" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Caching.Memory" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Caching.Memory" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Abstractions" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Abstractions" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Binder" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Binder" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.CommandLine" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.CommandLine" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.FileExtensions" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.FileExtensions" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Ini" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Ini" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Json" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Json" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.UserSecrets" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.UserSecrets" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Xml" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Xml" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.DependencyInjection" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.DependencyInjection" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Abstractions" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Abstractions" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Composite" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Composite" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Physical" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Physical" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.FileSystemGlobbing" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.FileSystemGlobbing" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Hosting.Abstractions" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Hosting.Abstractions" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Hosting" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Hosting" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Http" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Http" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Configuration" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Configuration" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Console" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Console" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Debug" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Debug" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.EventSource" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Logging.EventSource" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.EventLog" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Logging.EventLog" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.TraceSource" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Logging.TraceSource" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Logging" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Options.ConfigurationExtensions" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Options.ConfigurationExtensions" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Options.DataAnnotations" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Options.DataAnnotations" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Options" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Options" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Primitives" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Primitives" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Internal.Transport" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.Internal.Transport" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Win32.Registry" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Win32.Registry" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Win32.SystemEvents" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Win32.SystemEvents" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.ComponentModel.Annotations" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.ComponentModel.Annotations" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Diagnostics.EventLog" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.Diagnostics.EventLog" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Drawing.Common" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.Drawing.Common" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.IO.Pipelines" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.IO.Pipelines" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Net.Http.WinHttpHandler" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.Net.Http.WinHttpHandler" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Net.WebSockets.WebSocketProtocol" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.Net.WebSockets.WebSocketProtocol" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Reflection.Metadata" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.Reflection.Metadata" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Runtime.CompilerServices.Unsafe" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.Runtime.CompilerServices.Unsafe" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Security.Cryptography.Cng" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.Security.Cryptography.Cng" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Security.Cryptography.Pkcs" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.Security.Cryptography.Pkcs" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Security.Cryptography.Xml" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.Security.Cryptography.Xml" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Security.Permissions" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.Security.Permissions" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Security.Principal.Windows" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.Security.Principal.Windows" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.ServiceProcess.ServiceController" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.ServiceProcess.ServiceController" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Text.Encodings.Web" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.Text.Encodings.Web" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Text.Json" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.Text.Json" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Threading.Channels" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.Threading.Channels" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Windows.Extensions" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="System.Windows.Extensions" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.DependencyModel" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Extensions.DependencyModel" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.NETCore.App.Ref" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.NETCore.App.Ref" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</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="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.NETCore.App.Runtime.win-x64" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.NETCore.App.Internal" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.NETCore.App.Internal" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
</ProductDependencies>
|
||||
<ToolsetDependencies>
|
||||
<!-- Listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 -->
|
||||
<Dependency Name="Microsoft.NETCore.Platforms" Version="5.0.0-preview.5.20268.11" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.NETCore.Platforms" Version="5.0.0-preview.6.20270.12" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||
<Sha>201841eea7a9a62374666edbf02e9421a0fd6675</Sha>
|
||||
<Sha>5b7d6319ec8ff44c7eda6f8358e29cfdd53d81b5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.DotNet.GenAPI" Version="5.0.0-beta.20261.9">
|
||||
<Uri>https://github.com/dotnet/arcade</Uri>
|
||||
|
|
@ -312,9 +312,9 @@
|
|||
<Uri>https://github.com/dotnet/arcade</Uri>
|
||||
<Sha>898e51ed5fdcc4871087ac5754ca9056e58e575d</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="3.7.0-2.20259.1" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="3.7.0-2.20267.1" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||
<Uri>https://github.com/dotnet/roslyn</Uri>
|
||||
<Sha>d0ef8687ce735c8aa32035396f521705a8ff7392</Sha>
|
||||
<Sha>3126e7a9753bf09a99e4c4f152b8dfef76862dc5</Sha>
|
||||
</Dependency>
|
||||
</ToolsetDependencies>
|
||||
</Dependencies>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
<AspNetCoreMajorVersion>5</AspNetCoreMajorVersion>
|
||||
<AspNetCoreMinorVersion>0</AspNetCoreMinorVersion>
|
||||
<AspNetCorePatchVersion>0</AspNetCorePatchVersion>
|
||||
<PreReleaseVersionIteration>5</PreReleaseVersionIteration>
|
||||
<PreReleaseVersionIteration>6</PreReleaseVersionIteration>
|
||||
<!--
|
||||
When StabilizePackageVersion is set to 'true', this branch will produce stable outputs for 'Shipping' packages
|
||||
-->
|
||||
|
|
@ -64,83 +64,83 @@
|
|||
<!-- Packages from dotnet/arcade -->
|
||||
<MicrosoftDotNetGenAPIPackageVersion>5.0.0-beta.20261.9</MicrosoftDotNetGenAPIPackageVersion>
|
||||
<!-- Packages from dotnet/roslyn -->
|
||||
<MicrosoftNetCompilersToolsetPackageVersion>3.7.0-2.20259.1</MicrosoftNetCompilersToolsetPackageVersion>
|
||||
<MicrosoftNetCompilersToolsetPackageVersion>3.7.0-2.20267.1</MicrosoftNetCompilersToolsetPackageVersion>
|
||||
<!-- Packages from dotnet/runtime -->
|
||||
<MicrosoftExtensionsDependencyModelPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsDependencyModelPackageVersion>
|
||||
<MicrosoftNETCoreAppInternalPackageVersion>5.0.0-preview.5.20268.11</MicrosoftNETCoreAppInternalPackageVersion>
|
||||
<MicrosoftNETCoreAppRefPackageVersion>5.0.0-preview.5.20268.11</MicrosoftNETCoreAppRefPackageVersion>
|
||||
<MicrosoftNETCoreAppRuntimewinx64PackageVersion>5.0.0-preview.5.20268.11</MicrosoftNETCoreAppRuntimewinx64PackageVersion>
|
||||
<MicrosoftWin32RegistryPackageVersion>5.0.0-preview.5.20268.11</MicrosoftWin32RegistryPackageVersion>
|
||||
<MicrosoftWin32SystemEventsPackageVersion>5.0.0-preview.5.20268.11</MicrosoftWin32SystemEventsPackageVersion>
|
||||
<MicrosoftExtensionsCachingAbstractionsPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsCachingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsCachingMemoryPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsCachingMemoryPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationAbstractionsPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsConfigurationAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationBinderPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsConfigurationBinderPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
|
||||
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationIniPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsConfigurationIniPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationJsonPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsConfigurationJsonPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsConfigurationPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationUserSecretsPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationXmlPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsConfigurationXmlPackageVersion>
|
||||
<MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsDependencyInjectionPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsDependencyInjectionPackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersCompositePackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsFileProvidersCompositePackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersPhysicalPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsFileProvidersPhysicalPackageVersion>
|
||||
<MicrosoftExtensionsFileSystemGlobbingPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsFileSystemGlobbingPackageVersion>
|
||||
<MicrosoftExtensionsHostingAbstractionsPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsHostingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsHostingPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsHostingPackageVersion>
|
||||
<MicrosoftExtensionsHttpPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsHttpPackageVersion>
|
||||
<MicrosoftExtensionsLoggingAbstractionsPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsLoggingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConfigurationPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsLoggingConfigurationPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConsolePackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsLoggingConsolePackageVersion>
|
||||
<MicrosoftExtensionsLoggingDebugPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsLoggingDebugPackageVersion>
|
||||
<MicrosoftExtensionsLoggingEventSourcePackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsLoggingEventSourcePackageVersion>
|
||||
<MicrosoftExtensionsLoggingEventLogPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsLoggingEventLogPackageVersion>
|
||||
<MicrosoftExtensionsLoggingPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsLoggingPackageVersion>
|
||||
<MicrosoftExtensionsLoggingTraceSourcePackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsLoggingTraceSourcePackageVersion>
|
||||
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
|
||||
<MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>
|
||||
<MicrosoftExtensionsOptionsPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsOptionsPackageVersion>
|
||||
<MicrosoftExtensionsPrimitivesPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsPrimitivesPackageVersion>
|
||||
<MicrosoftExtensionsInternalTransportPackageVersion>5.0.0-preview.5.20268.11</MicrosoftExtensionsInternalTransportPackageVersion>
|
||||
<SystemComponentModelAnnotationsPackageVersion>5.0.0-preview.5.20268.11</SystemComponentModelAnnotationsPackageVersion>
|
||||
<SystemDiagnosticsEventLogPackageVersion>5.0.0-preview.5.20268.11</SystemDiagnosticsEventLogPackageVersion>
|
||||
<SystemDrawingCommonPackageVersion>5.0.0-preview.5.20268.11</SystemDrawingCommonPackageVersion>
|
||||
<SystemIOPipelinesPackageVersion>5.0.0-preview.5.20268.11</SystemIOPipelinesPackageVersion>
|
||||
<SystemNetHttpWinHttpHandlerPackageVersion>5.0.0-preview.5.20268.11</SystemNetHttpWinHttpHandlerPackageVersion>
|
||||
<SystemNetWebSocketsWebSocketProtocolPackageVersion>5.0.0-preview.5.20268.11</SystemNetWebSocketsWebSocketProtocolPackageVersion>
|
||||
<SystemReflectionMetadataPackageVersion>5.0.0-preview.5.20268.11</SystemReflectionMetadataPackageVersion>
|
||||
<SystemRuntimeCompilerServicesUnsafePackageVersion>5.0.0-preview.5.20268.11</SystemRuntimeCompilerServicesUnsafePackageVersion>
|
||||
<SystemSecurityCryptographyCngPackageVersion>5.0.0-preview.5.20268.11</SystemSecurityCryptographyCngPackageVersion>
|
||||
<SystemSecurityCryptographyPkcsPackageVersion>5.0.0-preview.5.20268.11</SystemSecurityCryptographyPkcsPackageVersion>
|
||||
<SystemSecurityCryptographyXmlPackageVersion>5.0.0-preview.5.20268.11</SystemSecurityCryptographyXmlPackageVersion>
|
||||
<SystemSecurityPermissionsPackageVersion>5.0.0-preview.5.20268.11</SystemSecurityPermissionsPackageVersion>
|
||||
<SystemSecurityPrincipalWindowsPackageVersion>5.0.0-preview.5.20268.11</SystemSecurityPrincipalWindowsPackageVersion>
|
||||
<SystemServiceProcessServiceControllerPackageVersion>5.0.0-preview.5.20268.11</SystemServiceProcessServiceControllerPackageVersion>
|
||||
<SystemTextEncodingsWebPackageVersion>5.0.0-preview.5.20268.11</SystemTextEncodingsWebPackageVersion>
|
||||
<SystemTextJsonPackageVersion>5.0.0-preview.5.20268.11</SystemTextJsonPackageVersion>
|
||||
<SystemThreadingChannelsPackageVersion>5.0.0-preview.5.20268.11</SystemThreadingChannelsPackageVersion>
|
||||
<SystemWindowsExtensionsPackageVersion>5.0.0-preview.5.20268.11</SystemWindowsExtensionsPackageVersion>
|
||||
<MicrosoftExtensionsDependencyModelPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsDependencyModelPackageVersion>
|
||||
<MicrosoftNETCoreAppInternalPackageVersion>5.0.0-preview.6.20270.12</MicrosoftNETCoreAppInternalPackageVersion>
|
||||
<MicrosoftNETCoreAppRefPackageVersion>5.0.0-preview.6.20270.12</MicrosoftNETCoreAppRefPackageVersion>
|
||||
<MicrosoftNETCoreAppRuntimewinx64PackageVersion>5.0.0-preview.6.20270.12</MicrosoftNETCoreAppRuntimewinx64PackageVersion>
|
||||
<MicrosoftWin32RegistryPackageVersion>5.0.0-preview.6.20270.12</MicrosoftWin32RegistryPackageVersion>
|
||||
<MicrosoftWin32SystemEventsPackageVersion>5.0.0-preview.6.20270.12</MicrosoftWin32SystemEventsPackageVersion>
|
||||
<MicrosoftExtensionsCachingAbstractionsPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsCachingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsCachingMemoryPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsCachingMemoryPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationAbstractionsPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsConfigurationAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationBinderPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsConfigurationBinderPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
|
||||
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationIniPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsConfigurationIniPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationJsonPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsConfigurationJsonPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsConfigurationPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationUserSecretsPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationXmlPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsConfigurationXmlPackageVersion>
|
||||
<MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsDependencyInjectionPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsDependencyInjectionPackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersCompositePackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsFileProvidersCompositePackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersPhysicalPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsFileProvidersPhysicalPackageVersion>
|
||||
<MicrosoftExtensionsFileSystemGlobbingPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsFileSystemGlobbingPackageVersion>
|
||||
<MicrosoftExtensionsHostingAbstractionsPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsHostingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsHostingPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsHostingPackageVersion>
|
||||
<MicrosoftExtensionsHttpPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsHttpPackageVersion>
|
||||
<MicrosoftExtensionsLoggingAbstractionsPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsLoggingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConfigurationPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsLoggingConfigurationPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConsolePackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsLoggingConsolePackageVersion>
|
||||
<MicrosoftExtensionsLoggingDebugPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsLoggingDebugPackageVersion>
|
||||
<MicrosoftExtensionsLoggingEventSourcePackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsLoggingEventSourcePackageVersion>
|
||||
<MicrosoftExtensionsLoggingEventLogPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsLoggingEventLogPackageVersion>
|
||||
<MicrosoftExtensionsLoggingPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsLoggingPackageVersion>
|
||||
<MicrosoftExtensionsLoggingTraceSourcePackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsLoggingTraceSourcePackageVersion>
|
||||
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
|
||||
<MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>
|
||||
<MicrosoftExtensionsOptionsPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsOptionsPackageVersion>
|
||||
<MicrosoftExtensionsPrimitivesPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsPrimitivesPackageVersion>
|
||||
<MicrosoftExtensionsInternalTransportPackageVersion>5.0.0-preview.6.20270.12</MicrosoftExtensionsInternalTransportPackageVersion>
|
||||
<SystemComponentModelAnnotationsPackageVersion>5.0.0-preview.6.20270.12</SystemComponentModelAnnotationsPackageVersion>
|
||||
<SystemDiagnosticsEventLogPackageVersion>5.0.0-preview.6.20270.12</SystemDiagnosticsEventLogPackageVersion>
|
||||
<SystemDrawingCommonPackageVersion>5.0.0-preview.6.20270.12</SystemDrawingCommonPackageVersion>
|
||||
<SystemIOPipelinesPackageVersion>5.0.0-preview.6.20270.12</SystemIOPipelinesPackageVersion>
|
||||
<SystemNetHttpWinHttpHandlerPackageVersion>5.0.0-preview.6.20270.12</SystemNetHttpWinHttpHandlerPackageVersion>
|
||||
<SystemNetWebSocketsWebSocketProtocolPackageVersion>5.0.0-preview.6.20270.12</SystemNetWebSocketsWebSocketProtocolPackageVersion>
|
||||
<SystemReflectionMetadataPackageVersion>5.0.0-preview.6.20270.12</SystemReflectionMetadataPackageVersion>
|
||||
<SystemRuntimeCompilerServicesUnsafePackageVersion>5.0.0-preview.6.20270.12</SystemRuntimeCompilerServicesUnsafePackageVersion>
|
||||
<SystemSecurityCryptographyCngPackageVersion>5.0.0-preview.6.20270.12</SystemSecurityCryptographyCngPackageVersion>
|
||||
<SystemSecurityCryptographyPkcsPackageVersion>5.0.0-preview.6.20270.12</SystemSecurityCryptographyPkcsPackageVersion>
|
||||
<SystemSecurityCryptographyXmlPackageVersion>5.0.0-preview.6.20270.12</SystemSecurityCryptographyXmlPackageVersion>
|
||||
<SystemSecurityPermissionsPackageVersion>5.0.0-preview.6.20270.12</SystemSecurityPermissionsPackageVersion>
|
||||
<SystemSecurityPrincipalWindowsPackageVersion>5.0.0-preview.6.20270.12</SystemSecurityPrincipalWindowsPackageVersion>
|
||||
<SystemServiceProcessServiceControllerPackageVersion>5.0.0-preview.6.20270.12</SystemServiceProcessServiceControllerPackageVersion>
|
||||
<SystemTextEncodingsWebPackageVersion>5.0.0-preview.6.20270.12</SystemTextEncodingsWebPackageVersion>
|
||||
<SystemTextJsonPackageVersion>5.0.0-preview.6.20270.12</SystemTextJsonPackageVersion>
|
||||
<SystemThreadingChannelsPackageVersion>5.0.0-preview.6.20270.12</SystemThreadingChannelsPackageVersion>
|
||||
<SystemWindowsExtensionsPackageVersion>5.0.0-preview.6.20270.12</SystemWindowsExtensionsPackageVersion>
|
||||
<!-- Only listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 -->
|
||||
<MicrosoftNETCorePlatformsPackageVersion>5.0.0-preview.5.20268.11</MicrosoftNETCorePlatformsPackageVersion>
|
||||
<MicrosoftNETCorePlatformsPackageVersion>5.0.0-preview.6.20270.12</MicrosoftNETCorePlatformsPackageVersion>
|
||||
<!-- Packages from dotnet/blazor -->
|
||||
<MicrosoftAspNetCoreBlazorMonoPackageVersion>3.2.0-preview1.20067.1</MicrosoftAspNetCoreBlazorMonoPackageVersion>
|
||||
<!-- Packages from dotnet/efcore -->
|
||||
<dotnetefPackageVersion>5.0.0-preview.5.20261.5</dotnetefPackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreInMemoryPackageVersion>5.0.0-preview.5.20261.5</MicrosoftEntityFrameworkCoreInMemoryPackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreRelationalPackageVersion>5.0.0-preview.5.20261.5</MicrosoftEntityFrameworkCoreRelationalPackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreSqlitePackageVersion>5.0.0-preview.5.20261.5</MicrosoftEntityFrameworkCoreSqlitePackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreSqlServerPackageVersion>5.0.0-preview.5.20261.5</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreToolsPackageVersion>5.0.0-preview.5.20261.5</MicrosoftEntityFrameworkCoreToolsPackageVersion>
|
||||
<MicrosoftEntityFrameworkCorePackageVersion>5.0.0-preview.5.20261.5</MicrosoftEntityFrameworkCorePackageVersion>
|
||||
<dotnetefPackageVersion>5.0.0-preview.6.20271.1</dotnetefPackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreInMemoryPackageVersion>5.0.0-preview.6.20271.1</MicrosoftEntityFrameworkCoreInMemoryPackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreRelationalPackageVersion>5.0.0-preview.6.20271.1</MicrosoftEntityFrameworkCoreRelationalPackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreSqlitePackageVersion>5.0.0-preview.6.20271.1</MicrosoftEntityFrameworkCoreSqlitePackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreSqlServerPackageVersion>5.0.0-preview.6.20271.1</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreToolsPackageVersion>5.0.0-preview.6.20271.1</MicrosoftEntityFrameworkCoreToolsPackageVersion>
|
||||
<MicrosoftEntityFrameworkCorePackageVersion>5.0.0-preview.6.20271.1</MicrosoftEntityFrameworkCorePackageVersion>
|
||||
<!-- Packages from dotnet/aspnetcore-tooling -->
|
||||
<MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>5.0.0-preview.5.20271.4</MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>
|
||||
<MicrosoftAspNetCoreRazorLanguagePackageVersion>5.0.0-preview.5.20271.4</MicrosoftAspNetCoreRazorLanguagePackageVersion>
|
||||
<MicrosoftCodeAnalysisRazorPackageVersion>5.0.0-preview.5.20271.4</MicrosoftCodeAnalysisRazorPackageVersion>
|
||||
<MicrosoftNETSdkRazorPackageVersion>5.0.0-preview.5.20271.4</MicrosoftNETSdkRazorPackageVersion>
|
||||
<MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>5.0.0-preview.6.20271.3</MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>
|
||||
<MicrosoftAspNetCoreRazorLanguagePackageVersion>5.0.0-preview.6.20271.3</MicrosoftAspNetCoreRazorLanguagePackageVersion>
|
||||
<MicrosoftCodeAnalysisRazorPackageVersion>5.0.0-preview.6.20271.3</MicrosoftCodeAnalysisRazorPackageVersion>
|
||||
<MicrosoftNETSdkRazorPackageVersion>5.0.0-preview.6.20271.3</MicrosoftNETSdkRazorPackageVersion>
|
||||
</PropertyGroup>
|
||||
<!--
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
|
|
@ -19,10 +20,53 @@ namespace RunTests
|
|||
[DllImport("libc", SetLastError = true, EntryPoint = "kill")]
|
||||
private static extern int sys_kill(int pid, int sig);
|
||||
|
||||
public static Task CaptureDumpAsync()
|
||||
{
|
||||
var dumpDirectoryPath = Environment.GetEnvironmentVariable("HELIX_DUMP_FOLDER");
|
||||
|
||||
if (dumpDirectoryPath == null)
|
||||
{
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
var process = Process.GetCurrentProcess();
|
||||
var dumpFilePath = Path.Combine(dumpDirectoryPath, $"{process.ProcessName}-{process.Id}.dmp");
|
||||
|
||||
return CaptureDumpAsync(process.Id, dumpFilePath);
|
||||
}
|
||||
|
||||
public static Task CaptureDumpAsync(int pid)
|
||||
{
|
||||
var dumpDirectoryPath = Environment.GetEnvironmentVariable("HELIX_DUMP_FOLDER");
|
||||
|
||||
if (dumpDirectoryPath == null)
|
||||
{
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
var process = Process.GetProcessById(pid);
|
||||
var dumpFilePath = Path.Combine(dumpDirectoryPath, $"{process.ProcessName}.{process.Id}.dmp");
|
||||
|
||||
return CaptureDumpAsync(process.Id, dumpFilePath);
|
||||
}
|
||||
|
||||
public static Task CaptureDumpAsync(int pid, string dumpFilePath)
|
||||
{
|
||||
// Skip this on OSX, we know it's unsupported right now
|
||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
|
||||
{
|
||||
// Can we capture stacks or do a gcdump instead?
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
return RunAsync($"{Environment.GetEnvironmentVariable("HELIX_WORKITEM_ROOT")}/dotnet-dump", $"collect -p {pid} -o \"{dumpFilePath}\"");
|
||||
}
|
||||
|
||||
public static async Task<ProcessResult> RunAsync(
|
||||
string filename,
|
||||
string arguments,
|
||||
string? workingDirectory = null,
|
||||
string dumpDirectoryPath = null,
|
||||
bool throwOnError = true,
|
||||
IDictionary<string, string?>? environmentVariables = null,
|
||||
Action<string>? outputDataReceived = null,
|
||||
|
|
@ -51,6 +95,14 @@ namespace RunTests
|
|||
process.StartInfo.WorkingDirectory = workingDirectory;
|
||||
}
|
||||
|
||||
dumpDirectoryPath ??= Environment.GetEnvironmentVariable("HELIX_DUMP_FOLDER");
|
||||
|
||||
if (dumpDirectoryPath != null)
|
||||
{
|
||||
process.StartInfo.EnvironmentVariables["COMPlus_DbgEnableMiniDump"] = "1";
|
||||
process.StartInfo.EnvironmentVariables["COMPlus_DbgMiniDumpName"] = Path.Combine(dumpDirectoryPath, $"{Path.GetFileName(filename)}.%d.dmp");
|
||||
}
|
||||
|
||||
if (environmentVariables != null)
|
||||
{
|
||||
foreach (var kvp in environmentVariables)
|
||||
|
|
@ -112,13 +164,20 @@ namespace RunTests
|
|||
process.BeginOutputReadLine();
|
||||
process.BeginErrorReadLine();
|
||||
|
||||
var cancelledTcs = new TaskCompletionSource<object?>();
|
||||
await using var _ = cancellationToken.Register(() => cancelledTcs.TrySetResult(null));
|
||||
var canceledTcs = new TaskCompletionSource<object?>();
|
||||
await using var _ = cancellationToken.Register(() => canceledTcs.TrySetResult(null));
|
||||
|
||||
var result = await Task.WhenAny(processLifetimeTask.Task, cancelledTcs.Task);
|
||||
var result = await Task.WhenAny(processLifetimeTask.Task, canceledTcs.Task);
|
||||
|
||||
if (result == cancelledTcs.Task)
|
||||
if (result == canceledTcs.Task)
|
||||
{
|
||||
if (dumpDirectoryPath != null)
|
||||
{
|
||||
var dumpFilePath = Path.Combine(dumpDirectoryPath, $"{Path.GetFileName(filename)}.{process.Id}.dmp");
|
||||
// Capture a process dump if the dumpDirectory is set
|
||||
await CaptureDumpAsync(process.Id, dumpFilePath);
|
||||
}
|
||||
|
||||
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||
{
|
||||
sys_kill(process.Id, sig: 2); // SIGINT
|
||||
|
|
@ -143,16 +202,5 @@ namespace RunTests
|
|||
|
||||
return await processLifetimeTask.Task;
|
||||
}
|
||||
|
||||
public static void KillProcess(int pid)
|
||||
{
|
||||
try
|
||||
{
|
||||
using var process = Process.GetProcessById(pid);
|
||||
process?.Kill();
|
||||
}
|
||||
catch (ArgumentException) { }
|
||||
catch (InvalidOperationException) { }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,10 +2,6 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.CommandLine;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace RunTests
|
||||
|
|
@ -14,12 +10,16 @@ namespace RunTests
|
|||
{
|
||||
static async Task Main(string[] args)
|
||||
{
|
||||
try
|
||||
try
|
||||
{
|
||||
var runner = new TestRunner(RunTestsOptions.Parse(args));
|
||||
|
||||
var keepGoing = runner.SetupEnvironment();
|
||||
if (keepGoing)
|
||||
{
|
||||
keepGoing = await runner.InstallDotnetDump();
|
||||
}
|
||||
if (keepGoing)
|
||||
{
|
||||
keepGoing = await runner.InstallAspNetAppIfNeededAsync();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,16 +50,21 @@ namespace RunTests
|
|||
aliases: new string[] { "--ef" },
|
||||
description: "The version of the EF tool to use")
|
||||
{ Argument = new Argument<string>(), Required = true },
|
||||
|
||||
|
||||
new Option(
|
||||
aliases: new string[] { "--aspnetruntime" },
|
||||
description: "The path to the aspnet runtime nupkg to install")
|
||||
{ Argument = new Argument<string>(), Required = true },
|
||||
|
||||
|
||||
new Option(
|
||||
aliases: new string[] { "--aspnetref" },
|
||||
description: "The path to the aspnet ref nupkg to install")
|
||||
{ Argument = new Argument<string>(), Required = true },
|
||||
|
||||
new Option(
|
||||
aliases: new string[] { "--helixTimeout" },
|
||||
description: "The timeout duration of the Helix job")
|
||||
{ Argument = new Argument<string>(), Required = true },
|
||||
};
|
||||
|
||||
var parseResult = command.Parse(args);
|
||||
|
|
@ -73,6 +78,7 @@ namespace RunTests
|
|||
options.EfVersion = parseResult.ValueForOption<string>("--ef");
|
||||
options.AspNetRuntime = parseResult.ValueForOption<string>("--aspnetruntime");
|
||||
options.AspNetRef = parseResult.ValueForOption<string>("--aspnetref");
|
||||
options.Timeout = TimeSpan.Parse(parseResult.ValueForOption<string>("--helixTimeout"));
|
||||
options.HELIX_WORKITEM_ROOT = Environment.GetEnvironmentVariable("HELIX_WORKITEM_ROOT");
|
||||
options.Path = Environment.GetEnvironmentVariable("PATH");
|
||||
options.DotnetRoot = Environment.GetEnvironmentVariable("DOTNET_ROOT");
|
||||
|
|
@ -91,5 +97,6 @@ namespace RunTests
|
|||
public string HELIX_WORKITEM_ROOT { get; set;}
|
||||
public string DotnetRoot { get; set; }
|
||||
public string Path { get; set; }
|
||||
public TimeSpan Timeout { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@
|
|||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.CommandLine;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace RunTests
|
||||
|
|
@ -24,7 +24,7 @@ namespace RunTests
|
|||
|
||||
public bool SetupEnvironment()
|
||||
{
|
||||
try
|
||||
try
|
||||
{
|
||||
// Rename default.NuGet.config to NuGet.config if there is not a custom one from the project
|
||||
// We use a local NuGet.config file to avoid polluting global machine state and avoid relying on global machine state
|
||||
|
|
@ -32,7 +32,7 @@ namespace RunTests
|
|||
{
|
||||
File.Copy("default.NuGet.config", "NuGet.config");
|
||||
}
|
||||
|
||||
|
||||
EnvironmentVariables.Add("PATH", Options.Path);
|
||||
EnvironmentVariables.Add("DOTNET_ROOT", Options.DotnetRoot);
|
||||
EnvironmentVariables.Add("helix", Options.HelixQueue);
|
||||
|
|
@ -68,7 +68,7 @@ namespace RunTests
|
|||
|
||||
public void DisplayContents(string path = "./")
|
||||
{
|
||||
try
|
||||
try
|
||||
{
|
||||
Console.WriteLine();
|
||||
Console.WriteLine($"Displaying directory contents for {path}:");
|
||||
|
|
@ -88,9 +88,9 @@ namespace RunTests
|
|||
}
|
||||
}
|
||||
|
||||
public async Task<bool> InstallAspNetAppIfNeededAsync()
|
||||
public async Task<bool> InstallAspNetAppIfNeededAsync()
|
||||
{
|
||||
try
|
||||
try
|
||||
{
|
||||
if (File.Exists(Options.AspNetRuntime))
|
||||
{
|
||||
|
|
@ -113,7 +113,7 @@ namespace RunTests
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DisplayContents(appRuntimePath);
|
||||
|
||||
Console.WriteLine($"Adding current directory to nuget sources: {Options.HELIX_WORKITEM_ROOT}");
|
||||
|
|
@ -122,33 +122,41 @@ namespace RunTests
|
|||
$"nuget add source {Options.HELIX_WORKITEM_ROOT} --configfile NuGet.config",
|
||||
environmentVariables: EnvironmentVariables,
|
||||
outputDataReceived: Console.WriteLine,
|
||||
errorDataReceived: Console.Error.WriteLine);
|
||||
errorDataReceived: Console.Error.WriteLine,
|
||||
throwOnError: false,
|
||||
cancellationToken: new CancellationTokenSource(TimeSpan.FromMinutes(2)).Token);
|
||||
|
||||
await ProcessUtil.RunAsync($"{Options.DotnetRoot}/dotnet",
|
||||
"nuget add source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json --configfile NuGet.config",
|
||||
environmentVariables: EnvironmentVariables,
|
||||
outputDataReceived: Console.WriteLine,
|
||||
errorDataReceived: Console.Error.WriteLine);
|
||||
errorDataReceived: Console.Error.WriteLine,
|
||||
throwOnError: false,
|
||||
cancellationToken: new CancellationTokenSource(TimeSpan.FromMinutes(2)).Token);
|
||||
|
||||
// Write nuget sources to console, useful for debugging purposes
|
||||
await ProcessUtil.RunAsync($"{Options.DotnetRoot}/dotnet",
|
||||
"nuget list source",
|
||||
environmentVariables: EnvironmentVariables,
|
||||
outputDataReceived: Console.WriteLine,
|
||||
errorDataReceived: Console.Error.WriteLine);
|
||||
errorDataReceived: Console.Error.WriteLine,
|
||||
throwOnError: false,
|
||||
cancellationToken: new CancellationTokenSource(TimeSpan.FromMinutes(2)).Token);
|
||||
|
||||
await ProcessUtil.RunAsync($"{Options.DotnetRoot}/dotnet",
|
||||
$"tool install dotnet-ef --version {Options.EfVersion} --tool-path {Options.HELIX_WORKITEM_ROOT}",
|
||||
environmentVariables: EnvironmentVariables,
|
||||
outputDataReceived: Console.WriteLine,
|
||||
errorDataReceived: Console.Error.WriteLine);
|
||||
errorDataReceived: Console.Error.WriteLine,
|
||||
throwOnError: false,
|
||||
cancellationToken: new CancellationTokenSource(TimeSpan.FromMinutes(2)).Token);
|
||||
|
||||
// ';' is the path separator on Windows, and ':' on Unix
|
||||
Options.Path += RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ";" : ":";
|
||||
Options.Path += $"{Environment.GetEnvironmentVariable("DOTNET_CLI_HOME")}/.dotnet/tools";
|
||||
EnvironmentVariables["PATH"] = Options.Path;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"No AspNetRuntime found: {Options.AspNetRuntime}, skipping...");
|
||||
}
|
||||
|
|
@ -161,19 +169,19 @@ namespace RunTests
|
|||
}
|
||||
}
|
||||
|
||||
public bool InstallAspNetRefIfNeeded()
|
||||
public bool InstallAspNetRefIfNeeded()
|
||||
{
|
||||
try
|
||||
try
|
||||
{
|
||||
if (File.Exists(Options.AspNetRef))
|
||||
{
|
||||
var refPath = $"Microsoft.AspNetCore.App.Ref";
|
||||
Console.WriteLine($"Found AspNetRef: {Options.AspNetRef}, extracting to {refPath}");
|
||||
ZipFile.ExtractToDirectory(Options.AspNetRef, "Microsoft.AspNetCore.App.Ref");
|
||||
|
||||
|
||||
DisplayContents(refPath);
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"No AspNetRef found: {Options.AspNetRef}, skipping...");
|
||||
}
|
||||
|
|
@ -185,7 +193,28 @@ namespace RunTests
|
|||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public async Task<bool> InstallDotnetDump()
|
||||
{
|
||||
try
|
||||
{
|
||||
await ProcessUtil.RunAsync($"{Options.DotnetRoot}/dotnet",
|
||||
$"tool install dotnet-dump --tool-path {Options.HELIX_WORKITEM_ROOT} " +
|
||||
"--version 5.0.0-* --add-source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json",
|
||||
environmentVariables: EnvironmentVariables,
|
||||
outputDataReceived: Console.WriteLine,
|
||||
errorDataReceived: Console.Error.WriteLine,
|
||||
throwOnError: false);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine($"Exception in InstallDotnetDump: {e}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> CheckTestDiscoveryAsync()
|
||||
{
|
||||
try
|
||||
|
|
@ -193,7 +222,8 @@ namespace RunTests
|
|||
// Run test discovery so we know if there are tests to run
|
||||
var discoveryResult = await ProcessUtil.RunAsync($"{Options.DotnetRoot}/dotnet",
|
||||
$"vstest {Options.Target} -lt",
|
||||
environmentVariables: EnvironmentVariables);
|
||||
environmentVariables: EnvironmentVariables,
|
||||
cancellationToken: new CancellationTokenSource(TimeSpan.FromMinutes(2)).Token);
|
||||
|
||||
if (discoveryResult.StandardOutput.Contains("Exception thrown"))
|
||||
{
|
||||
|
|
@ -213,8 +243,10 @@ namespace RunTests
|
|||
public async Task<int> RunTestsAsync()
|
||||
{
|
||||
var exitCode = 0;
|
||||
try
|
||||
try
|
||||
{
|
||||
// Timeout test run 5 minutes before the Helix job would timeout
|
||||
var cts = new CancellationTokenSource(Options.Timeout.Subtract(TimeSpan.FromMinutes(5)));
|
||||
var commonTestArgs = $"vstest {Options.Target} --logger:xunit --logger:\"console;verbosity=normal\" --blame";
|
||||
if (Options.Quarantined)
|
||||
{
|
||||
|
|
@ -226,7 +258,8 @@ namespace RunTests
|
|||
environmentVariables: EnvironmentVariables,
|
||||
outputDataReceived: Console.WriteLine,
|
||||
errorDataReceived: Console.Error.WriteLine,
|
||||
throwOnError: false);
|
||||
throwOnError: false,
|
||||
cancellationToken: cts.Token);
|
||||
|
||||
if (result.ExitCode != 0)
|
||||
{
|
||||
|
|
@ -243,7 +276,8 @@ namespace RunTests
|
|||
environmentVariables: EnvironmentVariables,
|
||||
outputDataReceived: Console.WriteLine,
|
||||
errorDataReceived: Console.Error.WriteLine,
|
||||
throwOnError: false);
|
||||
throwOnError: false,
|
||||
cancellationToken: cts.Token);
|
||||
|
||||
if (result.ExitCode != 0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -3,9 +3,18 @@ REM Need delayed expansion !PATH! so parens in the path don't mess up the parens
|
|||
setlocal enabledelayedexpansion
|
||||
|
||||
REM Use '$' as a variable name prefix to avoid MSBuild variable collisions with these variables
|
||||
set $target=%1
|
||||
set $sdkVersion=%2
|
||||
set $runtimeVersion=%3
|
||||
set $queue=%4
|
||||
set $arch=%5
|
||||
set $quarantined=%6
|
||||
set $ef=%7
|
||||
set $aspnetruntime=%8
|
||||
set $aspnetref=%9
|
||||
REM Batch only supports up to 9 arguments using the %# syntax, need to shift to get more
|
||||
shift
|
||||
set $helixTimeout=%9
|
||||
|
||||
set DOTNET_HOME=%HELIX_CORRELATION_PAYLOAD%\sdk
|
||||
set DOTNET_ROOT=%DOTNET_HOME%\%$arch%
|
||||
|
|
@ -23,10 +32,11 @@ powershell.exe -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePo
|
|||
set exit_code=0
|
||||
echo "Restore: dotnet restore RunTests\RunTests.csproj --source https://api.nuget.org/v3/index.json --ignore-failed-sources..."
|
||||
dotnet restore RunTests\RunTests.csproj --source https://api.nuget.org/v3/index.json --ignore-failed-sources
|
||||
echo "Running tests: dotnet run --project RunTests\RunTests.csproj -- --target %1 --sdk %2 --runtime %3 --queue %4 --arch %5 --quarantined %6 --ef %7 --aspnetruntime %8 --aspnetref %9..."
|
||||
dotnet run --project RunTests\RunTests.csproj -- --target %1 --sdk %2 --runtime %3 --queue %4 --arch %5 --quarantined %6 --ef %7 --aspnetruntime %8 --aspnetref %9
|
||||
if errorlevel 1 (
|
||||
set exit_code=1
|
||||
|
||||
echo "Running tests: dotnet run --project RunTests\RunTests.csproj -- --target %$target% --sdk %$sdkVersion% --runtime %$runtimeVersion% --queue %$queue% --arch %$arch% --quarantined %$quarantined% --ef %$ef% --aspnetruntime %$aspnetruntime% --aspnetref %$aspnetref% --helixTimeout %$helixTimeout%..."
|
||||
dotnet run --project RunTests\RunTests.csproj -- --target %$target% --sdk %$sdkVersion% --runtime %$runtimeVersion% --queue %$queue% --arch %$arch% --quarantined %$quarantined% --ef %$ef% --aspnetruntime %$aspnetruntime% --aspnetref %$aspnetref% --helixTimeout %$helixTimeout%
|
||||
if errorlevel neq 0 (
|
||||
set exit_code=%errorlevel%
|
||||
)
|
||||
echo "Finished running tests: exit_code=%exit_code%"
|
||||
exit /b %exit_code%
|
||||
|
|
|
|||
|
|
@ -88,8 +88,8 @@ sync
|
|||
exit_code=0
|
||||
echo "Restore: $DOTNET_ROOT/dotnet restore RunTests/RunTests.csproj --source https://api.nuget.org/v3/index.json --ignore-failed-sources..."
|
||||
$DOTNET_ROOT/dotnet restore RunTests/RunTests.csproj --source https://api.nuget.org/v3/index.json --ignore-failed-sources
|
||||
echo "Running tests: $DOTNET_ROOT/dotnet run --project RunTests/RunTests.csproj -- --target $1 --sdk $2 --runtime $3 --queue $4 --arch $5 --quarantined $6 --ef $7 --aspnetruntime $8 --aspnetref $9..."
|
||||
$DOTNET_ROOT/dotnet run --project RunTests/RunTests.csproj -- --target $1 --sdk $2 --runtime $3 --queue $4 --arch $5 --quarantined $6 --ef $7 --aspnetruntime $8 --aspnetref $9
|
||||
echo "Running tests: $DOTNET_ROOT/dotnet run --project RunTests/RunTests.csproj -- --target $1 --sdk $2 --runtime $3 --queue $4 --arch $5 --quarantined $6 --ef $7 --aspnetruntime $8 --aspnetref $9 --helixTimeout ${10}..."
|
||||
$DOTNET_ROOT/dotnet run --project RunTests/RunTests.csproj -- --target $1 --sdk $2 --runtime $3 --queue $4 --arch $5 --quarantined $6 --ef $7 --aspnetruntime $8 --aspnetref $9 --helixTimeout ${10}
|
||||
exit_code=$?
|
||||
echo "Finished tests...exit_code=$exit_code"
|
||||
exit $exit_code
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ Out-File -FilePath $sentinelFile -InputObject $JobName | Out-Null;
|
|||
[System.Diagnostics.Process []]$AliveProcesses = @();
|
||||
foreach ($candidate in $CandidateProcessNames) {
|
||||
try {
|
||||
$candidateProcesses = Get-Process $candidate;
|
||||
$candidateProcesses = Get-Process $candidate 2>$null
|
||||
$candidateProcesses | ForEach-Object { Write-Output "Found candidate process $candidate with PID '$($_.Id)'." };
|
||||
$AliveProcesses += $candidateProcesses;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,11 +19,11 @@
|
|||
<ItemGroup Condition="'$(IsHelixJob)' == 'true' AND '$(TestDependsOnAspNetRef)' == 'true' AND '$(IsTargetingPackBuilding)' == 'true'">
|
||||
<HelixContent Include="$(RepoRoot)artifacts\packages\Release\Shipping\Microsoft.AspNetCore.App.Ref.$(AppRuntimeVersion).nupkg" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
<ItemGroup Condition="'$(IsHelixJob)' == 'true' AND '$(TestDependsOnAspNetRuntime)' == 'true'">
|
||||
<HelixContent Include="$(RepoRoot)artifacts\packages\Release\Shipping\*-ci.nupkg" />
|
||||
</ItemGroup>
|
||||
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Item group has to be defined here becasue Helix.props is evaluated before xunit.runner.console.props -->
|
||||
<ItemGroup Condition="$(BuildHelixPayload)">
|
||||
<Content Include="@(HelixContent)" />
|
||||
|
|
@ -68,8 +68,8 @@ Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj
|
|||
<_Temp Include="@(HelixAvailableTargetQueue)" />
|
||||
<HelixAvailableTargetQueue Remove="@(HelixAvailableTargetQueue)" />
|
||||
<HelixAvailableTargetQueue Include="@(_Temp->'%(Identity)'->Replace('.Open',''))" />
|
||||
</ItemGroup>
|
||||
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Include default queues based on platform -->
|
||||
<_HelixProjectTargetQueue Include="%(HelixAvailableTargetQueue.Identity)" Condition="'%(HelixAvailableTargetQueue.Identity)' != '' AND '$(_SelectedPlatforms.Contains(%(Platform)))' == 'true'" />
|
||||
|
|
@ -115,8 +115,8 @@ Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj
|
|||
<TestAssembly>$(TargetFileName)</TestAssembly>
|
||||
<PreCommands>@(HelixPreCommand)</PreCommands>
|
||||
<PostCommands>@(HelixPostCommand)</PostCommands>
|
||||
<Command Condition="$(IsWindowsHelixQueue)">call runtests.cmd $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppRuntimeVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion) Microsoft.AspNetCore.App.Runtime.win-x64.$(AppRuntimeVersion).nupkg Microsoft.AspNetCore.App.Ref.$(AppRuntimeVersion).nupkg</Command>
|
||||
<Command Condition="!$(IsWindowsHelixQueue)">./runtests.sh $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppRuntimeVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion) Microsoft.AspNetCore.App.Runtime.win-x64.$(AppRuntimeVersion).nupkg Microsoft.AspNetCore.App.Ref.$(AppRuntimeVersion).nupkg</Command>
|
||||
<Command Condition="$(IsWindowsHelixQueue)">call runtests.cmd $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppRuntimeVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion) Microsoft.AspNetCore.App.Runtime.win-x64.$(AppRuntimeVersion).nupkg Microsoft.AspNetCore.App.Ref.$(AppRuntimeVersion).nupkg $(HelixTimeout)</Command>
|
||||
<Command Condition="!$(IsWindowsHelixQueue)">./runtests.sh $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppRuntimeVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion) Microsoft.AspNetCore.App.Runtime.win-x64.$(AppRuntimeVersion).nupkg Microsoft.AspNetCore.App.Ref.$(AppRuntimeVersion).nupkg $(HelixTimeout)</Command>
|
||||
<Command Condition="$(HelixCommand) != ''">$(HelixCommand)</Command>
|
||||
<Timeout>$(HelixTimeout)</Timeout>
|
||||
</HelixWorkItem>
|
||||
|
|
|
|||
|
|
@ -132,7 +132,9 @@
|
|||
This target resolves remaining Referene items to Packages, if possible. If not, they are left as Reference items fo the SDK to resolve.
|
||||
This executes on NuGet restore and during DesignTimeBuild. It should not run in the outer, cross-targeting build.
|
||||
-->
|
||||
<Target Name="ResolveCustomReferences" BeforeTargets="CollectPackageReferences;ResolveAssemblyReferencesDesignTime;ResolveAssemblyReferences" Condition=" '$(TargetFramework)' != '' AND '$(EnableCustomReferenceResolution)' == 'true' ">
|
||||
<Target Name="ResolveCustomReferences"
|
||||
BeforeTargets="CheckForImplicitPackageReferenceOverrides;CollectPackageReferences;ResolvePackageAssets"
|
||||
Condition=" '$(TargetFramework)' != '' AND '$(EnableCustomReferenceResolution)' == 'true' ">
|
||||
<ItemGroup>
|
||||
<!-- Ensure only content asset are consumed from .Sources packages -->
|
||||
<Reference>
|
||||
|
|
|
|||
|
|
@ -15,13 +15,14 @@
|
|||
"Git": "2.22.0",
|
||||
"jdk": "11.0.3",
|
||||
"vs": {
|
||||
"version": "16.5",
|
||||
"version": "16.6",
|
||||
"components": [
|
||||
"Microsoft.VisualStudio.Component.VC.ATL",
|
||||
"Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
|
||||
"Microsoft.VisualStudio.Component.Windows10SDK.17134"
|
||||
]
|
||||
}
|
||||
},
|
||||
"xcopy-msbuild": "none"
|
||||
},
|
||||
"msbuild-sdks": {
|
||||
"Yarn.MSBuild": "1.15.2",
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ using System.Diagnostics;
|
|||
using System.Globalization;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Testing;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Components.Rendering
|
||||
|
|
@ -763,5 +764,34 @@ namespace Microsoft.AspNetCore.Components.Rendering
|
|||
Assert.Equal(TaskStatus.Canceled, task.Status);
|
||||
await Assert.ThrowsAsync<TaskCanceledException>(async () => await task);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[QuarantinedTest]
|
||||
public async Task InvokeAsync_SyncWorkInAsyncTaskIsCompletedFirst()
|
||||
{
|
||||
// Simplified version of ServerComponentRenderingTest.CanDispatchAsyncWorkToSyncContext
|
||||
var expected = "First Second Third Fourth Fifth";
|
||||
var context = new RendererSynchronizationContext();
|
||||
string actual;
|
||||
|
||||
// Act
|
||||
await Task.Yield();
|
||||
actual = "First";
|
||||
|
||||
var invokeTask = context.InvokeAsync(async () =>
|
||||
{
|
||||
// When the sync context is idle, queued work items start synchronously
|
||||
actual += " Second";
|
||||
await Task.Delay(250);
|
||||
actual += " Fourth";
|
||||
});
|
||||
|
||||
actual += " Third";
|
||||
await invokeTask;
|
||||
actual += " Fifth";
|
||||
|
||||
// Assert
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ using BasicTestApp;
|
|||
using Microsoft.AspNetCore.Components.E2ETest.Infrastructure;
|
||||
using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures;
|
||||
using Microsoft.AspNetCore.E2ETesting;
|
||||
using Microsoft.AspNetCore.Testing;
|
||||
using OpenQA.Selenium;
|
||||
using Xunit;
|
||||
using Xunit.Abstractions;
|
||||
|
|
@ -100,6 +101,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.Tests
|
|||
}
|
||||
|
||||
[Theory]
|
||||
[QuarantinedTest]
|
||||
[InlineData("target")]
|
||||
[InlineData("intermediate")]
|
||||
public void StopPropagation(string whereToStopPropagation)
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ using BasicTestApp;
|
|||
using Microsoft.AspNetCore.Components.E2ETest.Infrastructure;
|
||||
using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures;
|
||||
using Microsoft.AspNetCore.E2ETesting;
|
||||
using Microsoft.AspNetCore.Testing;
|
||||
using OpenQA.Selenium;
|
||||
using OpenQA.Selenium.Interactions;
|
||||
using Xunit;
|
||||
|
|
@ -91,6 +92,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.Tests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/22034")]
|
||||
public void CanDeleteUnkeyed()
|
||||
{
|
||||
PerformTest(
|
||||
|
|
@ -217,7 +219,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.Tests
|
|||
textboxFinder().Clear();
|
||||
|
||||
// On each keystroke, the boxes will be shuffled. The text will only
|
||||
// be inserted correctly if focus is retained.
|
||||
// be inserted correctly if focus is retained.
|
||||
textboxFinder().Click();
|
||||
while (textToType.Length > 0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -51,8 +51,7 @@ This package is an internal implementation of the .NET Core SDK and is not meant
|
|||
<FrameworkListOutputPath>$(ArtifactsObjDir)$(FrameworkListFileName)</FrameworkListOutputPath>
|
||||
|
||||
<!-- Runtime extensions transport paths -->
|
||||
<!-- TODO: revert tfm to $(TargetFramework) when we have updated to net5.0 -->
|
||||
<RuntimeExtensionsReferenceDirectory>$(PkgMicrosoft_Extensions_Internal_Transport)\ref\net5.0\</RuntimeExtensionsReferenceDirectory>
|
||||
<RuntimeExtensionsReferenceDirectory>$(PkgMicrosoft_Extensions_Internal_Transport)\ref\$(TargetFramework)\</RuntimeExtensionsReferenceDirectory>
|
||||
|
||||
</PropertyGroup>
|
||||
|
||||
|
|
|
|||
|
|
@ -67,7 +67,8 @@ This package is an internal implementation of the .NET Core SDK and is not meant
|
|||
<!-- There is no way to suppress the .dev.runtimeconfig.json generation. -->
|
||||
<ProjectRuntimeConfigDevFilePath>$(IntermediateOutputPath)ignoreme.dev.runtimeconfig.json</ProjectRuntimeConfigDevFilePath>
|
||||
|
||||
<VersionFileIntermediateOutputPath>$(IntermediateOutputPath)$(SharedFxName).versions.txt</VersionFileIntermediateOutputPath>
|
||||
<VersionTxtFileIntermediateOutputPath>$(IntermediateOutputPath)$(SharedFxName).versions.txt</VersionTxtFileIntermediateOutputPath>
|
||||
<DotVersionFileIntermediateOutputPath>$(IntermediateOutputPath).version</DotVersionFileIntermediateOutputPath>
|
||||
|
||||
<!-- The project representing the shared framework doesn't produce a .NET assembly or symbols. -->
|
||||
<DebugType>none</DebugType>
|
||||
|
|
@ -259,7 +260,12 @@ This package is an internal implementation of the .NET Core SDK and is not meant
|
|||
</ItemGroup>
|
||||
|
||||
<WriteLinesToFile
|
||||
File="$(VersionFileIntermediateOutputPath)"
|
||||
File="$(VersionTxtFileIntermediateOutputPath)"
|
||||
Lines="@(VersionLines)"
|
||||
Overwrite="true" />
|
||||
|
||||
<WriteLinesToFile
|
||||
File="$(DotVersionFileIntermediateOutputPath)"
|
||||
Lines="@(VersionLines)"
|
||||
Overwrite="true" />
|
||||
</Target>
|
||||
|
|
@ -402,7 +408,7 @@ This package is an internal implementation of the .NET Core SDK and is not meant
|
|||
|
||||
<Target Name="_ResolveSharedFrameworkContent" DependsOnTargets="ResolveReferences;Crossgen">
|
||||
<ItemGroup>
|
||||
<SharedFxContent Include="$(VersionFileIntermediateOutputPath)" />
|
||||
<SharedFxContent Include="$(DotVersionFileIntermediateOutputPath)" />
|
||||
<SharedFxContent Include="$(ProjectDepsFilePath)" />
|
||||
<SharedFxContent Include="$(ProjectRuntimeConfigFilePath)" />
|
||||
<SharedFxContent Include="@(ReferenceCopyLocalPaths)" Condition="'%(Extension)' != '.pdb'" />
|
||||
|
|
@ -501,7 +507,7 @@ This package is an internal implementation of the .NET Core SDK and is not meant
|
|||
BeforeTargets="_GetPackageFiles">
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="$(VersionFileIntermediateOutputPath)" Pack="true" PackagePath="." />
|
||||
<None Include="$(VersionTxtFileIntermediateOutputPath)" Pack="true" PackagePath="." />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ namespace Microsoft.AspNetCore
|
|||
{
|
||||
private readonly string _expectedTfm;
|
||||
private readonly string _expectedRid;
|
||||
private readonly string _expectedVersionFileName;
|
||||
private readonly string _sharedFxRoot;
|
||||
private readonly ITestOutputHelper _output;
|
||||
|
||||
|
|
@ -26,6 +27,7 @@ namespace Microsoft.AspNetCore
|
|||
_sharedFxRoot = string.IsNullOrEmpty(Environment.GetEnvironmentVariable("ASPNET_RUNTIME_PATH"))
|
||||
? Path.Combine(TestData.GetTestDataValue("SharedFrameworkLayoutRoot"), "shared", TestData.GetTestDataValue("RuntimePackageVersion"))
|
||||
: Environment.GetEnvironmentVariable("ASPNET_RUNTIME_PATH");
|
||||
_expectedVersionFileName = string.IsNullOrEmpty(Environment.GetEnvironmentVariable("ASPNET_RUNTIME_PATH")) ? ".version" : "Microsoft.AspNetCore.App.versions.txt";
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -133,7 +135,7 @@ namespace Microsoft.AspNetCore
|
|||
[Fact]
|
||||
public void ItContainsVersionFile()
|
||||
{
|
||||
var versionFile = Path.Combine(_sharedFxRoot, "Microsoft.AspNetCore.App.versions.txt");
|
||||
var versionFile = Path.Combine(_sharedFxRoot, _expectedVersionFileName);
|
||||
AssertEx.FileExists(versionFile);
|
||||
var lines = File.ReadAllLines(versionFile);
|
||||
Assert.Equal(2, lines.Length);
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ using Xunit.Abstractions;
|
|||
|
||||
namespace InteropTests
|
||||
{
|
||||
// All interop test cases, minus GCE authentication specific tests.
|
||||
// Tests are separate methods so that they can be quarantined separately.
|
||||
public class InteropTests
|
||||
{
|
||||
private static readonly TimeSpan DefaultTimeout = TimeSpan.FromSeconds(30);
|
||||
|
|
@ -25,9 +27,67 @@ namespace InteropTests
|
|||
_output = output;
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(TestCaseData))]
|
||||
public async Task InteropTestCase(string name)
|
||||
[Fact]
|
||||
public Task EmptyUnary() => InteropTestCase("empty_unary");
|
||||
|
||||
[Fact]
|
||||
[QuarantinedTest]
|
||||
public Task LargeUnary() => InteropTestCase("large_unary");
|
||||
|
||||
[Fact]
|
||||
[QuarantinedTest]
|
||||
public Task ClientStreaming() => InteropTestCase("client_streaming");
|
||||
|
||||
[Fact]
|
||||
public Task ServerStreaming() => InteropTestCase("server_streaming");
|
||||
|
||||
[Fact]
|
||||
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/22101")]
|
||||
public Task PingPong() => InteropTestCase("ping_pong");
|
||||
|
||||
[Fact]
|
||||
public Task EmptyStream() => InteropTestCase("empty_stream");
|
||||
|
||||
[Fact]
|
||||
public Task CancelAfterBegin() => InteropTestCase("cancel_after_begin");
|
||||
|
||||
[Fact]
|
||||
public Task CancelAfterFirstResponse() => InteropTestCase("cancel_after_first_response");
|
||||
|
||||
[Fact]
|
||||
public Task TimeoutOnSleepingServer() => InteropTestCase("timeout_on_sleeping_server");
|
||||
|
||||
[Fact]
|
||||
[QuarantinedTest]
|
||||
public Task CustomMetadata() => InteropTestCase("custom_metadata");
|
||||
|
||||
[Fact]
|
||||
public Task StatusCodeAndMessage() => InteropTestCase("status_code_and_message");
|
||||
|
||||
[Fact]
|
||||
public Task SpecialStatusMessage() => InteropTestCase("special_status_message");
|
||||
|
||||
[Fact]
|
||||
public Task UnimplementedService() => InteropTestCase("unimplemented_service");
|
||||
|
||||
[Fact]
|
||||
public Task UnimplementedMethod() => InteropTestCase("unimplemented_method");
|
||||
|
||||
[Fact]
|
||||
[QuarantinedTest]
|
||||
public Task ClientCompressedUnary() => InteropTestCase("client_compressed_unary");
|
||||
|
||||
[Fact]
|
||||
public Task ClientCompressedStreaming() => InteropTestCase("client_compressed_streaming");
|
||||
|
||||
[Fact]
|
||||
[QuarantinedTest]
|
||||
public Task ServerCompressedUnary() => InteropTestCase("server_compressed_unary");
|
||||
|
||||
[Fact]
|
||||
public Task ServerCompressedStreaming() => InteropTestCase("server_compressed_streaming");
|
||||
|
||||
private async Task InteropTestCase(string name)
|
||||
{
|
||||
using (var serverProcess = new WebsiteProcess(_serverPath, _output))
|
||||
{
|
||||
|
|
@ -43,33 +103,5 @@ namespace InteropTests
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region TestData
|
||||
// All interop test cases, minus GCE authentication specific tests
|
||||
private static string[] AllTests = new string[]
|
||||
{
|
||||
"empty_unary",
|
||||
"large_unary",
|
||||
"client_streaming",
|
||||
"server_streaming",
|
||||
"ping_pong",
|
||||
"empty_stream",
|
||||
|
||||
"cancel_after_begin",
|
||||
"cancel_after_first_response",
|
||||
"timeout_on_sleeping_server",
|
||||
"custom_metadata",
|
||||
"status_code_and_message",
|
||||
"special_status_message",
|
||||
"unimplemented_service",
|
||||
"unimplemented_method",
|
||||
"client_compressed_unary",
|
||||
"client_compressed_streaming",
|
||||
"server_compressed_unary",
|
||||
"server_compressed_streaming"
|
||||
};
|
||||
|
||||
public static IEnumerable<object[]> TestCaseData => AllTests.Select(t => new object[] { t });
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -274,7 +274,6 @@ namespace Microsoft.Extensions.Diagnostics.HealthChecks
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[QuarantinedTest]
|
||||
public async Task RunAsync_PublishersCanTimeout()
|
||||
{
|
||||
// Arrange
|
||||
|
|
|
|||
|
|
@ -433,7 +433,6 @@ namespace Microsoft.AspNetCore.TestHost
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/20164")]
|
||||
public async Task ClientStreaming_ResponseCompletesWithoutResponseBodyWrite()
|
||||
{
|
||||
// Arrange
|
||||
|
|
|
|||
|
|
@ -248,6 +248,8 @@ namespace Microsoft.AspNetCore.Http
|
|||
public static readonly string Post;
|
||||
public static readonly string Put;
|
||||
public static readonly string Trace;
|
||||
public static bool Equals(string methodA, string methodB) { throw null; }
|
||||
public static string GetCanonicalizedValue(string method) { throw null; }
|
||||
public static bool IsConnect(string method) { throw null; }
|
||||
public static bool IsDelete(string method) { throw null; }
|
||||
public static bool IsGet(string method) { throw null; }
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// 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;
|
||||
|
|
@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Http
|
|||
// Using .'static readonly' means that all consumers get these exact same
|
||||
// 'string' instance, which means the 'ReferenceEquals' checks below work
|
||||
// and allow us to optimize comparisons when these constants are used.
|
||||
|
||||
|
||||
// Please do NOT change these to 'const'
|
||||
public static readonly string Connect = "CONNECT";
|
||||
public static readonly string Delete = "DELETE";
|
||||
|
|
@ -37,7 +37,7 @@ namespace Microsoft.AspNetCore.Http
|
|||
/// </returns>
|
||||
public static bool IsConnect(string method)
|
||||
{
|
||||
return object.ReferenceEquals(Connect, method) || StringComparer.OrdinalIgnoreCase.Equals(Connect, method);
|
||||
return Equals(Connect, method);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Http
|
|||
/// </returns>
|
||||
public static bool IsDelete(string method)
|
||||
{
|
||||
return object.ReferenceEquals(Delete, method) || StringComparer.OrdinalIgnoreCase.Equals(Delete, method);
|
||||
return Equals(Delete, method);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -57,11 +57,11 @@ namespace Microsoft.AspNetCore.Http
|
|||
/// </summary>
|
||||
/// <param name="method">The HTTP request method.</param>
|
||||
/// <returns>
|
||||
/// <see langword="true" /> if the method is GET; otherwise, <see langword="false" />.
|
||||
/// <see langword="true" /> if the method is GET; otherwise, <see langword="false" />.
|
||||
/// </returns>
|
||||
public static bool IsGet(string method)
|
||||
{
|
||||
return object.ReferenceEquals(Get, method) || StringComparer.OrdinalIgnoreCase.Equals(Get, method);
|
||||
return Equals(Get, method);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -69,11 +69,11 @@ namespace Microsoft.AspNetCore.Http
|
|||
/// </summary>
|
||||
/// <param name="method">The HTTP request method.</param>
|
||||
/// <returns>
|
||||
/// <see langword="true" /> if the method is HEAD; otherwise, <see langword="false" />.
|
||||
/// <see langword="true" /> if the method is HEAD; otherwise, <see langword="false" />.
|
||||
/// </returns>
|
||||
public static bool IsHead(string method)
|
||||
{
|
||||
return object.ReferenceEquals(Head, method) || StringComparer.OrdinalIgnoreCase.Equals(Head, method);
|
||||
return Equals(Head, method);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -81,11 +81,11 @@ namespace Microsoft.AspNetCore.Http
|
|||
/// </summary>
|
||||
/// <param name="method">The HTTP request method.</param>
|
||||
/// <returns>
|
||||
/// <see langword="true" /> if the method is OPTIONS; otherwise, <see langword="false" />.
|
||||
/// <see langword="true" /> if the method is OPTIONS; otherwise, <see langword="false" />.
|
||||
/// </returns>
|
||||
public static bool IsOptions(string method)
|
||||
{
|
||||
return object.ReferenceEquals(Options, method) || StringComparer.OrdinalIgnoreCase.Equals(Options, method);
|
||||
return Equals(Options, method);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -97,7 +97,7 @@ namespace Microsoft.AspNetCore.Http
|
|||
/// </returns>
|
||||
public static bool IsPatch(string method)
|
||||
{
|
||||
return object.ReferenceEquals(Patch, method) || StringComparer.OrdinalIgnoreCase.Equals(Patch, method);
|
||||
return Equals(Patch, method);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -109,7 +109,7 @@ namespace Microsoft.AspNetCore.Http
|
|||
/// </returns>
|
||||
public static bool IsPost(string method)
|
||||
{
|
||||
return object.ReferenceEquals(Post, method) || StringComparer.OrdinalIgnoreCase.Equals(Post, method);
|
||||
return Equals(Post, method);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -121,7 +121,7 @@ namespace Microsoft.AspNetCore.Http
|
|||
/// </returns>
|
||||
public static bool IsPut(string method)
|
||||
{
|
||||
return object.ReferenceEquals(Put, method) || StringComparer.OrdinalIgnoreCase.Equals(Put, method);
|
||||
return Equals(Put, method);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -133,7 +133,39 @@ namespace Microsoft.AspNetCore.Http
|
|||
/// </returns>
|
||||
public static bool IsTrace(string method)
|
||||
{
|
||||
return object.ReferenceEquals(Trace, method) || StringComparer.OrdinalIgnoreCase.Equals(Trace, method);
|
||||
return Equals(Trace, method);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the equivalent static instance, or the original instance if none match. This conversion is optional but allows for performance optimizations when comparing method values elsewhere.
|
||||
/// </summary>
|
||||
/// <param name="method"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetCanonicalizedValue(string method) => method switch
|
||||
{
|
||||
string _ when IsGet(method) => Get,
|
||||
string _ when IsPost(method) => Post,
|
||||
string _ when IsPut(method) => Put,
|
||||
string _ when IsDelete(method) => Delete,
|
||||
string _ when IsOptions(method) => Options,
|
||||
string _ when IsHead(method) => Head,
|
||||
string _ when IsPatch(method) => Patch,
|
||||
string _ when IsTrace(method) => Trace,
|
||||
string _ when IsConnect(method) => Connect,
|
||||
string _ => method
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Returns a value that indicates if the HTTP methods are the same.
|
||||
/// </summary>
|
||||
/// <param name="methodA">The first HTTP request method to compare.</param>
|
||||
/// <param name="methodB">The second HTTP request method to compare.</param>
|
||||
/// <returns>
|
||||
/// <see langword="true" /> if the methods are the same; otherwise, <see langword="false" />.
|
||||
/// </returns>
|
||||
public static bool Equals(string methodA, string methodB)
|
||||
{
|
||||
return object.ReferenceEquals(methodA, methodB) || StringComparer.OrdinalIgnoreCase.Equals(methodA, methodB);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,53 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Http.Abstractions
|
||||
{
|
||||
public class HttpMethodslTests
|
||||
{
|
||||
[Fact]
|
||||
public void CanonicalizedValue_Success()
|
||||
{
|
||||
var testCases = new List<(string[] methods, string expectedMethod)>
|
||||
{
|
||||
(new string[] { "GET", "Get", "get" }, HttpMethods.Get),
|
||||
(new string[] { "POST", "Post", "post" }, HttpMethods.Post),
|
||||
(new string[] { "PUT", "Put", "put" }, HttpMethods.Put),
|
||||
(new string[] { "DELETE", "Delete", "delete" }, HttpMethods.Delete),
|
||||
(new string[] { "HEAD", "Head", "head" }, HttpMethods.Head),
|
||||
(new string[] { "CONNECT", "Connect", "connect" }, HttpMethods.Connect),
|
||||
(new string[] { "OPTIONS", "Options", "options" }, HttpMethods.Options),
|
||||
(new string[] { "PATCH", "Patch", "patch" }, HttpMethods.Patch),
|
||||
(new string[] { "TRACE", "Trace", "trace" }, HttpMethods.Trace)
|
||||
};
|
||||
|
||||
for (int i = 0; i < testCases.Count; i++)
|
||||
{
|
||||
var testCase = testCases[i];
|
||||
for (int j = 0; j < testCase.methods.Length; j++)
|
||||
{
|
||||
CanonicalizedValueTest(testCase.methods[j], testCase.expectedMethod);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void CanonicalizedValueTest(string method, string expectedMethod)
|
||||
{
|
||||
string inputMethod = CreateStringAtRuntime(method);
|
||||
var canonicalizedValue = HttpMethods.GetCanonicalizedValue(inputMethod);
|
||||
|
||||
Assert.Same(expectedMethod, canonicalizedValue);
|
||||
}
|
||||
|
||||
private string CreateStringAtRuntime(string input)
|
||||
{
|
||||
return new StringBuilder(input).ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -5,6 +5,7 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using static Microsoft.AspNetCore.Http.HttpMethods;
|
||||
|
||||
namespace Microsoft.AspNetCore.Routing
|
||||
{
|
||||
|
|
@ -41,7 +42,7 @@ namespace Microsoft.AspNetCore.Routing
|
|||
throw new ArgumentNullException(nameof(httpMethods));
|
||||
}
|
||||
|
||||
HttpMethods = httpMethods.ToArray();
|
||||
HttpMethods = httpMethods.Select(GetCanonicalizedValue).ToArray();
|
||||
AcceptCorsPreflight = acceptCorsPreflight;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -41,6 +41,15 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
_parameterPolicyFactory = parameterPolicyFactory;
|
||||
_selector = selector;
|
||||
|
||||
if (AppContext.TryGetSwitch("Microsoft.AspNetCore.Routing.UseCorrectCatchAllBehavior", out var enabled))
|
||||
{
|
||||
UseCorrectCatchAllBehavior = enabled;
|
||||
}
|
||||
else
|
||||
{
|
||||
UseCorrectCatchAllBehavior = false; // default to bugged behavior
|
||||
}
|
||||
|
||||
var (nodeBuilderPolicies, endpointComparerPolicies, endpointSelectorPolicies) = ExtractPolicies(policies.OrderBy(p => p.Order));
|
||||
_endpointSelectorPolicies = endpointSelectorPolicies;
|
||||
_nodeBuilders = nodeBuilderPolicies;
|
||||
|
|
@ -56,6 +65,9 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
// Used in tests
|
||||
internal EndpointComparer Comparer => _comparer;
|
||||
|
||||
// Used in tests
|
||||
internal bool UseCorrectCatchAllBehavior { get; set; }
|
||||
|
||||
public override void AddEndpoint(RouteEndpoint endpoint)
|
||||
{
|
||||
_endpoints.Add(endpoint);
|
||||
|
|
@ -63,6 +75,15 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
|
||||
public DfaNode BuildDfaTree(bool includeLabel = false)
|
||||
{
|
||||
if (!UseCorrectCatchAllBehavior)
|
||||
{
|
||||
// In 3.0 we did a global sort of the endpoints up front. This was a bug, because we actually want
|
||||
// do do the sort at each level of the tree based on precedence.
|
||||
//
|
||||
// _useLegacy30Behavior enables opt-out via an AppContext switch.
|
||||
_endpoints.Sort(_comparer);
|
||||
}
|
||||
|
||||
// Since we're doing a BFS we will process each 'level' of the tree in stages
|
||||
// this list will hold the set of items we need to process at the current
|
||||
// stage.
|
||||
|
|
@ -116,8 +137,13 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
nextWork = previousWork;
|
||||
}
|
||||
|
||||
// See comments on precedenceDigitComparer
|
||||
work.Sort(0, workCount, precedenceDigitComparer);
|
||||
if (UseCorrectCatchAllBehavior)
|
||||
{
|
||||
// The fix for the 3.0 sorting behavior bug.
|
||||
|
||||
// See comments on precedenceDigitComparer
|
||||
work.Sort(0, workCount, precedenceDigitComparer);
|
||||
}
|
||||
|
||||
for (var i = 0; i < workCount; i++)
|
||||
{
|
||||
|
|
@ -460,7 +486,10 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
candidates,
|
||||
endpointSelectorPolicies?.ToArray() ?? Array.Empty<IEndpointSelectorPolicy>(),
|
||||
JumpTableBuilder.Build(currentDefaultDestination, currentExitDestination, pathEntries),
|
||||
BuildPolicy(currentExitDestination, node.NodeBuilder, policyEntries));
|
||||
// Use the final exit destination when building the policy state.
|
||||
// We don't want to use either of the current destinations because they refer routing states,
|
||||
// and a policy state should never transition back to a routing state.
|
||||
BuildPolicy(exitDestination, node.NodeBuilder, policyEntries));
|
||||
|
||||
return currentStateIndex;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Internal;
|
||||
|
|
@ -21,7 +22,7 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
// Used in tests
|
||||
internal static readonly string OriginHeader = "Origin";
|
||||
internal static readonly string AccessControlRequestMethod = "Access-Control-Request-Method";
|
||||
internal static readonly string PreflightHttpMethod = "OPTIONS";
|
||||
internal static readonly string PreflightHttpMethod = HttpMethods.Options;
|
||||
|
||||
// Used in tests
|
||||
internal const string Http405EndpointDisplayName = "405 HTTP Method Not Supported";
|
||||
|
|
@ -133,7 +134,7 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
var httpMethod = httpContext.Request.Method;
|
||||
var headers = httpContext.Request.Headers;
|
||||
if (metadata.AcceptCorsPreflight &&
|
||||
string.Equals(httpMethod, PreflightHttpMethod, StringComparison.OrdinalIgnoreCase) &&
|
||||
HttpMethods.Equals(httpMethod, PreflightHttpMethod) &&
|
||||
headers.ContainsKey(HeaderNames.Origin) &&
|
||||
headers.TryGetValue(HeaderNames.AccessControlRequestMethod, out var accessControlRequestMethod) &&
|
||||
!StringValues.IsNullOrEmpty(accessControlRequestMethod))
|
||||
|
|
@ -146,7 +147,7 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
for (var j = 0; j < metadata.HttpMethods.Count; j++)
|
||||
{
|
||||
var candidateMethod = metadata.HttpMethods[j];
|
||||
if (!string.Equals(httpMethod, candidateMethod, StringComparison.OrdinalIgnoreCase))
|
||||
if (!HttpMethods.Equals(httpMethod, candidateMethod))
|
||||
{
|
||||
methods = methods ?? new HashSet<string>(StringComparer.OrdinalIgnoreCase);
|
||||
methods.Add(candidateMethod);
|
||||
|
|
@ -396,9 +397,19 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
|
||||
private static bool ContainsHttpMethod(List<string> httpMethods, string httpMethod)
|
||||
{
|
||||
for (var i = 0; i < httpMethods.Count; i++)
|
||||
var methods = CollectionsMarshal.AsSpan(httpMethods);
|
||||
for (var i = 0; i < methods.Length; i++)
|
||||
{
|
||||
if (string.Equals(httpMethods[i], httpMethod, StringComparison.OrdinalIgnoreCase))
|
||||
// This is a fast path for when everything is using static HttpMethods instances.
|
||||
if (object.ReferenceEquals(methods[i], httpMethod))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < methods.Length; i++)
|
||||
{
|
||||
if (HttpMethods.Equals(methods[i], httpMethod))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
@ -437,7 +448,7 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
var httpMethod = httpContext.Request.Method;
|
||||
var headers = httpContext.Request.Headers;
|
||||
if (_supportsCorsPreflight &&
|
||||
string.Equals(httpMethod, PreflightHttpMethod, StringComparison.OrdinalIgnoreCase) &&
|
||||
HttpMethods.Equals(httpMethod, PreflightHttpMethod) &&
|
||||
headers.ContainsKey(HeaderNames.Origin) &&
|
||||
headers.TryGetValue(HeaderNames.AccessControlRequestMethod, out var accessControlRequestMethod) &&
|
||||
!StringValues.IsNullOrEmpty(accessControlRequestMethod))
|
||||
|
|
@ -499,7 +510,7 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
{
|
||||
return
|
||||
IsCorsPreflightRequest == other.IsCorsPreflightRequest &&
|
||||
string.Equals(HttpMethod, other.HttpMethod, StringComparison.OrdinalIgnoreCase);
|
||||
HttpMethods.Equals(HttpMethod, other.HttpMethod);
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
// This file is used by Code Analysis to maintain SuppressMessage
|
||||
// attributes that are applied to this project.
|
||||
// Project-level suppressions either have no target or are given
|
||||
// a specific target and scoped to a namespace, type, member, etc.
|
||||
|
||||
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(
|
||||
"Build",
|
||||
"xUnit1013:Public method 'Quirks_CatchAllParameter' on test class 'FullFeaturedMatcherConformanceTest' should be marked as a Theory.",
|
||||
Justification = "This is a bug in the xUnit analyzer. This method is already marked as a theory.",
|
||||
Scope = "member",
|
||||
Target = "~M:Microsoft.AspNetCore.Routing.Matching.FullFeaturedMatcherConformanceTest.Quirks_CatchAllParameter(System.String,System.String,System.String[],System.String[])~System.Threading.Tasks.Task")]
|
||||
|
|
@ -460,12 +460,40 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
}
|
||||
|
||||
// Regression test for https://github.com/dotnet/aspnetcore/issues/16579
|
||||
//
|
||||
// This case behaves the same for all combinations.
|
||||
[Fact]
|
||||
public void BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order1()
|
||||
public void BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order1_CorrectBehavior()
|
||||
{
|
||||
var builder = CreateDfaMatcherBuilder();
|
||||
builder.UseCorrectCatchAllBehavior = true;
|
||||
BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order1_Core(builder);
|
||||
}
|
||||
|
||||
// Regression test for https://github.com/dotnet/aspnetcore/issues/16579
|
||||
//
|
||||
// This case behaves the same for all combinations.
|
||||
[Fact]
|
||||
public void BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order1_DefaultBehavior()
|
||||
{
|
||||
var builder = CreateDfaMatcherBuilder();
|
||||
BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order1_Core(builder);
|
||||
}
|
||||
|
||||
// Regression test for https://github.com/dotnet/aspnetcore/issues/16579
|
||||
//
|
||||
// This case behaves the same for all combinations.
|
||||
[Fact]
|
||||
public void BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order1_LegacyBehavior()
|
||||
{
|
||||
var builder = CreateDfaMatcherBuilder();
|
||||
builder.UseCorrectCatchAllBehavior = false;
|
||||
BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order1_Core(builder);
|
||||
}
|
||||
|
||||
private void BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order1_Core(DfaMatcherBuilder builder)
|
||||
{
|
||||
// Arrange
|
||||
var builder = CreateDfaMatcherBuilder();
|
||||
|
||||
var endpoint1 = CreateEndpoint("a/{b}", order: 0);
|
||||
builder.AddEndpoint(endpoint1);
|
||||
|
||||
|
|
@ -504,11 +532,31 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
|
||||
// Regression test for https://github.com/dotnet/aspnetcore/issues/16579
|
||||
[Fact]
|
||||
public void BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2()
|
||||
public void BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2_CorrectBehavior()
|
||||
{
|
||||
var builder = CreateDfaMatcherBuilder();
|
||||
builder.UseCorrectCatchAllBehavior = true;
|
||||
BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2_CorrectBehavior_Core(builder);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2_DefaultBehavior()
|
||||
{
|
||||
var builder = CreateDfaMatcherBuilder();
|
||||
BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2_LegacyBehavior_Core(builder);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2_LegacyBehavior()
|
||||
{
|
||||
var builder = CreateDfaMatcherBuilder();
|
||||
builder.UseCorrectCatchAllBehavior = false;
|
||||
BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2_LegacyBehavior_Core(builder);
|
||||
}
|
||||
|
||||
private void BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2_CorrectBehavior_Core(DfaMatcherBuilder builder)
|
||||
{
|
||||
// Arrange
|
||||
var builder = CreateDfaMatcherBuilder();
|
||||
|
||||
var endpoint1 = CreateEndpoint("a/{*b}", order: 0);
|
||||
builder.AddEndpoint(endpoint1);
|
||||
|
||||
|
|
@ -545,12 +593,49 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
Assert.Same(catchAll, catchAll.CatchAll);
|
||||
}
|
||||
|
||||
private void BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2_LegacyBehavior_Core(DfaMatcherBuilder builder)
|
||||
{
|
||||
// Arrange
|
||||
var endpoint1 = CreateEndpoint("a/{*b}", order: 0);
|
||||
builder.AddEndpoint(endpoint1);
|
||||
|
||||
var endpoint2 = CreateEndpoint("a/{b}", order: 1);
|
||||
builder.AddEndpoint(endpoint2);
|
||||
|
||||
// Act
|
||||
var root = builder.BuildDfaTree();
|
||||
|
||||
// Assert
|
||||
Assert.Null(root.Matches);
|
||||
Assert.Null(root.Parameters);
|
||||
|
||||
var next = Assert.Single(root.Literals);
|
||||
Assert.Equal("a", next.Key);
|
||||
|
||||
var a = next.Value;
|
||||
Assert.Same(endpoint1, Assert.Single(a.Matches));
|
||||
Assert.Null(a.Literals);
|
||||
|
||||
var b = a.Parameters;
|
||||
Assert.Same(endpoint1, Assert.Single(a.Matches));
|
||||
Assert.Null(b.Literals);
|
||||
Assert.Null(b.Parameters);
|
||||
Assert.Null(b.CatchAll);
|
||||
|
||||
var catchAll = a.CatchAll;
|
||||
Assert.Same(endpoint1, Assert.Single(catchAll.Matches));
|
||||
Assert.Null(catchAll.Literals);
|
||||
Assert.Same(catchAll, catchAll.Parameters);
|
||||
Assert.Same(catchAll, catchAll.CatchAll);
|
||||
}
|
||||
|
||||
// Regression test for https://github.com/dotnet/aspnetcore/issues/18677
|
||||
[Fact]
|
||||
public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1()
|
||||
public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_CorrectBehavior()
|
||||
{
|
||||
// Arrange
|
||||
var builder = CreateDfaMatcherBuilder();
|
||||
builder.UseCorrectCatchAllBehavior = true;
|
||||
|
||||
var endpoint1 = CreateEndpoint("{a}/{b}", order: 0);
|
||||
builder.AddEndpoint(endpoint1);
|
||||
|
|
@ -601,10 +686,11 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
|
||||
// Regression test for https://github.com/dotnet/aspnetcore/issues/18677
|
||||
[Fact]
|
||||
public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2()
|
||||
public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_CorrectBehavior()
|
||||
{
|
||||
// Arrange
|
||||
var builder = CreateDfaMatcherBuilder();
|
||||
builder.UseCorrectCatchAllBehavior = true;
|
||||
|
||||
var endpoint1 = CreateEndpoint("a/{*b}", order: 0);
|
||||
builder.AddEndpoint(endpoint1);
|
||||
|
|
@ -653,6 +739,123 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
Assert.Null(b2.CatchAll);
|
||||
}
|
||||
|
||||
// Regression test for https://github.com/dotnet/aspnetcore/issues/18677
|
||||
[Fact]
|
||||
public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_DefaultBehavior()
|
||||
{
|
||||
var builder = CreateDfaMatcherBuilder();
|
||||
BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_Legacy30Behavior_Core(builder);
|
||||
}
|
||||
|
||||
// Regression test for https://github.com/dotnet/aspnetcore/issues/18677
|
||||
[Fact]
|
||||
public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_Legacy30Behavior()
|
||||
{
|
||||
var builder = CreateDfaMatcherBuilder();
|
||||
builder.UseCorrectCatchAllBehavior = false;
|
||||
BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_Legacy30Behavior_Core(builder);
|
||||
}
|
||||
|
||||
private void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_Legacy30Behavior_Core(DfaMatcherBuilder builder)
|
||||
{
|
||||
// Arrange
|
||||
var endpoint1 = CreateEndpoint("{a}/{b}", order: 0);
|
||||
builder.AddEndpoint(endpoint1);
|
||||
|
||||
var endpoint2 = CreateEndpoint("a/{*b}", order: 1);
|
||||
builder.AddEndpoint(endpoint2);
|
||||
|
||||
// Act
|
||||
var root = builder.BuildDfaTree();
|
||||
|
||||
// Assert
|
||||
Assert.Null(root.Matches);
|
||||
|
||||
var next = Assert.Single(root.Literals);
|
||||
Assert.Equal("a", next.Key);
|
||||
|
||||
var a1 = next.Value;
|
||||
Assert.Same(endpoint2, Assert.Single(a1.Matches));
|
||||
Assert.Null(a1.Literals);
|
||||
Assert.Null(a1.Parameters);
|
||||
|
||||
var catchAll1 = a1.CatchAll;
|
||||
Assert.Same(endpoint2, Assert.Single(catchAll1.Matches));
|
||||
Assert.Null(catchAll1.Literals);
|
||||
Assert.Same(catchAll1, catchAll1.Parameters);
|
||||
Assert.Same(catchAll1, catchAll1.CatchAll);
|
||||
|
||||
var a2 = root.Parameters;
|
||||
Assert.Null(a2.Matches);
|
||||
Assert.Null(a2.Literals);
|
||||
|
||||
var b2 = a2.Parameters;
|
||||
Assert.Collection(
|
||||
b2.Matches,
|
||||
e => Assert.Same(endpoint1, e));
|
||||
Assert.Null(b2.Literals);
|
||||
Assert.Null(b2.Parameters);
|
||||
Assert.Null(b2.CatchAll);
|
||||
}
|
||||
|
||||
// Regression test for https://github.com/dotnet/aspnetcore/issues/18677
|
||||
[Fact]
|
||||
public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_DefaultBehavior()
|
||||
{
|
||||
var builder = CreateDfaMatcherBuilder();
|
||||
BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_Legacy30Behavior_Core(builder);
|
||||
}
|
||||
|
||||
// Regression test for https://github.com/dotnet/aspnetcore/issues/18677
|
||||
[Fact]
|
||||
public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_Legacy30Behavior()
|
||||
{
|
||||
var builder = CreateDfaMatcherBuilder();
|
||||
builder.UseCorrectCatchAllBehavior = false;
|
||||
BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_Legacy30Behavior_Core(builder);
|
||||
}
|
||||
|
||||
private void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_Legacy30Behavior_Core(DfaMatcherBuilder builder)
|
||||
{
|
||||
// Arrange
|
||||
var endpoint1 = CreateEndpoint("a/{*b}", order: 0);
|
||||
builder.AddEndpoint(endpoint1);
|
||||
|
||||
var endpoint2 = CreateEndpoint("{a}/{b}", order: 1);
|
||||
builder.AddEndpoint(endpoint2);
|
||||
|
||||
// Act
|
||||
var root = builder.BuildDfaTree();
|
||||
|
||||
// Assert
|
||||
Assert.Null(root.Matches);
|
||||
|
||||
var next = Assert.Single(root.Literals);
|
||||
Assert.Equal("a", next.Key);
|
||||
|
||||
var a1 = next.Value;
|
||||
Assert.Same(endpoint1, Assert.Single(a1.Matches));
|
||||
Assert.Null(a1.Literals);
|
||||
|
||||
var b1 = a1.Parameters;
|
||||
Assert.Same(endpoint2, Assert.Single(b1.Matches));
|
||||
Assert.Null(b1.Literals);
|
||||
Assert.Null(b1.Parameters);
|
||||
Assert.Null(b1.CatchAll);
|
||||
|
||||
var a2 = root.Parameters;
|
||||
Assert.Null(a2.Matches);
|
||||
Assert.Null(a2.Literals);
|
||||
|
||||
var b2 = a2.Parameters;
|
||||
Assert.Collection(
|
||||
b2.Matches,
|
||||
e => Assert.Same(endpoint2, e));
|
||||
Assert.Null(b2.Literals);
|
||||
Assert.Null(b2.Parameters);
|
||||
Assert.Null(b2.CatchAll);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BuildDfaTree_WithPolicies()
|
||||
{
|
||||
|
|
@ -941,6 +1144,8 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
new TestMetadata2MatcherPolicy(),
|
||||
};
|
||||
|
||||
var comparer = new EndpointComparer(policies.OrderBy(p => p.Order).OfType<IEndpointComparerPolicy>().ToArray());
|
||||
|
||||
var builder = CreateDfaMatcherBuilder(policies);
|
||||
|
||||
((TestMetadata1MatcherPolicy)policies[0]).OnGetEdges = VerifyOrder;
|
||||
|
|
@ -961,7 +1166,7 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
void VerifyOrder(IReadOnlyList<Endpoint> endpoints)
|
||||
{
|
||||
// The list should already be in sorted order, every time build is called.
|
||||
Assert.Equal(endpoints, endpoints.OrderBy(e => e, builder.Comparer));
|
||||
Assert.Equal(endpoints, endpoints.OrderBy(e => e, comparer));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Routing.Matching
|
||||
{
|
||||
|
|
@ -23,7 +24,132 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
MatcherAssert.AssertMatch(httpContext, endpoint, keys, values);
|
||||
}
|
||||
|
||||
// https://github.com/dotnet/aspnetcore/issues/18677
|
||||
[Theory]
|
||||
[InlineData("/middleware", 1)]
|
||||
[InlineData("/middleware/test", 1)]
|
||||
[InlineData("/middleware/test1/test2", 1)]
|
||||
[InlineData("/bill/boga", 0)]
|
||||
public async Task Match_Regression_1867_CorrectBehavior(string path, int endpointIndex)
|
||||
{
|
||||
var endpoints = new RouteEndpoint[]
|
||||
{
|
||||
EndpointFactory.CreateRouteEndpoint(
|
||||
"{firstName}/{lastName}",
|
||||
order: 0,
|
||||
defaults: new { controller = "TestRoute", action = "Index", }),
|
||||
|
||||
EndpointFactory.CreateRouteEndpoint(
|
||||
"middleware/{**_}",
|
||||
order: 0),
|
||||
};
|
||||
|
||||
var expected = endpoints[endpointIndex];
|
||||
|
||||
var matcher = CreateMatcher(useCorrectCatchAllBehavior: true, endpoints);
|
||||
var httpContext = CreateContext(path);
|
||||
|
||||
// Act
|
||||
await matcher.MatchAsync(httpContext);
|
||||
|
||||
// Assert
|
||||
MatcherAssert.AssertMatch(httpContext, expected, ignoreValues: true);
|
||||
}
|
||||
|
||||
// https://github.com/dotnet/aspnetcore/issues/18677
|
||||
//
|
||||
[Theory]
|
||||
[InlineData("/middleware", 1)]
|
||||
[InlineData("/middleware/test", 0)]
|
||||
[InlineData("/middleware/test1/test2", -1)]
|
||||
[InlineData("/bill/boga", 0)]
|
||||
public async Task Match_Regression_1867_DefaultBehavior(string path, int endpointIndex)
|
||||
{
|
||||
var endpoints = new RouteEndpoint[]
|
||||
{
|
||||
EndpointFactory.CreateRouteEndpoint(
|
||||
"{firstName}/{lastName}",
|
||||
order: 0,
|
||||
defaults: new { controller = "TestRoute", action = "Index", }),
|
||||
|
||||
EndpointFactory.CreateRouteEndpoint(
|
||||
"middleware/{**_}",
|
||||
order: 0),
|
||||
};
|
||||
|
||||
var expected = endpointIndex switch
|
||||
{
|
||||
-1 => null,
|
||||
_ => endpoints[endpointIndex],
|
||||
};
|
||||
|
||||
var matcher = CreateMatcher(useCorrectCatchAllBehavior: default, endpoints);
|
||||
var httpContext = CreateContext(path);
|
||||
|
||||
// Act
|
||||
await matcher.MatchAsync(httpContext);
|
||||
|
||||
// Assert
|
||||
if (expected == null)
|
||||
{
|
||||
MatcherAssert.AssertNotMatch(httpContext);
|
||||
}
|
||||
else
|
||||
{
|
||||
MatcherAssert.AssertMatch(httpContext, expected, ignoreValues: true);
|
||||
}
|
||||
}
|
||||
|
||||
// https://github.com/dotnet/aspnetcore/issues/18677
|
||||
//
|
||||
[Theory]
|
||||
[InlineData("/middleware", 1)]
|
||||
[InlineData("/middleware/test", 0)]
|
||||
[InlineData("/middleware/test1/test2", -1)]
|
||||
[InlineData("/bill/boga", 0)]
|
||||
public async Task Match_Regression_1867_LegacyBehavior(string path, int endpointIndex)
|
||||
{
|
||||
var endpoints = new RouteEndpoint[]
|
||||
{
|
||||
EndpointFactory.CreateRouteEndpoint(
|
||||
"{firstName}/{lastName}",
|
||||
order: 0,
|
||||
defaults: new { controller = "TestRoute", action = "Index", }),
|
||||
|
||||
EndpointFactory.CreateRouteEndpoint(
|
||||
"middleware/{**_}",
|
||||
order: 0),
|
||||
};
|
||||
|
||||
var expected = endpointIndex switch
|
||||
{
|
||||
-1 => null,
|
||||
_ => endpoints[endpointIndex],
|
||||
};
|
||||
|
||||
var matcher = CreateMatcher(useCorrectCatchAllBehavior: false, endpoints);
|
||||
var httpContext = CreateContext(path);
|
||||
|
||||
// Act
|
||||
await matcher.MatchAsync(httpContext);
|
||||
|
||||
// Assert
|
||||
if (expected == null)
|
||||
{
|
||||
MatcherAssert.AssertNotMatch(httpContext);
|
||||
}
|
||||
else
|
||||
{
|
||||
MatcherAssert.AssertMatch(httpContext, expected, ignoreValues: true);
|
||||
}
|
||||
}
|
||||
|
||||
internal override Matcher CreateMatcher(params RouteEndpoint[] endpoints)
|
||||
{
|
||||
return CreateMatcher(useCorrectCatchAllBehavior: default, endpoints);
|
||||
}
|
||||
|
||||
internal Matcher CreateMatcher(bool? useCorrectCatchAllBehavior, params RouteEndpoint[] endpoints)
|
||||
{
|
||||
var services = new ServiceCollection()
|
||||
.AddLogging()
|
||||
|
|
@ -32,6 +158,11 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
.BuildServiceProvider();
|
||||
|
||||
var builder = services.GetRequiredService<DfaMatcherBuilder>();
|
||||
if (useCorrectCatchAllBehavior.HasValue)
|
||||
{
|
||||
builder.UseCorrectCatchAllBehavior = useCorrectCatchAllBehavior.Value;
|
||||
}
|
||||
|
||||
for (var i = 0; i < endpoints.Length; i++)
|
||||
{
|
||||
builder.AddEndpoint(endpoints[i]);
|
||||
|
|
|
|||
|
|
@ -504,37 +504,5 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
// Assert
|
||||
MatcherAssert.AssertMatch(httpContext, expected, ignoreValues: true);
|
||||
}
|
||||
|
||||
// https://github.com/dotnet/aspnetcore/issues/18677
|
||||
[Theory]
|
||||
[InlineData("/middleware", 1)]
|
||||
[InlineData("/middleware/test", 1)]
|
||||
[InlineData("/middleware/test1/test2", 1)]
|
||||
[InlineData("/bill/boga", 0)]
|
||||
public virtual async Task Match_Regression_18677(string path, int endpointIndex)
|
||||
{
|
||||
var endpoints = new RouteEndpoint[]
|
||||
{
|
||||
EndpointFactory.CreateRouteEndpoint(
|
||||
"{firstName}/{lastName}",
|
||||
order: 0,
|
||||
defaults: new { controller = "TestRoute", action = "Index", }),
|
||||
|
||||
EndpointFactory.CreateRouteEndpoint(
|
||||
"middleware/{**_}",
|
||||
order: 0),
|
||||
};
|
||||
|
||||
var expected = endpoints[endpointIndex];
|
||||
|
||||
var matcher = CreateMatcher(endpoints);
|
||||
var httpContext = CreateContext(path);
|
||||
|
||||
// Act
|
||||
await matcher.MatchAsync(httpContext);
|
||||
|
||||
// Assert
|
||||
MatcherAssert.AssertMatch(httpContext, expected, ignoreValues: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -337,6 +337,38 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
MatcherAssert.AssertMatch(httpContext, endpoint);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Match_CatchAllRouteWithMatchingHost_Success()
|
||||
{
|
||||
// Arrange
|
||||
var endpoint = CreateEndpoint("/{**path}", hosts: new string[] { "contoso.com", });
|
||||
|
||||
var matcher = CreateMatcher(endpoint);
|
||||
var httpContext = CreateContext("/hello", "contoso.com");
|
||||
|
||||
// Act
|
||||
await matcher.MatchAsync(httpContext);
|
||||
|
||||
// Assert
|
||||
MatcherAssert.AssertMatch(httpContext, endpoint, new { path = "hello" });
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Match_CatchAllRouteFailureHost_NoMatch()
|
||||
{
|
||||
// Arrange
|
||||
var endpoint = CreateEndpoint("/{**path}", hosts: new string[] { "contoso.com", });
|
||||
|
||||
var matcher = CreateMatcher(endpoint);
|
||||
var httpContext = CreateContext("/hello", "nomatch.com");
|
||||
|
||||
// Act
|
||||
await matcher.MatchAsync(httpContext);
|
||||
|
||||
// Assert
|
||||
MatcherAssert.AssertNotMatch(httpContext);
|
||||
}
|
||||
|
||||
private static Matcher CreateMatcher(params RouteEndpoint[] endpoints)
|
||||
{
|
||||
var services = new ServiceCollection()
|
||||
|
|
|
|||
|
|
@ -1,16 +1,52 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// 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.Threading.Tasks;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Routing.Matching
|
||||
{
|
||||
public class RouteMatcherConformanceTest : FullFeaturedMatcherConformanceTest
|
||||
{
|
||||
// https://github.com/dotnet/aspnetcore/issues/18677
|
||||
//
|
||||
[Theory]
|
||||
[InlineData("/middleware", 1)]
|
||||
[InlineData("/middleware/test", 1)]
|
||||
[InlineData("/middleware/test1/test2", 1)]
|
||||
[InlineData("/bill/boga", 0)]
|
||||
public async Task Match_Regression_1867(string path, int endpointIndex)
|
||||
{
|
||||
var endpoints = new RouteEndpoint[]
|
||||
{
|
||||
EndpointFactory.CreateRouteEndpoint(
|
||||
"{firstName}/{lastName}",
|
||||
order: 0,
|
||||
defaults: new { controller = "TestRoute", action = "Index", }),
|
||||
|
||||
EndpointFactory.CreateRouteEndpoint(
|
||||
"middleware/{**_}",
|
||||
order: 0),
|
||||
};
|
||||
|
||||
var expected = endpoints[endpointIndex];
|
||||
|
||||
var matcher = CreateMatcher(endpoints);
|
||||
var httpContext = CreateContext(path);
|
||||
|
||||
// Act
|
||||
await matcher.MatchAsync(httpContext);
|
||||
|
||||
// Assert
|
||||
MatcherAssert.AssertMatch(httpContext, expected, ignoreValues: true);
|
||||
}
|
||||
|
||||
internal override Matcher CreateMatcher(params RouteEndpoint[] endpoints)
|
||||
{
|
||||
var builder = new RouteMatcherBuilder();
|
||||
for (var i = 0; i < endpoints.Length; i++)
|
||||
{
|
||||
builder.AddEndpoint(endpoints[i]);
|
||||
builder.AddEndpoint(endpoints[i]);
|
||||
}
|
||||
return builder.Build();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// 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.Threading.Tasks;
|
||||
|
|
@ -22,6 +22,39 @@ namespace Microsoft.AspNetCore.Routing.Matching
|
|||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
// https://github.com/dotnet/aspnetcore/issues/18677
|
||||
//
|
||||
[Theory]
|
||||
[InlineData("/middleware", 1)]
|
||||
[InlineData("/middleware/test", 1)]
|
||||
[InlineData("/middleware/test1/test2", 1)]
|
||||
[InlineData("/bill/boga", 0)]
|
||||
public async Task Match_Regression_1867(string path, int endpointIndex)
|
||||
{
|
||||
var endpoints = new RouteEndpoint[]
|
||||
{
|
||||
EndpointFactory.CreateRouteEndpoint(
|
||||
"{firstName}/{lastName}",
|
||||
order: 0,
|
||||
defaults: new { controller = "TestRoute", action = "Index", }),
|
||||
|
||||
EndpointFactory.CreateRouteEndpoint(
|
||||
"middleware/{**_}",
|
||||
order: 0),
|
||||
};
|
||||
|
||||
var expected = endpoints[endpointIndex];
|
||||
|
||||
var matcher = CreateMatcher(endpoints);
|
||||
var httpContext = CreateContext(path);
|
||||
|
||||
// Act
|
||||
await matcher.MatchAsync(httpContext);
|
||||
|
||||
// Assert
|
||||
MatcherAssert.AssertMatch(httpContext, expected, ignoreValues: true);
|
||||
}
|
||||
|
||||
internal override Matcher CreateMatcher(params RouteEndpoint[] endpoints)
|
||||
{
|
||||
var builder = new TreeRouterMatcherBuilder();
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// 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;
|
||||
|
|
@ -49,7 +49,7 @@ namespace Swaggatherer
|
|||
|
||||
if (entry.Method != null)
|
||||
{
|
||||
setupRequestsLines.Add($" Requests[{i}].Request.Method = \"{entries[i].Method.ToUpperInvariant()}\";");
|
||||
setupRequestsLines.Add($" Requests[{i}].Request.Method = HttpMethods.GetCanonicalizedValue({entries[i].Method});");
|
||||
}
|
||||
|
||||
setupRequestsLines.Add($" Requests[{i}].Request.Path = \"{entries[i].RequestUrl}\";");
|
||||
|
|
|
|||
|
|
@ -77,8 +77,6 @@ namespace Microsoft.AspNetCore.WebUtilities
|
|||
[System.Diagnostics.DebuggerStepThroughAttribute]
|
||||
public override System.Threading.Tasks.ValueTask DisposeAsync() { throw null; }
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute]
|
||||
public System.Threading.Tasks.Task DrainBufferAsync(System.IO.Pipelines.PipeWriter destination, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute]
|
||||
public System.Threading.Tasks.Task DrainBufferAsync(System.IO.Stream destination, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
|
||||
public override void Flush() { }
|
||||
public override System.Threading.Tasks.Task FlushAsync(System.Threading.CancellationToken cancellationToken) { throw null; }
|
||||
|
|
|
|||
|
|
@ -186,25 +186,8 @@ namespace Microsoft.AspNetCore.WebUtilities
|
|||
// unspooled content. Copy the FileStream content first when available.
|
||||
if (FileStream != null)
|
||||
{
|
||||
// We make a new stream for async reads from disk and async writes to the destination
|
||||
await using var readStream = new FileStream(FileStream.Name, FileMode.Open, FileAccess.Read, FileShare.Delete | FileShare.ReadWrite, bufferSize: 1, useAsync: true);
|
||||
await FileStream.FlushAsync(cancellationToken);
|
||||
|
||||
await readStream.CopyToAsync(destination, cancellationToken);
|
||||
|
||||
// This is created with delete on close
|
||||
await FileStream.DisposeAsync();
|
||||
FileStream = null;
|
||||
}
|
||||
|
||||
await PagedByteBuffer.MoveToAsync(destination, cancellationToken);
|
||||
}
|
||||
|
||||
public async Task DrainBufferAsync(PipeWriter destination, CancellationToken cancellationToken = default)
|
||||
{
|
||||
// When not null, FileStream always has "older" spooled content. The PagedByteBuffer always has "newer"
|
||||
// unspooled content. Copy the FileStream content first when available.
|
||||
if (FileStream != null)
|
||||
{
|
||||
// We make a new stream for async reads from disk and async writes to the destination
|
||||
await using var readStream = new FileStream(FileStream.Name, FileMode.Open, FileAccess.Read, FileShare.Delete | FileShare.ReadWrite, bufferSize: 1, useAsync: true);
|
||||
|
||||
|
|
|
|||
|
|
@ -371,6 +371,24 @@ namespace Microsoft.AspNetCore.WebUtilities
|
|||
Assert.Equal(0, bufferingStream.Length);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task DrainBufferAsync_IncludesContentPossiblyBufferedByFileStream()
|
||||
{
|
||||
// We want to ensure that the FileStream (which has a 1-byte buffer) flushes prior to the other read stream reading input.
|
||||
// Arrange
|
||||
var input = new byte[] { 3, };
|
||||
using var bufferingStream = new FileBufferingWriteStream(0, tempFileDirectoryAccessor: () => TempDirectory);
|
||||
bufferingStream.Write(input, 0, input.Length);
|
||||
var memoryStream = new MemoryStream();
|
||||
|
||||
// Act
|
||||
await bufferingStream.DrainBufferAsync(memoryStream, default);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(input, memoryStream.ToArray());
|
||||
Assert.Equal(0, bufferingStream.Length);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
try
|
||||
|
|
|
|||
|
|
@ -1450,6 +1450,7 @@ namespace Microsoft.AspNetCore.Identity.Test
|
|||
/// </summary>
|
||||
/// <returns>Task</returns>
|
||||
[Fact]
|
||||
[QuarantinedTest]
|
||||
public async Task ChangePhoneNumberFailsWithWrongPhoneNumber()
|
||||
{
|
||||
var manager = CreateManager();
|
||||
|
|
@ -1485,8 +1486,8 @@ namespace Microsoft.AspNetCore.Identity.Test
|
|||
Assert.NotEqual(token1, token2);
|
||||
Assert.True(await manager.VerifyChangePhoneNumberTokenAsync(user, token1, num1));
|
||||
Assert.True(await manager.VerifyChangePhoneNumberTokenAsync(user, token2, num2));
|
||||
Assert.False(await manager.VerifyChangePhoneNumberTokenAsync(user, token2, num1));
|
||||
Assert.False(await manager.VerifyChangePhoneNumberTokenAsync(user, token1, num2));
|
||||
Assert.False(await manager.VerifyChangePhoneNumberTokenAsync(user, "bogus", num1));
|
||||
Assert.False(await manager.VerifyChangePhoneNumberTokenAsync(user, "bogus", num2));
|
||||
IdentityResultAssert.VerifyLogMessage(manager.Logger, $"VerifyUserTokenAsync() failed with purpose: ChangePhoneNumber:{num1} for user {await manager.GetUserIdAsync(user)}.");
|
||||
IdentityResultAssert.VerifyLogMessage(manager.Logger, $"VerifyUserTokenAsync() failed with purpose: ChangePhoneNumber:{num2} for user {await manager.GetUserIdAsync(user)}.");
|
||||
}
|
||||
|
|
@ -1518,6 +1519,7 @@ namespace Microsoft.AspNetCore.Identity.Test
|
|||
/// </summary>
|
||||
/// <returns>Task</returns>
|
||||
[Fact]
|
||||
[QuarantinedTest]
|
||||
public async Task CanChangeEmailOnlyIfEmailSame()
|
||||
{
|
||||
var manager = CreateManager();
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@ namespace Microsoft.AspNetCore.Identity.Test
|
|||
|
||||
[Theory]
|
||||
[MemberData(nameof(ScriptWithIntegrityData))]
|
||||
[QuarantinedTest]
|
||||
public async Task IdentityUI_ScriptTags_SubresourceIntegrityCheck(ScriptTag scriptTag)
|
||||
{
|
||||
var integrity = await GetShaIntegrity(scriptTag);
|
||||
|
|
@ -80,7 +79,6 @@ namespace Microsoft.AspNetCore.Identity.Test
|
|||
|
||||
[Theory]
|
||||
[MemberData(nameof(ScriptWithFallbackSrcData))]
|
||||
[QuarantinedTest("https://github.com/dotnet/aspnetcore-internal/issues/2267")]
|
||||
public async Task IdentityUI_ScriptTags_FallbackSourceContent_Matches_CDNContent(ScriptTag scriptTag)
|
||||
{
|
||||
var wwwrootDir = Path.Combine(GetProjectBasePath(), "wwwroot", scriptTag.Version);
|
||||
|
|
|
|||
|
|
@ -76,7 +76,11 @@
|
|||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />
|
||||
|
||||
<PropertyGroup>
|
||||
<PackageFileName>$(RuntimeInstallerBaseName)-$(PackageVersion)-win-$(Platform)$(TargetExt)</PackageFileName>
|
||||
<!-- Everything built in this project _except_ the final package & MSI are shipping assets. -->
|
||||
<_GeneratedPackageVersion>$(PackageVersion)</_GeneratedPackageVersion>
|
||||
<_GeneratedPackageVersion
|
||||
Condition="! $(PackageVersion.Contains('$(_PreReleaseLabel)'))">$(PackageVersion)-$(_PreReleaseLabel)$(_BuildNumberLabels)</_GeneratedPackageVersion>
|
||||
<PackageFileName>$(RuntimeInstallerBaseName)-$(_GeneratedPackageVersion)-win-$(Platform)$(TargetExt)</PackageFileName>
|
||||
<ProductName>Microsoft ASP.NET Core $(PackageBrandingVersion) Shared Framework ($(Platform))</ProductName>
|
||||
<DefineConstants>$(DefineConstants);ProductName=$(ProductName)</DefineConstants>
|
||||
</PropertyGroup>
|
||||
|
|
@ -84,11 +88,6 @@
|
|||
<Target Name="CreateSharedFrameworkNugetPackage" AfterTargets="CopyToArtifactsDirectory;Build">
|
||||
<PropertyGroup>
|
||||
<MsiFullPath>$(InstallersOutputPath)$(PackageFileName)</MsiFullPath>
|
||||
|
||||
<!-- Everything built in this project _except_ the final package are shipping assets. -->
|
||||
<_GeneratedPackageVersion>$(PackageVersion)</_GeneratedPackageVersion>
|
||||
<_GeneratedPackageVersion
|
||||
Condition="! $(PackageVersion.Contains('$(_PreReleaseLabel)'))">$(PackageVersion)-$(_PreReleaseLabel)$(_BuildNumberLabels)</_GeneratedPackageVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<Exec Command="powershell -NoProfile -NoLogo $(GenerateNupkgPowershellScript) ^
|
||||
|
|
|
|||
|
|
@ -70,8 +70,12 @@
|
|||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />
|
||||
|
||||
<PropertyGroup>
|
||||
<!-- Everything built in this project _except_ the final package are shipping assets. -->
|
||||
<_GeneratedPackageVersion>$(PackageVersion)</_GeneratedPackageVersion>
|
||||
<_GeneratedPackageVersion
|
||||
Condition="! $(PackageVersion.Contains('$(_PreReleaseLabel)'))">$(PackageVersion)-$(_PreReleaseLabel)$(_BuildNumberLabels)</_GeneratedPackageVersion>
|
||||
<ProductName>Microsoft ASP.NET Core $(PackageBrandingVersion) Targeting Pack ($(Platform))</ProductName>
|
||||
<PackageFileName>$(TargetingPackInstallerBaseName)-$(PackageVersion)-win-$(Platform)$(TargetExt)</PackageFileName>
|
||||
<PackageFileName>$(TargetingPackInstallerBaseName)-$(_GeneratedPackageVersion)-win-$(Platform)$(TargetExt)</PackageFileName>
|
||||
<DefineConstants>$(DefineConstants);ProductName=$(ProductName)</DefineConstants>
|
||||
|
||||
<!-- Suppresses building this project completely during servicing builds. -->
|
||||
|
|
@ -82,11 +86,6 @@
|
|||
Condition="'$(IsTargetingPackBuilding)' != 'false'">
|
||||
<PropertyGroup>
|
||||
<MsiFullPath>$(InstallersOutputPath)$(PackageFileName)</MsiFullPath>
|
||||
|
||||
<!-- Everything built in this project _except_ the final package are shipping assets. -->
|
||||
<_GeneratedPackageVersion>$(PackageVersion)</_GeneratedPackageVersion>
|
||||
<_GeneratedPackageVersion
|
||||
Condition="! $(PackageVersion.Contains('$(_PreReleaseLabel)'))">$(PackageVersion)-$(_PreReleaseLabel)$(_BuildNumberLabels)</_GeneratedPackageVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<Exec Command="powershell -NoProfile -NoLogo $(GenerateNupkgPowershellScript) ^
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<GuidInputs>$(Version);$(Platform);$(VersionSuffix)</GuidInputs>
|
||||
<GuidInputs>$(Version);$(Platform);$(VersionSuffix);$(_BuildNumberLabels)</GuidInputs>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="GenerateGUIDs" BeforeTargets="BeforeBuild" DependsOnTargets="_GeneratePackageGuids;_GenerateBundleGuids" Condition=" '$(DisableGuidGeneration)' != 'true' " />
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ namespace Microsoft.AspNetCore.NodeServices.Util
|
|||
// get the rest
|
||||
if (lineBreakPos < 0 && startPos < chunkLength)
|
||||
{
|
||||
_linesBuffer.Append(buf, startPos, chunkLength);
|
||||
_linesBuffer.Append(buf, startPos, chunkLength - startPos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -261,7 +261,7 @@ namespace Microsoft.AspNetCore.Mvc.Formatters
|
|||
if (fileBufferingWriteStream != null)
|
||||
{
|
||||
response.ContentLength = fileBufferingWriteStream.Length;
|
||||
await fileBufferingWriteStream.DrainBufferAsync(response.BodyWriter);
|
||||
await fileBufferingWriteStream.DrainBufferAsync(response.Body);
|
||||
}
|
||||
}
|
||||
finally
|
||||
|
|
|
|||
|
|
@ -20,10 +20,7 @@ namespace Microsoft.AspNetCore.Mvc.Formatters
|
|||
{
|
||||
private readonly IArrayPool<char> _charPool;
|
||||
private readonly MvcOptions _mvcOptions;
|
||||
|
||||
// Perf: JsonSerializers are relatively expensive to create, and are thread safe. We cache
|
||||
// the serializer and invalidate it when the settings change.
|
||||
private JsonSerializer _serializer;
|
||||
private JsonSerializerSettings _serializerSettings;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new <see cref="NewtonsoftJsonOutputFormatter"/> instance.
|
||||
|
|
@ -99,12 +96,13 @@ namespace Microsoft.AspNetCore.Mvc.Formatters
|
|||
/// <returns>The <see cref="JsonSerializer"/> used during serialization and deserialization.</returns>
|
||||
protected virtual JsonSerializer CreateJsonSerializer()
|
||||
{
|
||||
if (_serializer == null)
|
||||
if (_serializerSettings == null)
|
||||
{
|
||||
_serializer = JsonSerializer.Create(SerializerSettings);
|
||||
// Lock the serializer settings once the first serialization has been initiated.
|
||||
_serializerSettings = ShallowCopy(SerializerSettings);
|
||||
}
|
||||
|
||||
return _serializer;
|
||||
return JsonSerializer.Create(_serializerSettings);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -155,7 +153,7 @@ namespace Microsoft.AspNetCore.Mvc.Formatters
|
|||
if (fileBufferingWriteStream != null)
|
||||
{
|
||||
response.ContentLength = fileBufferingWriteStream.Length;
|
||||
await fileBufferingWriteStream.DrainBufferAsync(response.BodyWriter);
|
||||
await fileBufferingWriteStream.DrainBufferAsync(response.Body);
|
||||
}
|
||||
}
|
||||
finally
|
||||
|
|
@ -166,5 +164,43 @@ namespace Microsoft.AspNetCore.Mvc.Formatters
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static JsonSerializerSettings ShallowCopy(JsonSerializerSettings settings)
|
||||
{
|
||||
var copiedSettings = new JsonSerializerSettings
|
||||
{
|
||||
FloatParseHandling = settings.FloatParseHandling,
|
||||
FloatFormatHandling = settings.FloatFormatHandling,
|
||||
DateParseHandling = settings.DateParseHandling,
|
||||
DateTimeZoneHandling = settings.DateTimeZoneHandling,
|
||||
DateFormatHandling = settings.DateFormatHandling,
|
||||
Formatting = settings.Formatting,
|
||||
MaxDepth = settings.MaxDepth,
|
||||
DateFormatString = settings.DateFormatString,
|
||||
Context = settings.Context,
|
||||
Error = settings.Error,
|
||||
SerializationBinder = settings.SerializationBinder,
|
||||
TraceWriter = settings.TraceWriter,
|
||||
Culture = settings.Culture,
|
||||
ReferenceResolverProvider = settings.ReferenceResolverProvider,
|
||||
EqualityComparer = settings.EqualityComparer,
|
||||
ContractResolver = settings.ContractResolver,
|
||||
ConstructorHandling = settings.ConstructorHandling,
|
||||
TypeNameAssemblyFormatHandling = settings.TypeNameAssemblyFormatHandling,
|
||||
MetadataPropertyHandling = settings.MetadataPropertyHandling,
|
||||
TypeNameHandling = settings.TypeNameHandling,
|
||||
PreserveReferencesHandling = settings.PreserveReferencesHandling,
|
||||
Converters = settings.Converters,
|
||||
DefaultValueHandling = settings.DefaultValueHandling,
|
||||
NullValueHandling = settings.NullValueHandling,
|
||||
ObjectCreationHandling = settings.ObjectCreationHandling,
|
||||
MissingMemberHandling = settings.MissingMemberHandling,
|
||||
ReferenceLoopHandling = settings.ReferenceLoopHandling,
|
||||
CheckAdditionalContent = settings.CheckAdditionalContent,
|
||||
StringEscapeHandling = settings.StringEscapeHandling,
|
||||
};
|
||||
|
||||
return copiedSettings;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -326,6 +326,40 @@ namespace Microsoft.AspNetCore.Mvc.Formatters
|
|||
Assert.NotNull(outputFormatterContext.HttpContext.Response.ContentLength);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SerializingWithPreserveReferenceHandling()
|
||||
{
|
||||
// Arrange
|
||||
var expected = "{\"$id\":\"1\",\"fullName\":\"John\",\"age\":35}";
|
||||
var user = new User { FullName = "John", age = 35 };
|
||||
|
||||
var settings = new JsonSerializerSettings
|
||||
{
|
||||
ContractResolver = new DefaultContractResolver
|
||||
{
|
||||
NamingStrategy = new CamelCaseNamingStrategy(),
|
||||
},
|
||||
PreserveReferencesHandling = PreserveReferencesHandling.All,
|
||||
};
|
||||
var formatter = new TestableJsonOutputFormatter(settings);
|
||||
|
||||
for (var i = 0; i < 3; i++)
|
||||
{
|
||||
// Act
|
||||
var context = GetOutputFormatterContext(user, typeof(User));
|
||||
await formatter.WriteResponseBodyAsync(context, Encoding.UTF8);
|
||||
|
||||
// Assert
|
||||
var body = context.HttpContext.Response.Body;
|
||||
|
||||
Assert.NotNull(body);
|
||||
body.Position = 0;
|
||||
|
||||
var content = new StreamReader(body, Encoding.UTF8).ReadToEnd();
|
||||
Assert.Equal(expected, content);
|
||||
}
|
||||
}
|
||||
|
||||
private class TestableJsonOutputFormatter : NewtonsoftJsonOutputFormatter
|
||||
{
|
||||
public TestableJsonOutputFormatter(JsonSerializerSettings serializerSettings)
|
||||
|
|
|
|||
|
|
@ -154,15 +154,17 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests
|
|||
Assert.Equal(expected, await response.Content.ReadAsStringAsync());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public virtual async Task Formatting_LargeObject()
|
||||
[Theory]
|
||||
[InlineData(65 * 1024)]
|
||||
[InlineData(2 * 1024 * 1024)]
|
||||
public virtual async Task Formatting_LargeObject(int size)
|
||||
{
|
||||
// Arrange
|
||||
var expectedName = "This is long so we can test large objects " + new string('a', 1024 * 65);
|
||||
var expectedName = "This is long so we can test large objects " + new string('a', size);
|
||||
var expected = $"{{\"id\":10,\"name\":\"{expectedName}\",\"streetName\":null}}";
|
||||
|
||||
// Act
|
||||
var response = await Client.GetAsync($"/JsonOutputFormatter/{nameof(JsonOutputFormatterController.LargeObjectResult)}");
|
||||
var response = await Client.GetAsync($"/JsonOutputFormatter/{nameof(JsonOutputFormatterController.LargeObjectResult)}/{size}");
|
||||
|
||||
// Assert
|
||||
await response.AssertStatusCodeAsync(HttpStatusCode.OK);
|
||||
|
|
|
|||
|
|
@ -44,12 +44,12 @@ namespace FormatterWebSite.Controllers
|
|||
["Key3"] = null,
|
||||
};
|
||||
|
||||
[HttpGet]
|
||||
public ActionResult<SimpleModel> LargeObjectResult() =>
|
||||
[HttpGet("{size:int}")]
|
||||
public ActionResult<SimpleModel> LargeObjectResult(int size) =>
|
||||
new SimpleModel
|
||||
{
|
||||
Id = 10,
|
||||
Name = "This is long so we can test large objects " + new string('a', 1024 * 65),
|
||||
Name = "This is long so we can test large objects " + new string('a', size),
|
||||
};
|
||||
|
||||
[HttpGet]
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
|
@ -24,7 +26,7 @@ namespace Templates.Test
|
|||
|
||||
public Project Project { get; private set; }
|
||||
|
||||
[ConditionalFact(Skip = "This test ran for over an hour")]
|
||||
[Fact]
|
||||
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/20172")]
|
||||
public async Task BlazorServerTemplateWorks_NoAuth()
|
||||
{
|
||||
|
|
@ -137,9 +139,23 @@ namespace Templates.Test
|
|||
|
||||
private void TestBasicNavigation()
|
||||
{
|
||||
// Give components.server enough time to load so that it can replace
|
||||
// the prerendered content before we start making assertions.
|
||||
Thread.Sleep(5000);
|
||||
var retries = 3;
|
||||
var connected = false;
|
||||
do
|
||||
{
|
||||
try
|
||||
{
|
||||
Browser.Contains("Information: WebSocket connected to",
|
||||
() => string.Join(Environment.NewLine, Browser.GetBrowserLogs(LogLevel.Info).Select(b => b.Message)));
|
||||
connected = true;
|
||||
}
|
||||
catch (TimeoutException) when(retries-- > 0)
|
||||
{
|
||||
Browser.Navigate().Refresh();
|
||||
}
|
||||
} while (!connected && retries > 0);
|
||||
|
||||
|
||||
Browser.Exists(By.TagName("ul"));
|
||||
// <title> element gets project ID injected into it during template execution
|
||||
Browser.Equal(Project.ProjectName.Trim(), () => Browser.Title.Trim());
|
||||
|
|
|
|||
|
|
@ -6,7 +6,8 @@
|
|||
"Web.ItemTemplates\\Microsoft.DotNet.Web.ItemTemplates.csproj",
|
||||
"Web.ProjectTemplates\\Microsoft.DotNet.Web.ProjectTemplates.csproj",
|
||||
"Web.Spa.ProjectTemplates\\Microsoft.DotNet.Web.Spa.ProjectTemplates.csproj",
|
||||
"test\\ProjectTemplates.Tests.csproj"
|
||||
"test\\ProjectTemplates.Tests.csproj",
|
||||
"BlazorTemplates.Tests\\BlazorTemplates.Tests.csproj"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -44,7 +44,7 @@ namespace Templates.Test.Helpers
|
|||
string workingDirectory,
|
||||
string dllPath,
|
||||
IDictionary<string, string> environmentVariables,
|
||||
bool published = true,
|
||||
bool published,
|
||||
bool hasListeningUri = true,
|
||||
ILogger logger = null)
|
||||
{
|
||||
|
|
@ -63,9 +63,9 @@ namespace Templates.Test.Helpers
|
|||
Timeout = TimeSpan.FromMinutes(2)
|
||||
};
|
||||
|
||||
output.WriteLine("Running ASP.NET application...");
|
||||
output.WriteLine("Running ASP.NET Core application...");
|
||||
|
||||
var arguments = published ? $"exec {dllPath}" : "run";
|
||||
var arguments = published ? $"exec {dllPath}" : "run --no-build";
|
||||
|
||||
logger?.LogInformation($"AspNetProcess - process: {DotNetMuxer.MuxerPathOrDefault()} arguments: {arguments}");
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ namespace Templates.Test.Helpers
|
|||
|
||||
public async Task WaitAsync(TimeSpan? timeout = null)
|
||||
{
|
||||
timeout ??= TimeSpan.FromMinutes(2);
|
||||
timeout ??= TimeSpan.FromMinutes(20);
|
||||
Assert.True(await Semaphore.WaitAsync(timeout.Value), $"Unable to acquire process lock for process {Name}");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -109,48 +109,30 @@ namespace Templates.Test.Helpers
|
|||
}
|
||||
}
|
||||
|
||||
internal async Task<ProcessResult> RunDotNetPublishAsync(bool takeNodeLock = false, IDictionary<string, string> packageOptions = null, string additionalArgs = null)
|
||||
internal async Task<ProcessResult> RunDotNetPublishAsync(IDictionary<string, string> packageOptions = null, string additionalArgs = null)
|
||||
{
|
||||
Output.WriteLine("Publishing ASP.NET application...");
|
||||
Output.WriteLine("Publishing ASP.NET Core application...");
|
||||
|
||||
// This is going to trigger a build, so we need to acquire the lock like in the other cases.
|
||||
// We want to take the node lock as some builds run NPM as part of the build and we want to make sure
|
||||
// it's run without interruptions.
|
||||
var effectiveLock = takeNodeLock ? new OrderedLock(NodeLock, DotNetNewLock) : new OrderedLock(nodeLock: null, DotNetNewLock);
|
||||
await effectiveLock.WaitAsync();
|
||||
try
|
||||
{
|
||||
using var result = ProcessEx.Run(Output, TemplateOutputDir, DotNetMuxer.MuxerPathOrDefault(), $"publish -c Release /bl {additionalArgs}", packageOptions);
|
||||
await result.Exited;
|
||||
CaptureBinLogOnFailure(result);
|
||||
return new ProcessResult(result);
|
||||
}
|
||||
finally
|
||||
{
|
||||
effectiveLock.Release();
|
||||
}
|
||||
// Avoid restoring as part of build or publish. These projects should have already restored as part of running dotnet new. Explicitly disabling restore
|
||||
// should avoid any global contention and we can execute a build or publish in a lock-free way
|
||||
|
||||
using var result = ProcessEx.Run(Output, TemplateOutputDir, DotNetMuxer.MuxerPathOrDefault(), $"publish --no-restore -c Release /bl {additionalArgs}", packageOptions);
|
||||
await result.Exited;
|
||||
CaptureBinLogOnFailure(result);
|
||||
return new ProcessResult(result);
|
||||
}
|
||||
|
||||
internal async Task<ProcessResult> RunDotNetBuildAsync(bool takeNodeLock = false, IDictionary<string, string> packageOptions = null, string additionalArgs = null)
|
||||
internal async Task<ProcessResult> RunDotNetBuildAsync(IDictionary<string, string> packageOptions = null, string additionalArgs = null)
|
||||
{
|
||||
Output.WriteLine("Building ASP.NET application...");
|
||||
Output.WriteLine("Building ASP.NET Core application...");
|
||||
|
||||
// This is going to trigger a build, so we need to acquire the lock like in the other cases.
|
||||
// We want to take the node lock as some builds run NPM as part of the build and we want to make sure
|
||||
// it's run without interruptions.
|
||||
var effectiveLock = takeNodeLock ? new OrderedLock(NodeLock, DotNetNewLock) : new OrderedLock(nodeLock: null, DotNetNewLock);
|
||||
await effectiveLock.WaitAsync();
|
||||
try
|
||||
{
|
||||
using var result = ProcessEx.Run(Output, TemplateOutputDir, DotNetMuxer.MuxerPathOrDefault(), $"build -c Debug /bl {additionalArgs}", packageOptions);
|
||||
await result.Exited;
|
||||
CaptureBinLogOnFailure(result);
|
||||
return new ProcessResult(result);
|
||||
}
|
||||
finally
|
||||
{
|
||||
effectiveLock.Release();
|
||||
}
|
||||
// Avoid restoring as part of build or publish. These projects should have already restored as part of running dotnet new. Explicitly disabling restore
|
||||
// should avoid any global contention and we can execute a build or publish in a lock-free way
|
||||
|
||||
using var result = ProcessEx.Run(Output, TemplateOutputDir, DotNetMuxer.MuxerPathOrDefault(), $"build --no-restore -c Debug /bl {additionalArgs}", packageOptions);
|
||||
await result.Exited;
|
||||
CaptureBinLogOnFailure(result);
|
||||
return new ProcessResult(result);
|
||||
}
|
||||
|
||||
internal AspNetProcess StartBuiltProjectAsync(bool hasListeningUri = true, ILogger logger = null)
|
||||
|
|
@ -165,8 +147,33 @@ namespace Templates.Test.Helpers
|
|||
["ASPNETCORE_Logging__Console__IncludeScopes"] = "true",
|
||||
};
|
||||
|
||||
var launchSettingsJson = Path.Combine(TemplateOutputDir, "Properties", "launchSettings.json");
|
||||
if (File.Exists(launchSettingsJson))
|
||||
{
|
||||
// When executing "dotnet run", the launch urls specified in the app's launchSettings.json have higher precedence
|
||||
// than ambient environment variables. When present, we have to edit this file to allow the application to pick random ports.
|
||||
var original = File.ReadAllText(launchSettingsJson);
|
||||
var updated = original.Replace(
|
||||
"\"applicationUrl\": \"https://localhost:5001;http://localhost:5000\"",
|
||||
$"\"applicationUrl\": \"{_urls}\"");
|
||||
|
||||
if (updated == original)
|
||||
{
|
||||
Output.WriteLine("applicationUrl is not specified in launchSettings.json");
|
||||
}
|
||||
else
|
||||
{
|
||||
Output.WriteLine("Updating applicationUrl in launchSettings.json");
|
||||
File.WriteAllText(launchSettingsJson, updated);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Output.WriteLine("No launchSettings.json found to update.");
|
||||
}
|
||||
|
||||
var projectDll = Path.Combine(TemplateBuildDir, $"{ProjectName}.dll");
|
||||
return new AspNetProcess(Output, TemplateOutputDir, projectDll, environment, hasListeningUri: hasListeningUri, logger: logger);
|
||||
return new AspNetProcess(Output, TemplateOutputDir, projectDll, environment, published: false, hasListeningUri: hasListeningUri, logger: logger);
|
||||
}
|
||||
|
||||
internal AspNetProcess StartPublishedProjectAsync(bool hasListeningUri = true)
|
||||
|
|
@ -181,7 +188,7 @@ namespace Templates.Test.Helpers
|
|||
};
|
||||
|
||||
var projectDll = $"{ProjectName}.dll";
|
||||
return new AspNetProcess(Output, TemplatePublishDir, projectDll, environment, hasListeningUri: hasListeningUri);
|
||||
return new AspNetProcess(Output, TemplatePublishDir, projectDll, environment, published: true, hasListeningUri: hasListeningUri);
|
||||
}
|
||||
|
||||
internal async Task<ProcessResult> RunDotNetEfCreateMigrationAsync(string migrationName)
|
||||
|
|
|
|||
|
|
@ -6,10 +6,8 @@ using System.Diagnostics;
|
|||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Internal;
|
||||
using Microsoft.AspNetCore.Testing;
|
||||
using Microsoft.Extensions.CommandLineUtils;
|
||||
using Xunit;
|
||||
using Xunit.Abstractions;
|
||||
|
|
@ -18,7 +16,6 @@ namespace Templates.Test.Helpers
|
|||
{
|
||||
internal static class TemplatePackageInstaller
|
||||
{
|
||||
private static readonly SemaphoreSlim InstallerLock = new SemaphoreSlim(1);
|
||||
private static bool _haveReinstalledTemplatePackages;
|
||||
|
||||
private static readonly string[] _templatePackages = new[]
|
||||
|
|
@ -52,7 +49,7 @@ namespace Templates.Test.Helpers
|
|||
|
||||
public static async Task EnsureTemplatingEngineInitializedAsync(ITestOutputHelper output)
|
||||
{
|
||||
Assert.True(await InstallerLock.WaitAsync(TimeSpan.FromMinutes(1)), "Unable to grab installer lock");
|
||||
await ProcessLock.DotNetNewLock.WaitAsync();
|
||||
try
|
||||
{
|
||||
if (!_haveReinstalledTemplatePackages)
|
||||
|
|
@ -67,7 +64,7 @@ namespace Templates.Test.Helpers
|
|||
}
|
||||
finally
|
||||
{
|
||||
InstallerLock.Release();
|
||||
ProcessLock.DotNetNewLock.Release();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="Controllers/HomeController.fs" />
|
||||
<Compile Include="Models/ErrorViewModel.fs" />
|
||||
<Compile Include="Controllers/HomeController.fs" />
|
||||
<Compile Include="Startup.fs" />
|
||||
<Compile Include="Program.fs" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -12,9 +12,7 @@ open Microsoft.Extensions.Hosting
|
|||
open Microsoft.Extensions.Logging
|
||||
|
||||
module Program =
|
||||
let exitCode = 0
|
||||
|
||||
let CreateHostBuilder args =
|
||||
let createHostBuilder args =
|
||||
Host.CreateDefaultBuilder(args)
|
||||
.ConfigureWebHostDefaults(fun webBuilder ->
|
||||
webBuilder.UseStartup<Startup>() |> ignore
|
||||
|
|
@ -22,6 +20,6 @@ module Program =
|
|||
|
||||
[<EntryPoint>]
|
||||
let main args =
|
||||
CreateHostBuilder(args).Build().Run()
|
||||
createHostBuilder(args).Build().Run()
|
||||
|
||||
exitCode
|
||||
0 // Exit code
|
||||
|
|
|
|||
|
|
@ -11,16 +11,16 @@ type Startup() =
|
|||
|
||||
// This method gets called by the runtime. Use this method to add services to the container.
|
||||
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
|
||||
member this.ConfigureServices(services: IServiceCollection) =
|
||||
member _.ConfigureServices(services: IServiceCollection) =
|
||||
()
|
||||
|
||||
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
||||
member this.Configure(app: IApplicationBuilder, env: IWebHostEnvironment) =
|
||||
member _.Configure(app: IApplicationBuilder, env: IWebHostEnvironment) =
|
||||
if env.IsDevelopment() then
|
||||
app.UseDeveloperExceptionPage() |> ignore
|
||||
|
||||
app.UseRouting() |> ignore
|
||||
|
||||
app.UseEndpoints(fun endpoints ->
|
||||
endpoints.MapGet("/", fun context -> context.Response.WriteAsync("Hello World!")) |> ignore
|
||||
app.UseRouting()
|
||||
.UseEndpoints(fun endpoints ->
|
||||
endpoints.MapGet("/", fun context ->
|
||||
context.Response.WriteAsync("Hello World!")) |> ignore
|
||||
) |> ignore
|
||||
|
|
|
|||
|
|
@ -4,9 +4,13 @@ open System
|
|||
open System.Collections.Generic
|
||||
open System.Linq
|
||||
open System.Threading.Tasks
|
||||
open System.Diagnostics
|
||||
|
||||
open Microsoft.AspNetCore.Mvc
|
||||
open Microsoft.Extensions.Logging
|
||||
|
||||
open Company.WebApplication1.Models
|
||||
|
||||
type HomeController (logger : ILogger<HomeController>) =
|
||||
inherit Controller()
|
||||
|
||||
|
|
@ -16,5 +20,12 @@ type HomeController (logger : ILogger<HomeController>) =
|
|||
member this.Privacy () =
|
||||
this.View()
|
||||
|
||||
[<ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)>]
|
||||
member this.Error () =
|
||||
this.View();
|
||||
let reqId =
|
||||
if isNull Activity.Current then
|
||||
this.HttpContext.TraceIdentifier
|
||||
else
|
||||
Activity.Current.Id
|
||||
|
||||
this.View({ RequestId = reqId })
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
namespace Company.WebApplication1
|
||||
namespace Company.WebApplication1.Models
|
||||
|
||||
open System
|
||||
|
||||
type ErrorViewModel private () =
|
||||
member val RequestId : string = null with get, set
|
||||
type ErrorViewModel =
|
||||
{ RequestId: string }
|
||||
|
||||
member val ShowRequestId : bool = true with get, set
|
||||
member this.ShowRequestId =
|
||||
not (String.IsNullOrEmpty(this.RequestId))
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
@model ErrorViewModel
|
||||
@using Company.WebApplication1.Models
|
||||
@model ErrorViewModel
|
||||
@{
|
||||
ViewData["Title"] = "Error";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,10 +13,22 @@ open Company.WebApplication1
|
|||
type WeatherForecastController (logger : ILogger<WeatherForecastController>) =
|
||||
inherit ControllerBase()
|
||||
|
||||
let summaries = [| "Freezing"; "Bracing"; "Chilly"; "Cool"; "Mild"; "Warm"; "Balmy"; "Hot"; "Sweltering"; "Scorching" |]
|
||||
let summaries =
|
||||
[|
|
||||
"Freezing"
|
||||
"Bracing"
|
||||
"Chilly"
|
||||
"Cool"
|
||||
"Mild"
|
||||
"Warm"
|
||||
"Balmy"
|
||||
"Hot"
|
||||
"Sweltering"
|
||||
"Scorching"
|
||||
|]
|
||||
|
||||
[<HttpGet>]
|
||||
member __.Get() : WeatherForecast[] =
|
||||
member _.Get() =
|
||||
let rng = System.Random()
|
||||
[|
|
||||
for index in 0..4 ->
|
||||
|
|
|
|||
|
|
@ -14,32 +14,29 @@ open Microsoft.Extensions.Configuration
|
|||
open Microsoft.Extensions.DependencyInjection
|
||||
open Microsoft.Extensions.Hosting
|
||||
|
||||
type Startup private () =
|
||||
new (configuration: IConfiguration) as this =
|
||||
Startup() then
|
||||
this.Configuration <- configuration
|
||||
type Startup(configuration: IConfiguration) =
|
||||
member _.Configuration = configuration
|
||||
|
||||
// This method gets called by the runtime. Use this method to add services to the container.
|
||||
member this.ConfigureServices(services: IServiceCollection) =
|
||||
member _.ConfigureServices(services: IServiceCollection) =
|
||||
// Add framework services.
|
||||
services.AddControllers() |> ignore
|
||||
|
||||
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
||||
member this.Configure(app: IApplicationBuilder, env: IWebHostEnvironment) =
|
||||
member _.Configure(app: IApplicationBuilder, env: IWebHostEnvironment) =
|
||||
if (env.IsDevelopment()) then
|
||||
app.UseDeveloperExceptionPage() |> ignore
|
||||
#if (!NoHttps)
|
||||
|
||||
app.UseHttpsRedirection() |> ignore
|
||||
#else
|
||||
|
||||
#endif
|
||||
app.UseRouting() |> ignore
|
||||
|
||||
app.UseAuthorization() |> ignore
|
||||
|
||||
app.UseEndpoints(fun endpoints ->
|
||||
endpoints.MapControllers() |> ignore
|
||||
app.UseHttpsRedirection()
|
||||
.UseRouting()
|
||||
.UseAuthorization()
|
||||
.UseEndpoints(fun endpoints ->
|
||||
endpoints.MapControllers() |> ignore
|
||||
) |> ignore
|
||||
|
||||
member val Configuration : IConfiguration = null with get, set
|
||||
#else
|
||||
app.UseRouting()
|
||||
.UseAuthorization()
|
||||
.UseEndpoints(fun endpoints ->
|
||||
endpoints.MapControllers() |> ignore
|
||||
) |> ignore
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -8,4 +8,4 @@ type WeatherForecast =
|
|||
Summary: string }
|
||||
|
||||
member this.TemperatureF =
|
||||
32 + (int (float this.TemperatureC / 0.5556))
|
||||
32.0 + (float this.TemperatureC / 0.5556)
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ namespace Templates.Test
|
|||
|
||||
[ConditionalFact]
|
||||
[SkipOnHelix("Cert failures", Queues = "OSX.1014.Amd64;OSX.1014.Amd64.Open")]
|
||||
[QuarantinedTest]
|
||||
public async Task WebApiTemplateCSharp() => await WebApiTemplateCore(languageOverride: null);
|
||||
|
||||
private async Task WebApiTemplateCore(string languageOverride)
|
||||
|
|
|
|||
|
|
@ -68,6 +68,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CustomPolicyProvider", "sam
|
|||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StaticFilesAuth", "samples\StaticFilesAuth\StaticFilesAuth.csproj", "{E1E8A599-AB42-4551-8C24-BE4404B65283}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomAuthorizationFailureResponse", "samples\CustomAuthorizationFailureResponse\CustomAuthorizationFailureResponse.csproj", "{EA51BBBC-58AC-42F8-97C1-5CF3C9725513}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
|
@ -402,6 +404,18 @@ Global
|
|||
{E1E8A599-AB42-4551-8C24-BE4404B65283}.Release|x64.Build.0 = Release|Any CPU
|
||||
{E1E8A599-AB42-4551-8C24-BE4404B65283}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{E1E8A599-AB42-4551-8C24-BE4404B65283}.Release|x86.Build.0 = Release|Any CPU
|
||||
{EA51BBBC-58AC-42F8-97C1-5CF3C9725513}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EA51BBBC-58AC-42F8-97C1-5CF3C9725513}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EA51BBBC-58AC-42F8-97C1-5CF3C9725513}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{EA51BBBC-58AC-42F8-97C1-5CF3C9725513}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{EA51BBBC-58AC-42F8-97C1-5CF3C9725513}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{EA51BBBC-58AC-42F8-97C1-5CF3C9725513}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{EA51BBBC-58AC-42F8-97C1-5CF3C9725513}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EA51BBBC-58AC-42F8-97C1-5CF3C9725513}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{EA51BBBC-58AC-42F8-97C1-5CF3C9725513}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{EA51BBBC-58AC-42F8-97C1-5CF3C9725513}.Release|x64.Build.0 = Release|Any CPU
|
||||
{EA51BBBC-58AC-42F8-97C1-5CF3C9725513}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{EA51BBBC-58AC-42F8-97C1-5CF3C9725513}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
@ -434,6 +448,7 @@ Global
|
|||
{82C0816D-7051-4DDB-9B9E-6777973AD7AE} = {142C8260-90B5-4D72-9564-17BFDD72F496}
|
||||
{38C0E122-64D0-497F-ABB0-C6A9C3349F02} = {CA4538F5-9DA8-4139-B891-A13279889F79}
|
||||
{E1E8A599-AB42-4551-8C24-BE4404B65283} = {CA4538F5-9DA8-4139-B891-A13279889F79}
|
||||
{EA51BBBC-58AC-42F8-97C1-5CF3C9725513} = {CA4538F5-9DA8-4139-B891-A13279889F79}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {39E3AF62-B1FD-4156-92AA-F4FA99B5AD89}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ namespace Microsoft.Extensions.Logging
|
|||
private static Action<ILogger, Exception> _challengeNegotiate;
|
||||
private static Action<ILogger, Exception> _reauthenticating;
|
||||
private static Action<ILogger, Exception> _deferring;
|
||||
private static Action<ILogger, string, Exception> _negotiateError;
|
||||
|
||||
static NegotiateLoggingExtensions()
|
||||
{
|
||||
|
|
@ -43,7 +44,7 @@ namespace Microsoft.Extensions.Logging
|
|||
_challengeNegotiate = LoggerMessage.Define(
|
||||
eventId: new EventId(6, "ChallengeNegotiate"),
|
||||
logLevel: LogLevel.Debug,
|
||||
formatString: "Challenged 401 Negotiate");
|
||||
formatString: "Challenged 401 Negotiate.");
|
||||
_reauthenticating = LoggerMessage.Define(
|
||||
eventId: new EventId(7, "Reauthenticating"),
|
||||
logLevel: LogLevel.Debug,
|
||||
|
|
@ -60,6 +61,10 @@ namespace Microsoft.Extensions.Logging
|
|||
eventId: new EventId(10, "ClientError"),
|
||||
logLevel: LogLevel.Debug,
|
||||
formatString: "The users authentication request was invalid.");
|
||||
_negotiateError = LoggerMessage.Define<string>(
|
||||
eventId: new EventId(11, "NegotiateError"),
|
||||
logLevel: LogLevel.Debug,
|
||||
formatString: "Negotiate error code: {error}.");
|
||||
}
|
||||
|
||||
public static void IncompleteNegotiateChallenge(this ILogger logger)
|
||||
|
|
@ -91,5 +96,8 @@ namespace Microsoft.Extensions.Logging
|
|||
|
||||
public static void ClientError(this ILogger logger, Exception ex)
|
||||
=> _clientError(logger, ex);
|
||||
|
||||
public static void NegotiateError(this ILogger logger, string error)
|
||||
=> _negotiateError(logger, error, null);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ namespace Microsoft.AspNetCore.Authentication.Negotiate
|
|||
{ }
|
||||
|
||||
/// <summary>
|
||||
/// The handler calls methods on the events which give the application control at certain points where processing is occurring.
|
||||
/// The handler calls methods on the events which give the application control at certain points where processing is occurring.
|
||||
/// If it is not provided a default instance is supplied which does nothing when the methods are called.
|
||||
/// </summary>
|
||||
protected new NegotiateEvents Events
|
||||
|
|
@ -129,9 +129,9 @@ namespace Microsoft.AspNetCore.Authentication.Negotiate
|
|||
_negotiateState ??= Options.StateFactory.CreateInstance();
|
||||
|
||||
var outgoing = _negotiateState.GetOutgoingBlob(token, out var errorType, out var exception);
|
||||
Logger.LogInformation(errorType.ToString());
|
||||
if (errorType != BlobErrorType.None)
|
||||
{
|
||||
Logger.NegotiateError(errorType.ToString());
|
||||
_negotiateState.Dispose();
|
||||
_negotiateState = null;
|
||||
if (persistence?.State != null)
|
||||
|
|
|
|||
|
|
@ -49,7 +49,6 @@ namespace Microsoft.AspNetCore.Authentication.DataHandler
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[QuarantinedTest]
|
||||
public void UnprotectWithDifferentPurposeFails()
|
||||
{
|
||||
var provider = ServiceProvider.GetRequiredService<IDataProtectionProvider>();
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ namespace Microsoft.AspNetCore.Authorization.Infrastructure
|
|||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"{nameof(DenyAnonymousAuthorizationRequirement)}:Requires an authenticated user.";
|
||||
return $"{nameof(DenyAnonymousAuthorizationRequirement)}: Requires an authenticated user.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ namespace Microsoft.Extensions.Logging
|
|||
_userAuthorizationFailed = LoggerMessage.Define<string>(
|
||||
eventId: new EventId(2, "UserAuthorizationFailed"),
|
||||
logLevel: LogLevel.Information,
|
||||
formatString: "Authorization failed for {0}");
|
||||
formatString: "Authorization failed. {0}");
|
||||
}
|
||||
|
||||
public static void UserAuthorizationSucceeded(this ILogger logger)
|
||||
|
|
|
|||
|
|
@ -9,9 +9,19 @@ namespace Microsoft.AspNetCore.Authorization
|
|||
[System.Diagnostics.DebuggerStepThroughAttribute]
|
||||
public System.Threading.Tasks.Task Invoke(Microsoft.AspNetCore.Http.HttpContext context) { throw null; }
|
||||
}
|
||||
public partial interface IAuthorizationMiddlewareResultHandler
|
||||
{
|
||||
System.Threading.Tasks.Task HandleAsync(Microsoft.AspNetCore.Http.RequestDelegate next, Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy, Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult authorizeResult);
|
||||
}
|
||||
}
|
||||
namespace Microsoft.AspNetCore.Authorization.Policy
|
||||
{
|
||||
public partial class AuthorizationMiddlewareResultHandler : Microsoft.AspNetCore.Authorization.IAuthorizationMiddlewareResultHandler
|
||||
{
|
||||
public AuthorizationMiddlewareResultHandler() { }
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute]
|
||||
public System.Threading.Tasks.Task HandleAsync(Microsoft.AspNetCore.Http.RequestDelegate next, Microsoft.AspNetCore.Http.HttpContext context, Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy, Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult authorizeResult) { throw null; }
|
||||
}
|
||||
public partial interface IPolicyEvaluator
|
||||
{
|
||||
System.Threading.Tasks.Task<Microsoft.AspNetCore.Authentication.AuthenticateResult> AuthenticateAsync(Microsoft.AspNetCore.Authorization.AuthorizationPolicy policy, Microsoft.AspNetCore.Http.HttpContext context);
|
||||
|
|
@ -20,11 +30,13 @@ namespace Microsoft.AspNetCore.Authorization.Policy
|
|||
public partial class PolicyAuthorizationResult
|
||||
{
|
||||
internal PolicyAuthorizationResult() { }
|
||||
public Microsoft.AspNetCore.Authorization.AuthorizationFailure AuthorizationFailure { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } }
|
||||
public bool Challenged { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } }
|
||||
public bool Forbidden { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } }
|
||||
public bool Succeeded { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } }
|
||||
public static Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult Challenge() { throw null; }
|
||||
public static Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult Forbid() { throw null; }
|
||||
public static Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult Forbid(Microsoft.AspNetCore.Authorization.AuthorizationFailure authorizationFailure) { throw null; }
|
||||
public static Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult Success() { throw null; }
|
||||
}
|
||||
public partial class PolicyEvaluator : Microsoft.AspNetCore.Authorization.Policy.IPolicyEvaluator
|
||||
|
|
@ -44,6 +56,7 @@ namespace Microsoft.AspNetCore.Builder
|
|||
}
|
||||
public static partial class AuthorizationEndpointConventionBuilderExtensions
|
||||
{
|
||||
public static TBuilder AllowAnonymous<TBuilder>(this TBuilder builder) where TBuilder : Microsoft.AspNetCore.Builder.IEndpointConventionBuilder { throw null; }
|
||||
public static TBuilder RequireAuthorization<TBuilder>(this TBuilder builder) where TBuilder : Microsoft.AspNetCore.Builder.IEndpointConventionBuilder { throw null; }
|
||||
public static TBuilder RequireAuthorization<TBuilder>(this TBuilder builder, params Microsoft.AspNetCore.Authorization.IAuthorizeData[] authorizeData) where TBuilder : Microsoft.AspNetCore.Builder.IEndpointConventionBuilder { throw null; }
|
||||
public static TBuilder RequireAuthorization<TBuilder>(this TBuilder builder, params string[] policyNames) where TBuilder : Microsoft.AspNetCore.Builder.IEndpointConventionBuilder { throw null; }
|
||||
|
|
|
|||
|
|
@ -13,6 +13,9 @@ namespace Microsoft.AspNetCore.Builder
|
|||
/// </summary>
|
||||
public static class AuthorizationEndpointConventionBuilderExtensions
|
||||
{
|
||||
|
||||
private static readonly IAllowAnonymous _allowAnonymousMetadata = new AllowAnonymousAttribute();
|
||||
|
||||
/// <summary>
|
||||
/// Adds the default authorization policy to the endpoint(s).
|
||||
/// </summary>
|
||||
|
|
@ -79,6 +82,22 @@ namespace Microsoft.AspNetCore.Builder
|
|||
return builder;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Allows anonymous access to the endpoint by adding <see cref="AllowAnonymousAttribute" /> to the endpoint metadata. This will bypass
|
||||
/// all authorization checks for the endpoint including the default authorization policy and fallback authorization policy.
|
||||
/// </summary>
|
||||
/// <param name="builder">The endpoint convention builder.</param>
|
||||
/// <returns>The original convention builder parameter.</returns>
|
||||
public static TBuilder AllowAnonymous<TBuilder>(this TBuilder builder) where TBuilder : IEndpointConventionBuilder
|
||||
{
|
||||
builder.Add(endpointBuilder =>
|
||||
{
|
||||
endpointBuilder.Metadata.Add(_allowAnonymousMetadata);
|
||||
});
|
||||
return builder;
|
||||
}
|
||||
|
||||
|
||||
private static void RequireAuthorizationCore<TBuilder>(TBuilder builder, IEnumerable<IAuthorizeData> authorizeData)
|
||||
where TBuilder : IEndpointConventionBuilder
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2,9 +2,7 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Authentication;
|
||||
using Microsoft.AspNetCore.Authorization.Policy;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
|
@ -66,40 +64,8 @@ namespace Microsoft.AspNetCore.Authorization
|
|||
// Note that the resource will be null if there is no matched endpoint
|
||||
var authorizeResult = await policyEvaluator.AuthorizeAsync(policy, authenticateResult, context, resource: endpoint);
|
||||
|
||||
if (authorizeResult.Challenged)
|
||||
{
|
||||
if (policy.AuthenticationSchemes.Count > 0)
|
||||
{
|
||||
foreach (var scheme in policy.AuthenticationSchemes)
|
||||
{
|
||||
await context.ChallengeAsync(scheme);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
await context.ChallengeAsync();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
else if (authorizeResult.Forbidden)
|
||||
{
|
||||
if (policy.AuthenticationSchemes.Count > 0)
|
||||
{
|
||||
foreach (var scheme in policy.AuthenticationSchemes)
|
||||
{
|
||||
await context.ForbidAsync(scheme);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
await context.ForbidAsync();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
await _next(context);
|
||||
var authorizationMiddlewareResultHandler = context.RequestServices.GetRequiredService<IAuthorizationMiddlewareResultHandler>();
|
||||
await authorizationMiddlewareResultHandler.HandleAsync(_next, context, policy, authorizeResult);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,47 @@
|
|||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Authentication;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
|
||||
namespace Microsoft.AspNetCore.Authorization.Policy
|
||||
{
|
||||
public class AuthorizationMiddlewareResultHandler : IAuthorizationMiddlewareResultHandler
|
||||
{
|
||||
public async Task HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
|
||||
{
|
||||
if (authorizeResult.Challenged)
|
||||
{
|
||||
if (policy.AuthenticationSchemes.Count > 0)
|
||||
{
|
||||
foreach (var scheme in policy.AuthenticationSchemes)
|
||||
{
|
||||
await context.ChallengeAsync(scheme);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
await context.ChallengeAsync();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
else if (authorizeResult.Forbidden)
|
||||
{
|
||||
if (policy.AuthenticationSchemes.Count > 0)
|
||||
{
|
||||
foreach (var scheme in policy.AuthenticationSchemes)
|
||||
{
|
||||
await context.ForbidAsync(scheme);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
await context.ForbidAsync();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
await next(context);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Authorization.Policy;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
|
||||
namespace Microsoft.AspNetCore.Authorization
|
||||
{
|
||||
public interface IAuthorizationMiddlewareResultHandler
|
||||
{
|
||||
Task HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult);
|
||||
}
|
||||
}
|
||||
|
|
@ -33,8 +33,8 @@ namespace Microsoft.AspNetCore.Authorization.Policy
|
|||
/// If a resource is not required for policy evaluation you may pass null as the value.
|
||||
/// </param>
|
||||
/// <returns>Returns <see cref="PolicyAuthorizationResult.Success"/> if authorization succeeds.
|
||||
/// Otherwise returns <see cref="PolicyAuthorizationResult.Forbid"/> if <see cref="AuthenticateResult.Succeeded"/>, otherwise
|
||||
/// Otherwise returns <see cref="PolicyAuthorizationResult.Forbid(AuthorizationFailure)"/> if <see cref="AuthenticateResult.Succeeded"/>, otherwise
|
||||
/// returns <see cref="PolicyAuthorizationResult.Challenge"/></returns>
|
||||
Task<PolicyAuthorizationResult> AuthorizeAsync(AuthorizationPolicy policy, AuthenticateResult authenticationResult, HttpContext context, object resource);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,14 +22,22 @@ namespace Microsoft.AspNetCore.Authorization.Policy
|
|||
/// </summary>
|
||||
public bool Succeeded { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Contains information about why authorization failed.
|
||||
/// </summary>
|
||||
public AuthorizationFailure AuthorizationFailure { get; private set; }
|
||||
|
||||
public static PolicyAuthorizationResult Challenge()
|
||||
=> new PolicyAuthorizationResult { Challenged = true };
|
||||
|
||||
public static PolicyAuthorizationResult Forbid()
|
||||
=> new PolicyAuthorizationResult { Forbidden = true };
|
||||
=> Forbid(null);
|
||||
|
||||
public static PolicyAuthorizationResult Forbid(AuthorizationFailure authorizationFailure)
|
||||
=> new PolicyAuthorizationResult { Forbidden = true, AuthorizationFailure = authorizationFailure };
|
||||
|
||||
public static PolicyAuthorizationResult Success()
|
||||
=> new PolicyAuthorizationResult { Succeeded = true };
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ namespace Microsoft.AspNetCore.Authorization.Policy
|
|||
}
|
||||
}
|
||||
|
||||
return (context.User?.Identity?.IsAuthenticated ?? false)
|
||||
return (context.User?.Identity?.IsAuthenticated ?? false)
|
||||
? AuthenticateResult.Success(new AuthenticationTicket(context.User, "context.User"))
|
||||
: AuthenticateResult.NoResult();
|
||||
}
|
||||
|
|
@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Authorization.Policy
|
|||
/// If a resource is not required for policy evaluation you may pass null as the value.
|
||||
/// </param>
|
||||
/// <returns>Returns <see cref="PolicyAuthorizationResult.Success"/> if authorization succeeds.
|
||||
/// Otherwise returns <see cref="PolicyAuthorizationResult.Forbid"/> if <see cref="AuthenticateResult.Succeeded"/>, otherwise
|
||||
/// Otherwise returns <see cref="PolicyAuthorizationResult.Forbid(AuthorizationFailure)"/> if <see cref="AuthenticateResult.Succeeded"/>, otherwise
|
||||
/// returns <see cref="PolicyAuthorizationResult.Challenge"/></returns>
|
||||
public virtual async Task<PolicyAuthorizationResult> AuthorizeAsync(AuthorizationPolicy policy, AuthenticateResult authenticationResult, HttpContext context, object resource)
|
||||
{
|
||||
|
|
@ -88,9 +88,9 @@ namespace Microsoft.AspNetCore.Authorization.Policy
|
|||
}
|
||||
|
||||
// If authentication was successful, return forbidden, otherwise challenge
|
||||
return (authenticationResult.Succeeded)
|
||||
? PolicyAuthorizationResult.Forbid()
|
||||
return (authenticationResult.Succeeded)
|
||||
? PolicyAuthorizationResult.Forbid(result.Failure)
|
||||
: PolicyAuthorizationResult.Challenge();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@ namespace Microsoft.Extensions.DependencyInjection
|
|||
}
|
||||
|
||||
services.TryAddSingleton<AuthorizationPolicyMarkerService>();
|
||||
services.TryAdd(ServiceDescriptor.Transient<IPolicyEvaluator, PolicyEvaluator>());
|
||||
services.TryAddTransient<IPolicyEvaluator, PolicyEvaluator>();
|
||||
services.TryAddTransient<IAuthorizationMiddlewareResultHandler, AuthorizationMiddlewareResultHandler>();
|
||||
return services;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -121,6 +121,37 @@ namespace Microsoft.AspNetCore.Authorization.Test
|
|||
Assert.True(chainedBuilder.TestProperty);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AllowAnonymous_Default()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new TestEndpointConventionBuilder();
|
||||
|
||||
// Act
|
||||
builder.AllowAnonymous();
|
||||
|
||||
// Assert
|
||||
var convention = Assert.Single(builder.Conventions);
|
||||
|
||||
var endpointModel = new RouteEndpointBuilder((context) => Task.CompletedTask, RoutePatternFactory.Parse("/"), 0);
|
||||
convention(endpointModel);
|
||||
|
||||
Assert.IsAssignableFrom<IAllowAnonymous>(Assert.Single(endpointModel.Metadata));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AllowAnonymous_ChainedCall()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new TestEndpointConventionBuilder();
|
||||
|
||||
// Act
|
||||
var chainedBuilder = builder.AllowAnonymous();
|
||||
|
||||
// Assert
|
||||
Assert.True(chainedBuilder.TestProperty);
|
||||
}
|
||||
|
||||
private class TestEndpointConventionBuilder : IEndpointConventionBuilder
|
||||
{
|
||||
public IList<Action<EndpointBuilder>> Conventions { get; } = new List<Action<EndpointBuilder>>();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,150 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Authentication;
|
||||
using Microsoft.AspNetCore.Authorization.Policy;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Authorization.Test
|
||||
{
|
||||
public class AuthorizationMiddlewareResultHandlerTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task CallRequestDelegate_If_PolicyAuthorizationResultSucceeded()
|
||||
{
|
||||
var requestDelegate = new Mock<RequestDelegate>();
|
||||
var httpContext = CreateHttpContext();
|
||||
var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
|
||||
var policyAuthorizationResult = PolicyAuthorizationResult.Success();
|
||||
var handler = CreateAuthorizationMiddlewareResultHandler();
|
||||
|
||||
await handler.HandleAsync(requestDelegate.Object, httpContext, policy, policyAuthorizationResult);
|
||||
|
||||
requestDelegate.Verify(next => next(It.IsAny<HttpContext>()), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task NotCallRequestDelegate_If_PolicyAuthorizationResultWasChallenged()
|
||||
{
|
||||
var requestDelegate = new Mock<RequestDelegate>();
|
||||
var httpContext = CreateHttpContext();
|
||||
var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
|
||||
var policyAuthorizationResult = PolicyAuthorizationResult.Challenge();
|
||||
var handler = CreateAuthorizationMiddlewareResultHandler();
|
||||
|
||||
await handler.HandleAsync(requestDelegate.Object, httpContext, policy, policyAuthorizationResult);
|
||||
|
||||
requestDelegate.Verify(next => next(It.IsAny<HttpContext>()), Times.Never);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task NotCallRequestDelegate_If_PolicyAuthorizationResultWasForbidden()
|
||||
{
|
||||
var requestDelegate = new Mock<RequestDelegate>();
|
||||
var httpContext = CreateHttpContext();
|
||||
var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
|
||||
var policyAuthorizationResult = PolicyAuthorizationResult.Forbid();
|
||||
var handler = CreateAuthorizationMiddlewareResultHandler();
|
||||
|
||||
await handler.HandleAsync(requestDelegate.Object, httpContext, policy, policyAuthorizationResult);
|
||||
|
||||
requestDelegate.Verify(next => next(It.IsAny<HttpContext>()), Times.Never);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task ChallangeEachAuthenticationScheme_If_PolicyAuthorizationResultWasChallenged()
|
||||
{
|
||||
var authenticationServiceMock = new Mock<IAuthenticationService>();
|
||||
var requestDelegate = new Mock<RequestDelegate>();
|
||||
var httpContext = CreateHttpContext(authenticationServiceMock.Object);
|
||||
var firstScheme = Guid.NewGuid().ToString();
|
||||
var secondScheme = Guid.NewGuid().ToString();
|
||||
var thirdScheme = Guid.NewGuid().ToString();
|
||||
var policy = new AuthorizationPolicyBuilder()
|
||||
.RequireAuthenticatedUser()
|
||||
.AddAuthenticationSchemes(firstScheme, secondScheme, thirdScheme)
|
||||
.Build();
|
||||
var policyAuthorizationResult = PolicyAuthorizationResult.Challenge();
|
||||
var handler = CreateAuthorizationMiddlewareResultHandler();
|
||||
|
||||
await handler.HandleAsync(requestDelegate.Object, httpContext, policy, policyAuthorizationResult);
|
||||
|
||||
authenticationServiceMock.Verify(service => service.ChallengeAsync(httpContext, It.IsAny<string>(), null), Times.Exactly(3));
|
||||
authenticationServiceMock.Verify(service => service.ChallengeAsync(httpContext, firstScheme, null), Times.Once);
|
||||
authenticationServiceMock.Verify(service => service.ChallengeAsync(httpContext, secondScheme, null), Times.Once);
|
||||
authenticationServiceMock.Verify(service => service.ChallengeAsync(httpContext, thirdScheme, null), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task ChallangeWithoutAuthenticationScheme_If_PolicyAuthorizationResultWasChallenged()
|
||||
{
|
||||
var authenticationServiceMock = new Mock<IAuthenticationService>();
|
||||
var requestDelegate = new Mock<RequestDelegate>();
|
||||
var httpContext = CreateHttpContext(authenticationServiceMock.Object);
|
||||
var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
|
||||
var policyAuthorizationResult = PolicyAuthorizationResult.Challenge();
|
||||
var handler = CreateAuthorizationMiddlewareResultHandler();
|
||||
|
||||
await handler.HandleAsync(requestDelegate.Object, httpContext, policy, policyAuthorizationResult);
|
||||
|
||||
authenticationServiceMock.Verify(service => service.ChallengeAsync(httpContext, null, null), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task ForbidEachAuthenticationScheme_If_PolicyAuthorizationResultWasForbidden()
|
||||
{
|
||||
var authenticationServiceMock = new Mock<IAuthenticationService>();
|
||||
var requestDelegate = new Mock<RequestDelegate>();
|
||||
var httpContext = CreateHttpContext(authenticationServiceMock.Object);
|
||||
var firstScheme = Guid.NewGuid().ToString();
|
||||
var secondScheme = Guid.NewGuid().ToString();
|
||||
var thirdScheme = Guid.NewGuid().ToString();
|
||||
var policy = new AuthorizationPolicyBuilder()
|
||||
.RequireAuthenticatedUser()
|
||||
.AddAuthenticationSchemes(firstScheme, secondScheme, thirdScheme)
|
||||
.Build();
|
||||
var policyAuthorizationResult = PolicyAuthorizationResult.Forbid();
|
||||
var handler = CreateAuthorizationMiddlewareResultHandler();
|
||||
|
||||
await handler.HandleAsync(requestDelegate.Object, httpContext, policy, policyAuthorizationResult);
|
||||
|
||||
authenticationServiceMock.Verify(service => service.ForbidAsync(httpContext, It.IsAny<string>(), null), Times.Exactly(3));
|
||||
authenticationServiceMock.Verify(service => service.ForbidAsync(httpContext, firstScheme, null), Times.Once);
|
||||
authenticationServiceMock.Verify(service => service.ForbidAsync(httpContext, secondScheme, null), Times.Once);
|
||||
authenticationServiceMock.Verify(service => service.ForbidAsync(httpContext, thirdScheme, null), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task ForbidWithoutAuthenticationScheme_If_PolicyAuthorizationResultWasForbidden()
|
||||
{
|
||||
var authenticationServiceMock = new Mock<IAuthenticationService>();
|
||||
var requestDelegate = new Mock<RequestDelegate>();
|
||||
var httpContext = CreateHttpContext(authenticationServiceMock.Object);
|
||||
var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
|
||||
var policyAuthorizationResult = PolicyAuthorizationResult.Forbid();
|
||||
var handler = CreateAuthorizationMiddlewareResultHandler();
|
||||
|
||||
await handler.HandleAsync(requestDelegate.Object, httpContext, policy, policyAuthorizationResult);
|
||||
|
||||
authenticationServiceMock.Verify(service => service.ForbidAsync(httpContext, null, null), Times.Once);
|
||||
}
|
||||
|
||||
private HttpContext CreateHttpContext(IAuthenticationService authenticationService = null)
|
||||
{
|
||||
var services = new ServiceCollection();
|
||||
|
||||
services.AddTransient(provider => authenticationService ?? new Mock<IAuthenticationService>().Object);
|
||||
|
||||
var serviceProvider = services.BuildServiceProvider();
|
||||
|
||||
return new DefaultHttpContext { RequestServices = serviceProvider };
|
||||
}
|
||||
|
||||
private AuthorizationMiddlewareResultHandler CreateAuthorizationMiddlewareResultHandler() => new AuthorizationMiddlewareResultHandler();
|
||||
}
|
||||
}
|
||||
|
|
@ -5,9 +5,9 @@ using System;
|
|||
using System.Security.Claims;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Authentication;
|
||||
using Microsoft.AspNetCore.Authorization.Policy;
|
||||
using Microsoft.AspNetCore.Authorization.Test.TestObjects;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Http.Features;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
|
@ -449,6 +449,7 @@ namespace Microsoft.AspNetCore.Authorization.Test
|
|||
authenticationService = authenticationService ?? Mock.Of<IAuthenticationService>();
|
||||
|
||||
serviceCollection.AddSingleton(authenticationService);
|
||||
serviceCollection.AddTransient<IAuthorizationMiddlewareResultHandler, AuthorizationMiddlewareResultHandler>();
|
||||
serviceCollection.AddOptions();
|
||||
serviceCollection.AddLogging();
|
||||
serviceCollection.AddAuthorization();
|
||||
|
|
|
|||
|
|
@ -1221,7 +1221,7 @@ namespace Microsoft.AspNetCore.Authorization.Test
|
|||
Assert.Equal("UserAuthorizationFailed", eventId.Name);
|
||||
var message = formatter(state, exception);
|
||||
|
||||
Assert.Equal("Authorization failed for These requirements were not met:" + Environment.NewLine + "LogRequirement" + Environment.NewLine + "LogRequirement", message);
|
||||
Assert.Equal("Authorization failed. These requirements were not met:" + Environment.NewLine + "LogRequirement" + Environment.NewLine + "LogRequirement", message);
|
||||
}
|
||||
|
||||
var authorizationService = BuildAuthorizationService(services =>
|
||||
|
|
@ -1241,7 +1241,7 @@ namespace Microsoft.AspNetCore.Authorization.Test
|
|||
|
||||
// Assert
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public async Task Authorize_ShouldLogExplicitFailedWhenFailedCall()
|
||||
{
|
||||
|
|
@ -1254,7 +1254,7 @@ namespace Microsoft.AspNetCore.Authorization.Test
|
|||
Assert.Equal("UserAuthorizationFailed", eventId.Name);
|
||||
var message = formatter(state, exception);
|
||||
|
||||
Assert.Equal("Authorization failed for Fail() was explicitly called.", message);
|
||||
Assert.Equal("Authorization failed. Fail() was explicitly called.", message);
|
||||
}
|
||||
|
||||
var authorizationService = BuildAuthorizationService(services =>
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.Authorization.Test
|
|||
{
|
||||
return new DenyAnonymousAuthorizationRequirement();
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public void ToString_ShouldReturnFormatValue()
|
||||
{
|
||||
|
|
@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Authorization.Test
|
|||
var formattedValue = requirement.ToString();
|
||||
|
||||
// Assert
|
||||
Assert.Equal("DenyAnonymousAuthorizationRequirement:Requires an authenticated user.", formattedValue);
|
||||
Assert.Equal("DenyAnonymousAuthorizationRequirement: Requires an authenticated user.", formattedValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ using System.Threading.Tasks;
|
|||
using Microsoft.AspNetCore.Authentication;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Authorization.Policy.Test
|
||||
|
|
@ -120,6 +121,28 @@ namespace Microsoft.AspNetCore.Authorization.Policy.Test
|
|||
Assert.True(result.Forbidden);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task AuthorizeForbidsAndFailureIsIncludedIfAuthenticationSuceeds()
|
||||
{
|
||||
// Arrange
|
||||
var evaluator = BuildEvaluator();
|
||||
var context = new DefaultHttpContext();
|
||||
var policy = new AuthorizationPolicyBuilder()
|
||||
.AddRequirements(new DummyRequirement())
|
||||
.RequireAssertion(_ => false)
|
||||
.Build();
|
||||
|
||||
// Act
|
||||
var result = await evaluator.AuthorizeAsync(policy, AuthenticateResult.Success(new AuthenticationTicket(new ClaimsPrincipal(), "scheme")), context, resource: null);
|
||||
|
||||
// Assert
|
||||
Assert.False(result.Succeeded);
|
||||
Assert.False(result.Challenged);
|
||||
Assert.True(result.Forbidden);
|
||||
Assert.NotNull(result.AuthorizationFailure);
|
||||
Assert.Contains(result.AuthorizationFailure.FailedRequirements, requirement => requirement is DummyRequirement);
|
||||
}
|
||||
|
||||
private IPolicyEvaluator BuildEvaluator(Action<IServiceCollection> setupServices = null)
|
||||
{
|
||||
var services = new ServiceCollection()
|
||||
|
|
@ -204,5 +227,6 @@ namespace Microsoft.AspNetCore.Authorization.Policy.Test
|
|||
}
|
||||
}
|
||||
|
||||
private class DummyRequirement : IAuthorizationRequirement {}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
using System.Security.Claims;
|
||||
using System.Text.Encodings.Web;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Authentication;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace CustomAuthorizationFailureResponse.Authentication
|
||||
{
|
||||
public class SampleAuthenticationHandler : AuthenticationHandler<AuthenticationSchemeOptions>
|
||||
{
|
||||
private readonly ClaimsPrincipal _id;
|
||||
|
||||
public SampleAuthenticationHandler(IOptionsMonitor<AuthenticationSchemeOptions> options, ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock) : base(options, logger, encoder, clock)
|
||||
{
|
||||
_id = new ClaimsPrincipal(new ClaimsIdentity("Api"));
|
||||
}
|
||||
|
||||
protected override Task<AuthenticateResult> HandleAuthenticateAsync()
|
||||
=> Task.FromResult(AuthenticateResult.Success(new AuthenticationTicket(_id, "Api")));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
namespace CustomAuthorizationFailureResponse.Authentication
|
||||
{
|
||||
public static class SampleAuthenticationSchemes
|
||||
{
|
||||
public const string CustomScheme = "CustomScheme";
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
using System.Threading.Tasks;
|
||||
using CustomAuthorizationFailureResponse.Authorization.Requirements;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
|
||||
namespace CustomAuthorizationFailureResponse.Authorization.Handlers
|
||||
{
|
||||
public class SampleRequirementHandler : AuthorizationHandler<SampleRequirement>
|
||||
{
|
||||
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, SampleRequirement requirement)
|
||||
{
|
||||
// assuming the requirement was not met
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
using System.Threading.Tasks;
|
||||
using CustomAuthorizationFailureResponse.Authorization.Requirements;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
|
||||
namespace CustomAuthorizationFailureResponse.Authorization.Handlers
|
||||
{
|
||||
public class SampleWithCustomMessageRequirementHandler : AuthorizationHandler<SampleWithCustomMessageRequirement>
|
||||
{
|
||||
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, SampleWithCustomMessageRequirement requirement)
|
||||
{
|
||||
// assuming the requirement was not met
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
using Microsoft.AspNetCore.Authorization;
|
||||
|
||||
namespace CustomAuthorizationFailureResponse.Authorization.Requirements
|
||||
{
|
||||
public class SampleRequirement : IAuthorizationRequirement
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
using Microsoft.AspNetCore.Authorization;
|
||||
|
||||
namespace CustomAuthorizationFailureResponse.Authorization.Requirements
|
||||
{
|
||||
public class SampleWithCustomMessageRequirement : IAuthorizationRequirement
|
||||
{
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue