Merge branch 'release/5.0-rc2' into 'release/5.0'

This commit is contained in:
Doug Bunting 2020-09-25 14:00:59 -07:00
commit 4d7459e178
No known key found for this signature in database
GPG Key ID: EE41520987982C03
733 changed files with 21295 additions and 4104 deletions

View File

@ -51,6 +51,8 @@ variables:
/p:DotNetPublishUsingPipelines=$(_PublishUsingPipelines)
/p:DotNetArtifactsCategory=$(_DotNetArtifactsCategory)
# Do not log most Windows steps in official builds; this is the slowest job. Site extensions step always logs.
- name: WindowsArm64LogArgs
value: -ExcludeCIBinaryLog
- name: Windows64LogArgs
value: -ExcludeCIBinaryLog
- name: Windows86LogArgs
@ -59,12 +61,16 @@ variables:
value: -ExcludeCIBinaryLog
- name: WindowsInstallersLogArgs
value: -ExcludeCIBinaryLog
- name: WindowsArm64InstallersLogArgs
value: -ExcludeCIBinaryLog
- ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}:
- name: _BuildArgs
value: '/p:SkipTestBuild=true'
- name: _PublishArgs
value: ''
# Write binary logs for all main Windows build steps except the x86 one in public and PR builds.
- name: WindowsArm64LogArgs
value: /bl:artifacts/log/Release/Build.arm64.binlog
- name: Windows64LogArgs
value: /bl:artifacts/log/Release/Build.x64.binlog
- name: Windows86LogArgs
@ -73,6 +79,8 @@ variables:
value: /bl:artifacts/log/Release/Build.CodeSign.binlog
- name: WindowsInstallersLogArgs
value: /bl:artifacts/log/Release/Build.Installers.binlog
- name: WindowsArm64InstallersLogArgs
value: /bl:artifacts/log/Release/Build.Installers.Arm64.binlog
- ${{ if ne(variables['System.TeamProject'], 'internal') }}:
- name: _UseHelixOpenQueues
value: 'true'
@ -210,7 +218,7 @@ stages:
displayName: Build Installers
# A few files must also go to the VS package feed.
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), ne(variables['PostBuildSign'], 'true')) }}:
- task: NuGetCommand@2
displayName: Push Visual Studio packages
inputs:
@ -263,18 +271,6 @@ stages:
jobName: Windows_arm64_build
jobDisplayName: "Build: Windows ARM64"
agentOs: Windows
buildArgs:
-arch arm64
-sign
-pack
-noBuildNodeJS
-noBuildJava
/p:DotNetSignType=$(_SignType)
/p:OnlyPackPlatformSpecificPackages=true
/p:AssetManifestFileName=aspnetcore-win-arm64.xml
$(_BuildArgs)
$(_PublishArgs)
$(_InternalRuntimeDownloadArgs)
installNodeJs: false
installJdk: false
artifacts:
@ -286,6 +282,47 @@ stages:
path: artifacts/packages/
- name: Windows_arm64_Installers
path: artifacts/installers/
steps:
- script: ./build.cmd
-ci
-arch arm64
-sign
-pack
-noBuildJava
-noBuildNative
/p:DotNetSignType=$(_SignType)
/p:OnlyPackPlatformSpecificPackages=true
$(_BuildArgs)
$(_InternalRuntimeDownloadArgs)
$(WindowsArm64LogArgs)
displayName: Build ARM64
# Windows installers bundle for arm64
- script: ./build.cmd
-ci
-noBuildRepoTasks
-arch arm64
-sign
-buildInstallers
-noBuildNative
/p:DotNetSignType=$(_SignType)
/p:AssetManifestFileName=aspnetcore-win-arm64.xml
$(_BuildArgs)
$(_PublishArgs)
$(_InternalRuntimeDownloadArgs)
$(WindowsArm64InstallersLogArgs)
displayName: Build Arm64 Installers
# A few files must also go to the VS package feed.
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- task: NuGetCommand@2
displayName: Push Visual Studio packages
inputs:
command: push
packagesToPush: 'artifacts/packages/**/VS.Redist.Common.AspNetCore.*.nupkg'
nuGetFeedType: external
publishFeedCredentials: 'DevDiv - VS package feed'
# Build MacOS
- template: jobs/default-build.yml
@ -573,6 +610,7 @@ stages:
jobName: MacOS_Test
jobDisplayName: "Test: macOS 10.14"
agentOs: macOS
timeoutInMinutes: 240
isTestingJob: true
buildArgs: --all --test "/p:RunTemplateTests=false /p:SkipHelixReadyTests=true" $(_InternalRuntimeDownloadArgs)
beforeBuild:
@ -621,17 +659,18 @@ stages:
timeoutInMinutes: 240
steps:
# Build the shared framework
- script: ./build.cmd -ci -nobl -all -pack -arch x64 /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log
- script: ./build.cmd -ci -nobl -all -pack -arch x64 /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log $(_InternalRuntimeDownloadArgs)
displayName: Build shared fx
- script: ./build.cmd -ci -nobl -noBuildRepoTasks -restore -noBuild -noBuildNative -projects src/Grpc/**/*.csproj
- script: ./build.cmd -ci -nobl -noBuildRepoTasks -restore -noBuild -noBuildNative -projects src/Grpc/**/*.csproj $(_InternalRuntimeDownloadArgs)
displayName: Restore interop projects
- script: ./build.cmd -ci -nobl -noBuildRepoTasks -noRestore -test -all -noBuildNative -projects eng\helix\helix.proj
/p:IsRequiredCheck=true /p:IsHelixJob=true /p:BuildInteropProjects=true /p:RunTemplateTests=true
/p:IsRequiredCheck=true /p:IsHelixJob=true /p:BuildInteropProjects=true /p:RunTemplateTests=true $(_InternalRuntimeDownloadArgs)
/p:ASPNETCORE_TEST_LOG_DIR=artifacts/log
displayName: Run build.cmd helix target
env:
HelixApiAccessToken: $(HelixApiAccessToken) # Needed for internal queues
SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops
artifacts:
- name: Helix_logs
path: artifacts/log/
@ -665,7 +704,7 @@ stages:
arguments: $(Build.SourcesDirectory)/NuGet.config $Token
env:
Token: $(dn-bot-dnceng-artifact-feeds-rw)
- script: ./eng/scripts/ci-source-build.sh --ci --nobl --configuration Release /p:BuildManaged=true /p:BuildNodeJs=false
- script: ./eng/scripts/ci-source-build.sh --ci --nobl --configuration Release /p:BuildManaged=true /p:BuildNodeJs=false $(_InternalRuntimeDownloadArgs)
displayName: Run ci-source-build.sh
- task: PublishBuildArtifacts@1
displayName: Upload logs
@ -711,6 +750,7 @@ stages:
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- template: /eng/common/templates/post-build/post-build.yml
parameters:
publishingInfraVersion: 3
enableSymbolValidation: false
enableSigningValidation: false
enableNugetValidation: false

View File

@ -50,10 +50,10 @@ jobs:
agentOs: Linux
timeoutInMinutes: 480
steps:
- script: ./restore.sh -ci -nobl
- script: ./restore.sh --ci --nobl --arch arm64
displayName: Restore
- script: ./build.sh --ci --nobl --noBuildRepoTasks --arch arm64 -test --no-build-nodejs --all --projects
$(Build.SourcesDirectory)/eng/helix/helix.proj /p:IsHelixJob=true /p:IsHelixDaily=true
- script: ./build.sh --ci --nobl --arch arm64 --noBuildRepoTasks --no-build-nodejs --no-restore --test --all
--projects $(Build.SourcesDirectory)/eng/helix/helix.proj /p:IsHelixJob=true /p:IsHelixDaily=true
/p:ASPNETCORE_TEST_LOG_DIR=artifacts/log
displayName: Run build.sh helix arm64 target
env:

View File

@ -59,7 +59,7 @@ jobs:
- powershell: "& ./build.ps1 -CI -nobl -all -pack -NoBuildJava"
displayName: Build
# The templates part can be removed when the Blazor Templates run on Helix
- script: ./src/ProjectTemplates/build.cmd -ci -nobl -pack -NoRestore -NoBuilddeps "/p:RunTemplateTests=true"
- script: ./src/ProjectTemplates/build.cmd -ci -nobl -pack -NoRestore -NoBuildNative -NoBuilddeps "/p:RunTemplateTests=true"
displayName: Pack Templates
- script: ./build.cmd -ci -nobl -test -NoRestore -NoBuild -NoBuilddeps "/p:RunTemplateTests=true /p:RunQuarantinedTests=true /p:SkipHelixReadyTests=true"
displayName: Run Quarantined Tests
@ -86,7 +86,7 @@ jobs:
jobName: MacOS_Quarantined_Test
jobDisplayName: "Tests: macOS 10.14"
agentOs: macOS
timeoutInMinutes: 60
timeoutInMinutes: 120
isTestingJob: true
steps:
- bash: ./build.sh --all --pack --ci --nobl --no-build-java

View File

@ -53,11 +53,11 @@ jobs:
agentOs: Linux
timeoutInMinutes: 480
steps:
- script: ./restore.sh -ci -nobl
- script: ./restore.sh --ci --nobl --arch arm64
displayName: Restore
- script: ./build.sh --ci --nobl --noBuildRepoTasks --arch arm64 -test --no-build-nodejs --all --projects
$(Build.SourcesDirectory)/eng/helix/helix.proj /p:IsHelixJob=true /p:IsHelixDaily=true /p:RunQuarantinedTests=true
/p:ASPNETCORE_TEST_LOG_DIR=artifacts/log
- script: ./build.sh --ci --nobl --arch arm64 --noBuildRepoTasks --no-build-nodejs --no-restore --test --all
--projects $(Build.SourcesDirectory)/eng/helix/helix.proj /p:IsHelixJob=true /p:IsHelixDaily=true
/p:RunQuarantinedTests=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log
displayName: Run build.sh helix arm64 target
continueOnError: true
env:

View File

@ -1391,10 +1391,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ServerComparison.Functional
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Testing.Tests", "src\Testing\test\Microsoft.AspNetCore.Testing.Tests.csproj", "{1542DC58-1836-4191-A9C5-51D1716D2543}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Web.Extensions", "Web.Extensions", "{F71FE795-9923-461B-9809-BB1821A276D0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Components.Web.Extensions", "src\Components\Web.Extensions\src\Microsoft.AspNetCore.Components.Web.Extensions.csproj", "{8294A74F-7DAA-4B69-BC56-7634D93C9693}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sdk", "Sdk", "{FED4267E-E5E4-49C5-98DB-8B3F203596EE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.NET.Sdk.BlazorWebAssembly", "src\Components\WebAssembly\Sdk\src\Microsoft.NET.Sdk.BlazorWebAssembly.csproj", "{6B2734BF-C61D-4889-ABBF-456A4075D59B}"
@ -1487,11 +1483,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Diagno
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.JSInterop.Tests", "src\JSInterop\Microsoft.JSInterop\test\Microsoft.JSInterop.Tests.csproj", "{DAAB6B35-CBD2-4573-B633-CDD42F583A0E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ProtectedBrowserStorage", "ProtectedBrowserStorage", "{1B06FD32-3A1D-46A4-B2AF-99159FAD8127}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Components.ProtectedBrowserStorage", "src\Components\ProtectedBrowserStorage\src\Microsoft.AspNetCore.Components.ProtectedBrowserStorage.csproj", "{9059AC97-7547-4CC1-A076-680CBCCC1F33}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Components.ProtectedBrowserStorage.Tests", "src\Components\ProtectedBrowserStorage\test\Microsoft.AspNetCore.Components.ProtectedBrowserStorage.Tests.csproj", "{943FD3EC-D330-4277-B3F3-3DFABB57D3B5}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Configuration.KeyPerFile", "src\Configuration.KeyPerFile\src\Microsoft.Extensions.Configuration.KeyPerFile.csproj", "{498A4F54-F11A-46C5-A58D-09DE56C6A034}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Configuration.KeyPerFile", "Configuration.KeyPerFile", "{AEB1933E-9369-4305-B20E-F186F888158F}"
@ -1506,6 +1497,48 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.FilePr
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.FileProviders.Embedded.Tests", "src\FileProviders\Embedded\test\Microsoft.Extensions.FileProviders.Embedded.Tests.csproj", "{B06ADD57-E855-4D8C-85DC-B323509AE540}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.App.Ref", "src\Framework\App.Ref\src\Microsoft.AspNetCore.App.Ref.csproj", "{BAD47859-95DF-4C8F-9AF7-C48B68F478A1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.App.UnitTests", "src\Framework\test\Microsoft.AspNetCore.App.UnitTests.csproj", "{010A9638-F20E-4FE6-A186-85732BFC9CB0}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Localization", "Localization", "{3D34C81F-2CB5-459E-87E9-0CC04757A2A0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GlobalizationWasmApp", "src\Components\test\testassets\GlobalizationWasmApp\GlobalizationWasmApp.csproj", "{04CFE286-6D32-41EF-8887-4B5F8086A365}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Localization.Abstractions", "src\Localization\Abstractions\src\Microsoft.Extensions.Localization.Abstractions.csproj", "{FEF97646-9BC9-4D1B-A939-784D915C18A4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Localization", "src\Localization\Localization\src\Microsoft.Extensions.Localization.csproj", "{839CE175-E0D9-43B9-9FA8-F32C47E7F56B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Localization.RootNamespace.Tests", "src\Localization\Localization\test\Microsoft.Extensions.Localization.RootNamespace.Tests\Microsoft.Extensions.Localization.RootNamespace.Tests.csproj", "{50BF2926-7435-4F4B-88A9-3D0EDEB67FC8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Localization.Tests", "src\Localization\Localization\test\Microsoft.Extensions.Localization.Tests\Microsoft.Extensions.Localization.Tests.csproj", "{16B899B4-A4F4-4EF7-93BB-355861977A12}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Logging.AzureAppServices", "Logging.AzureAppServices", "{3EAB9890-2C01-444C-ACA0-D77B29CDE08B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.AzureAppServices", "src\Logging.AzureAppServices\src\Microsoft.Extensions.Logging.AzureAppServices.csproj", "{3E29454A-C4DC-44B7-AF0A-A782AD2E73BC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.AzureAppServices.Tests", "src\Logging.AzureAppServices\test\Microsoft.Extensions.Logging.AzureAppServices.Tests.csproj", "{43E3B132-2486-44A3-92C6-39E39724FAFD}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SiteExtensions", "SiteExtensions", "{DFC4F588-B4B4-484B-AB93-B36721374AD3}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LoggingAggregate", "LoggingAggregate", "{48FF1D87-5066-4294-B802-2D1B478C6EB6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.AzureAppServices.SiteExtension", "src\SiteExtensions\LoggingAggregate\src\Microsoft.AspNetCore.AzureAppServices.SiteExtension\Microsoft.AspNetCore.AzureAppServices.SiteExtension.csproj", "{563A3FFA-32DA-4ADA-891C-E00897BD919E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.AzureAppServices.SiteExtension.Tests", "src\SiteExtensions\LoggingAggregate\test\Microsoft.AspNetCore.AzureAppServices.SiteExtension.Tests\Microsoft.AspNetCore.AzureAppServices.SiteExtension.Tests.csproj", "{DC5DE087-5C93-4441-9D62-1743A50E5086}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LB", "src\SiteExtensions\LoggingBranch\LB.csproj", "{F00CE8C1-5715-4683-A8E5-C467B712AD46}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.Web.Xdt.Extensions", "Microsoft.Web.Xdt.Extensions", "{56B45580-B089-424E-A847-A6115D591950}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Web.Xdt.Extensions", "src\SiteExtensions\Microsoft.Web.Xdt.Extensions\src\Microsoft.Web.Xdt.Extensions.csproj", "{4382555A-E4CD-4DFC-B59B-408FD4E93530}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Web.Xdt.Extensions.Tests", "src\SiteExtensions\Microsoft.Web.Xdt.Extensions\tests\Microsoft.Web.Xdt.Extensions.Tests.csproj", "{545751D5-71FC-4889-A3A0-BBD731DBA18A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sdk", "Sdk", "{E83B0BCC-A8E0-4FBD-BE51-9A533C9CB972}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HostingStartup", "src\SiteExtensions\Sdk\HostingStartup\HostingStartup.csproj", "{5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -6664,18 +6697,6 @@ Global
{1542DC58-1836-4191-A9C5-51D1716D2543}.Release|x64.Build.0 = Release|Any CPU
{1542DC58-1836-4191-A9C5-51D1716D2543}.Release|x86.ActiveCfg = Release|Any CPU
{1542DC58-1836-4191-A9C5-51D1716D2543}.Release|x86.Build.0 = Release|Any CPU
{8294A74F-7DAA-4B69-BC56-7634D93C9693}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8294A74F-7DAA-4B69-BC56-7634D93C9693}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8294A74F-7DAA-4B69-BC56-7634D93C9693}.Debug|x64.ActiveCfg = Debug|Any CPU
{8294A74F-7DAA-4B69-BC56-7634D93C9693}.Debug|x64.Build.0 = Debug|Any CPU
{8294A74F-7DAA-4B69-BC56-7634D93C9693}.Debug|x86.ActiveCfg = Debug|Any CPU
{8294A74F-7DAA-4B69-BC56-7634D93C9693}.Debug|x86.Build.0 = Debug|Any CPU
{8294A74F-7DAA-4B69-BC56-7634D93C9693}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8294A74F-7DAA-4B69-BC56-7634D93C9693}.Release|Any CPU.Build.0 = Release|Any CPU
{8294A74F-7DAA-4B69-BC56-7634D93C9693}.Release|x64.ActiveCfg = Release|Any CPU
{8294A74F-7DAA-4B69-BC56-7634D93C9693}.Release|x64.Build.0 = Release|Any CPU
{8294A74F-7DAA-4B69-BC56-7634D93C9693}.Release|x86.ActiveCfg = Release|Any CPU
{8294A74F-7DAA-4B69-BC56-7634D93C9693}.Release|x86.Build.0 = Release|Any CPU
{6B2734BF-C61D-4889-ABBF-456A4075D59B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6B2734BF-C61D-4889-ABBF-456A4075D59B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6B2734BF-C61D-4889-ABBF-456A4075D59B}.Debug|x64.ActiveCfg = Debug|Any CPU
@ -7106,30 +7127,6 @@ Global
{DAAB6B35-CBD2-4573-B633-CDD42F583A0E}.Release|x64.Build.0 = Release|Any CPU
{DAAB6B35-CBD2-4573-B633-CDD42F583A0E}.Release|x86.ActiveCfg = Release|Any CPU
{DAAB6B35-CBD2-4573-B633-CDD42F583A0E}.Release|x86.Build.0 = Release|Any CPU
{9059AC97-7547-4CC1-A076-680CBCCC1F33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9059AC97-7547-4CC1-A076-680CBCCC1F33}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9059AC97-7547-4CC1-A076-680CBCCC1F33}.Debug|x64.ActiveCfg = Debug|Any CPU
{9059AC97-7547-4CC1-A076-680CBCCC1F33}.Debug|x64.Build.0 = Debug|Any CPU
{9059AC97-7547-4CC1-A076-680CBCCC1F33}.Debug|x86.ActiveCfg = Debug|Any CPU
{9059AC97-7547-4CC1-A076-680CBCCC1F33}.Debug|x86.Build.0 = Debug|Any CPU
{9059AC97-7547-4CC1-A076-680CBCCC1F33}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9059AC97-7547-4CC1-A076-680CBCCC1F33}.Release|Any CPU.Build.0 = Release|Any CPU
{9059AC97-7547-4CC1-A076-680CBCCC1F33}.Release|x64.ActiveCfg = Release|Any CPU
{9059AC97-7547-4CC1-A076-680CBCCC1F33}.Release|x64.Build.0 = Release|Any CPU
{9059AC97-7547-4CC1-A076-680CBCCC1F33}.Release|x86.ActiveCfg = Release|Any CPU
{9059AC97-7547-4CC1-A076-680CBCCC1F33}.Release|x86.Build.0 = Release|Any CPU
{943FD3EC-D330-4277-B3F3-3DFABB57D3B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{943FD3EC-D330-4277-B3F3-3DFABB57D3B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{943FD3EC-D330-4277-B3F3-3DFABB57D3B5}.Debug|x64.ActiveCfg = Debug|Any CPU
{943FD3EC-D330-4277-B3F3-3DFABB57D3B5}.Debug|x64.Build.0 = Debug|Any CPU
{943FD3EC-D330-4277-B3F3-3DFABB57D3B5}.Debug|x86.ActiveCfg = Debug|Any CPU
{943FD3EC-D330-4277-B3F3-3DFABB57D3B5}.Debug|x86.Build.0 = Debug|Any CPU
{943FD3EC-D330-4277-B3F3-3DFABB57D3B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{943FD3EC-D330-4277-B3F3-3DFABB57D3B5}.Release|Any CPU.Build.0 = Release|Any CPU
{943FD3EC-D330-4277-B3F3-3DFABB57D3B5}.Release|x64.ActiveCfg = Release|Any CPU
{943FD3EC-D330-4277-B3F3-3DFABB57D3B5}.Release|x64.Build.0 = Release|Any CPU
{943FD3EC-D330-4277-B3F3-3DFABB57D3B5}.Release|x86.ActiveCfg = Release|Any CPU
{943FD3EC-D330-4277-B3F3-3DFABB57D3B5}.Release|x86.Build.0 = Release|Any CPU
{498A4F54-F11A-46C5-A58D-09DE56C6A034}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{498A4F54-F11A-46C5-A58D-09DE56C6A034}.Debug|Any CPU.Build.0 = Debug|Any CPU
{498A4F54-F11A-46C5-A58D-09DE56C6A034}.Debug|x64.ActiveCfg = Debug|Any CPU
@ -7190,6 +7187,186 @@ Global
{B06ADD57-E855-4D8C-85DC-B323509AE540}.Release|x64.Build.0 = Release|Any CPU
{B06ADD57-E855-4D8C-85DC-B323509AE540}.Release|x86.ActiveCfg = Release|Any CPU
{B06ADD57-E855-4D8C-85DC-B323509AE540}.Release|x86.Build.0 = Release|Any CPU
{BAD47859-95DF-4C8F-9AF7-C48B68F478A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BAD47859-95DF-4C8F-9AF7-C48B68F478A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BAD47859-95DF-4C8F-9AF7-C48B68F478A1}.Debug|x64.ActiveCfg = Debug|Any CPU
{BAD47859-95DF-4C8F-9AF7-C48B68F478A1}.Debug|x64.Build.0 = Debug|Any CPU
{BAD47859-95DF-4C8F-9AF7-C48B68F478A1}.Debug|x86.ActiveCfg = Debug|Any CPU
{BAD47859-95DF-4C8F-9AF7-C48B68F478A1}.Debug|x86.Build.0 = Debug|Any CPU
{BAD47859-95DF-4C8F-9AF7-C48B68F478A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BAD47859-95DF-4C8F-9AF7-C48B68F478A1}.Release|Any CPU.Build.0 = Release|Any CPU
{BAD47859-95DF-4C8F-9AF7-C48B68F478A1}.Release|x64.ActiveCfg = Release|Any CPU
{BAD47859-95DF-4C8F-9AF7-C48B68F478A1}.Release|x64.Build.0 = Release|Any CPU
{BAD47859-95DF-4C8F-9AF7-C48B68F478A1}.Release|x86.ActiveCfg = Release|Any CPU
{BAD47859-95DF-4C8F-9AF7-C48B68F478A1}.Release|x86.Build.0 = Release|Any CPU
{04CFE286-6D32-41EF-8887-4B5F8086A365}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{04CFE286-6D32-41EF-8887-4B5F8086A365}.Debug|Any CPU.Build.0 = Debug|Any CPU
{04CFE286-6D32-41EF-8887-4B5F8086A365}.Debug|x64.ActiveCfg = Debug|Any CPU
{04CFE286-6D32-41EF-8887-4B5F8086A365}.Debug|x64.Build.0 = Debug|Any CPU
{04CFE286-6D32-41EF-8887-4B5F8086A365}.Debug|x86.ActiveCfg = Debug|Any CPU
{04CFE286-6D32-41EF-8887-4B5F8086A365}.Debug|x86.Build.0 = Debug|Any CPU
{04CFE286-6D32-41EF-8887-4B5F8086A365}.Release|Any CPU.ActiveCfg = Release|Any CPU
{04CFE286-6D32-41EF-8887-4B5F8086A365}.Release|Any CPU.Build.0 = Release|Any CPU
{04CFE286-6D32-41EF-8887-4B5F8086A365}.Release|x64.ActiveCfg = Release|Any CPU
{04CFE286-6D32-41EF-8887-4B5F8086A365}.Release|x64.Build.0 = Release|Any CPU
{04CFE286-6D32-41EF-8887-4B5F8086A365}.Release|x86.ActiveCfg = Release|Any CPU
{04CFE286-6D32-41EF-8887-4B5F8086A365}.Release|x86.Build.0 = Release|Any CPU
{010A9638-F20E-4FE6-A186-85732BFC9CB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{010A9638-F20E-4FE6-A186-85732BFC9CB0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{010A9638-F20E-4FE6-A186-85732BFC9CB0}.Debug|x64.ActiveCfg = Debug|Any CPU
{010A9638-F20E-4FE6-A186-85732BFC9CB0}.Debug|x64.Build.0 = Debug|Any CPU
{010A9638-F20E-4FE6-A186-85732BFC9CB0}.Debug|x86.ActiveCfg = Debug|Any CPU
{010A9638-F20E-4FE6-A186-85732BFC9CB0}.Debug|x86.Build.0 = Debug|Any CPU
{010A9638-F20E-4FE6-A186-85732BFC9CB0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{010A9638-F20E-4FE6-A186-85732BFC9CB0}.Release|Any CPU.Build.0 = Release|Any CPU
{010A9638-F20E-4FE6-A186-85732BFC9CB0}.Release|x64.ActiveCfg = Release|Any CPU
{010A9638-F20E-4FE6-A186-85732BFC9CB0}.Release|x64.Build.0 = Release|Any CPU
{010A9638-F20E-4FE6-A186-85732BFC9CB0}.Release|x86.ActiveCfg = Release|Any CPU
{010A9638-F20E-4FE6-A186-85732BFC9CB0}.Release|x86.Build.0 = Release|Any CPU
{FEF97646-9BC9-4D1B-A939-784D915C18A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FEF97646-9BC9-4D1B-A939-784D915C18A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FEF97646-9BC9-4D1B-A939-784D915C18A4}.Debug|x64.ActiveCfg = Debug|Any CPU
{FEF97646-9BC9-4D1B-A939-784D915C18A4}.Debug|x64.Build.0 = Debug|Any CPU
{FEF97646-9BC9-4D1B-A939-784D915C18A4}.Debug|x86.ActiveCfg = Debug|Any CPU
{FEF97646-9BC9-4D1B-A939-784D915C18A4}.Debug|x86.Build.0 = Debug|Any CPU
{FEF97646-9BC9-4D1B-A939-784D915C18A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FEF97646-9BC9-4D1B-A939-784D915C18A4}.Release|Any CPU.Build.0 = Release|Any CPU
{FEF97646-9BC9-4D1B-A939-784D915C18A4}.Release|x64.ActiveCfg = Release|Any CPU
{FEF97646-9BC9-4D1B-A939-784D915C18A4}.Release|x64.Build.0 = Release|Any CPU
{FEF97646-9BC9-4D1B-A939-784D915C18A4}.Release|x86.ActiveCfg = Release|Any CPU
{FEF97646-9BC9-4D1B-A939-784D915C18A4}.Release|x86.Build.0 = Release|Any CPU
{839CE175-E0D9-43B9-9FA8-F32C47E7F56B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{839CE175-E0D9-43B9-9FA8-F32C47E7F56B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{839CE175-E0D9-43B9-9FA8-F32C47E7F56B}.Debug|x64.ActiveCfg = Debug|Any CPU
{839CE175-E0D9-43B9-9FA8-F32C47E7F56B}.Debug|x64.Build.0 = Debug|Any CPU
{839CE175-E0D9-43B9-9FA8-F32C47E7F56B}.Debug|x86.ActiveCfg = Debug|Any CPU
{839CE175-E0D9-43B9-9FA8-F32C47E7F56B}.Debug|x86.Build.0 = Debug|Any CPU
{839CE175-E0D9-43B9-9FA8-F32C47E7F56B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{839CE175-E0D9-43B9-9FA8-F32C47E7F56B}.Release|Any CPU.Build.0 = Release|Any CPU
{839CE175-E0D9-43B9-9FA8-F32C47E7F56B}.Release|x64.ActiveCfg = Release|Any CPU
{839CE175-E0D9-43B9-9FA8-F32C47E7F56B}.Release|x64.Build.0 = Release|Any CPU
{839CE175-E0D9-43B9-9FA8-F32C47E7F56B}.Release|x86.ActiveCfg = Release|Any CPU
{839CE175-E0D9-43B9-9FA8-F32C47E7F56B}.Release|x86.Build.0 = Release|Any CPU
{50BF2926-7435-4F4B-88A9-3D0EDEB67FC8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{50BF2926-7435-4F4B-88A9-3D0EDEB67FC8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{50BF2926-7435-4F4B-88A9-3D0EDEB67FC8}.Debug|x64.ActiveCfg = Debug|Any CPU
{50BF2926-7435-4F4B-88A9-3D0EDEB67FC8}.Debug|x64.Build.0 = Debug|Any CPU
{50BF2926-7435-4F4B-88A9-3D0EDEB67FC8}.Debug|x86.ActiveCfg = Debug|Any CPU
{50BF2926-7435-4F4B-88A9-3D0EDEB67FC8}.Debug|x86.Build.0 = Debug|Any CPU
{50BF2926-7435-4F4B-88A9-3D0EDEB67FC8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{50BF2926-7435-4F4B-88A9-3D0EDEB67FC8}.Release|Any CPU.Build.0 = Release|Any CPU
{50BF2926-7435-4F4B-88A9-3D0EDEB67FC8}.Release|x64.ActiveCfg = Release|Any CPU
{50BF2926-7435-4F4B-88A9-3D0EDEB67FC8}.Release|x64.Build.0 = Release|Any CPU
{50BF2926-7435-4F4B-88A9-3D0EDEB67FC8}.Release|x86.ActiveCfg = Release|Any CPU
{50BF2926-7435-4F4B-88A9-3D0EDEB67FC8}.Release|x86.Build.0 = Release|Any CPU
{16B899B4-A4F4-4EF7-93BB-355861977A12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{16B899B4-A4F4-4EF7-93BB-355861977A12}.Debug|Any CPU.Build.0 = Debug|Any CPU
{16B899B4-A4F4-4EF7-93BB-355861977A12}.Debug|x64.ActiveCfg = Debug|Any CPU
{16B899B4-A4F4-4EF7-93BB-355861977A12}.Debug|x64.Build.0 = Debug|Any CPU
{16B899B4-A4F4-4EF7-93BB-355861977A12}.Debug|x86.ActiveCfg = Debug|Any CPU
{16B899B4-A4F4-4EF7-93BB-355861977A12}.Debug|x86.Build.0 = Debug|Any CPU
{16B899B4-A4F4-4EF7-93BB-355861977A12}.Release|Any CPU.ActiveCfg = Release|Any CPU
{16B899B4-A4F4-4EF7-93BB-355861977A12}.Release|Any CPU.Build.0 = Release|Any CPU
{16B899B4-A4F4-4EF7-93BB-355861977A12}.Release|x64.ActiveCfg = Release|Any CPU
{16B899B4-A4F4-4EF7-93BB-355861977A12}.Release|x64.Build.0 = Release|Any CPU
{16B899B4-A4F4-4EF7-93BB-355861977A12}.Release|x86.ActiveCfg = Release|Any CPU
{16B899B4-A4F4-4EF7-93BB-355861977A12}.Release|x86.Build.0 = Release|Any CPU
{3E29454A-C4DC-44B7-AF0A-A782AD2E73BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E29454A-C4DC-44B7-AF0A-A782AD2E73BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E29454A-C4DC-44B7-AF0A-A782AD2E73BC}.Debug|x64.ActiveCfg = Debug|Any CPU
{3E29454A-C4DC-44B7-AF0A-A782AD2E73BC}.Debug|x64.Build.0 = Debug|Any CPU
{3E29454A-C4DC-44B7-AF0A-A782AD2E73BC}.Debug|x86.ActiveCfg = Debug|Any CPU
{3E29454A-C4DC-44B7-AF0A-A782AD2E73BC}.Debug|x86.Build.0 = Debug|Any CPU
{3E29454A-C4DC-44B7-AF0A-A782AD2E73BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E29454A-C4DC-44B7-AF0A-A782AD2E73BC}.Release|Any CPU.Build.0 = Release|Any CPU
{3E29454A-C4DC-44B7-AF0A-A782AD2E73BC}.Release|x64.ActiveCfg = Release|Any CPU
{3E29454A-C4DC-44B7-AF0A-A782AD2E73BC}.Release|x64.Build.0 = Release|Any CPU
{3E29454A-C4DC-44B7-AF0A-A782AD2E73BC}.Release|x86.ActiveCfg = Release|Any CPU
{3E29454A-C4DC-44B7-AF0A-A782AD2E73BC}.Release|x86.Build.0 = Release|Any CPU
{43E3B132-2486-44A3-92C6-39E39724FAFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{43E3B132-2486-44A3-92C6-39E39724FAFD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{43E3B132-2486-44A3-92C6-39E39724FAFD}.Debug|x64.ActiveCfg = Debug|Any CPU
{43E3B132-2486-44A3-92C6-39E39724FAFD}.Debug|x64.Build.0 = Debug|Any CPU
{43E3B132-2486-44A3-92C6-39E39724FAFD}.Debug|x86.ActiveCfg = Debug|Any CPU
{43E3B132-2486-44A3-92C6-39E39724FAFD}.Debug|x86.Build.0 = Debug|Any CPU
{43E3B132-2486-44A3-92C6-39E39724FAFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{43E3B132-2486-44A3-92C6-39E39724FAFD}.Release|Any CPU.Build.0 = Release|Any CPU
{43E3B132-2486-44A3-92C6-39E39724FAFD}.Release|x64.ActiveCfg = Release|Any CPU
{43E3B132-2486-44A3-92C6-39E39724FAFD}.Release|x64.Build.0 = Release|Any CPU
{43E3B132-2486-44A3-92C6-39E39724FAFD}.Release|x86.ActiveCfg = Release|Any CPU
{43E3B132-2486-44A3-92C6-39E39724FAFD}.Release|x86.Build.0 = Release|Any CPU
{563A3FFA-32DA-4ADA-891C-E00897BD919E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{563A3FFA-32DA-4ADA-891C-E00897BD919E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{563A3FFA-32DA-4ADA-891C-E00897BD919E}.Debug|x64.ActiveCfg = Debug|Any CPU
{563A3FFA-32DA-4ADA-891C-E00897BD919E}.Debug|x64.Build.0 = Debug|Any CPU
{563A3FFA-32DA-4ADA-891C-E00897BD919E}.Debug|x86.ActiveCfg = Debug|Any CPU
{563A3FFA-32DA-4ADA-891C-E00897BD919E}.Debug|x86.Build.0 = Debug|Any CPU
{563A3FFA-32DA-4ADA-891C-E00897BD919E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{563A3FFA-32DA-4ADA-891C-E00897BD919E}.Release|Any CPU.Build.0 = Release|Any CPU
{563A3FFA-32DA-4ADA-891C-E00897BD919E}.Release|x64.ActiveCfg = Release|Any CPU
{563A3FFA-32DA-4ADA-891C-E00897BD919E}.Release|x64.Build.0 = Release|Any CPU
{563A3FFA-32DA-4ADA-891C-E00897BD919E}.Release|x86.ActiveCfg = Release|Any CPU
{563A3FFA-32DA-4ADA-891C-E00897BD919E}.Release|x86.Build.0 = Release|Any CPU
{DC5DE087-5C93-4441-9D62-1743A50E5086}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DC5DE087-5C93-4441-9D62-1743A50E5086}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DC5DE087-5C93-4441-9D62-1743A50E5086}.Debug|x64.ActiveCfg = Debug|Any CPU
{DC5DE087-5C93-4441-9D62-1743A50E5086}.Debug|x64.Build.0 = Debug|Any CPU
{DC5DE087-5C93-4441-9D62-1743A50E5086}.Debug|x86.ActiveCfg = Debug|Any CPU
{DC5DE087-5C93-4441-9D62-1743A50E5086}.Debug|x86.Build.0 = Debug|Any CPU
{DC5DE087-5C93-4441-9D62-1743A50E5086}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DC5DE087-5C93-4441-9D62-1743A50E5086}.Release|Any CPU.Build.0 = Release|Any CPU
{DC5DE087-5C93-4441-9D62-1743A50E5086}.Release|x64.ActiveCfg = Release|Any CPU
{DC5DE087-5C93-4441-9D62-1743A50E5086}.Release|x64.Build.0 = Release|Any CPU
{DC5DE087-5C93-4441-9D62-1743A50E5086}.Release|x86.ActiveCfg = Release|Any CPU
{DC5DE087-5C93-4441-9D62-1743A50E5086}.Release|x86.Build.0 = Release|Any CPU
{F00CE8C1-5715-4683-A8E5-C467B712AD46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F00CE8C1-5715-4683-A8E5-C467B712AD46}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F00CE8C1-5715-4683-A8E5-C467B712AD46}.Debug|x64.ActiveCfg = Debug|Any CPU
{F00CE8C1-5715-4683-A8E5-C467B712AD46}.Debug|x64.Build.0 = Debug|Any CPU
{F00CE8C1-5715-4683-A8E5-C467B712AD46}.Debug|x86.ActiveCfg = Debug|Any CPU
{F00CE8C1-5715-4683-A8E5-C467B712AD46}.Debug|x86.Build.0 = Debug|Any CPU
{F00CE8C1-5715-4683-A8E5-C467B712AD46}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F00CE8C1-5715-4683-A8E5-C467B712AD46}.Release|Any CPU.Build.0 = Release|Any CPU
{F00CE8C1-5715-4683-A8E5-C467B712AD46}.Release|x64.ActiveCfg = Release|Any CPU
{F00CE8C1-5715-4683-A8E5-C467B712AD46}.Release|x64.Build.0 = Release|Any CPU
{F00CE8C1-5715-4683-A8E5-C467B712AD46}.Release|x86.ActiveCfg = Release|Any CPU
{F00CE8C1-5715-4683-A8E5-C467B712AD46}.Release|x86.Build.0 = Release|Any CPU
{4382555A-E4CD-4DFC-B59B-408FD4E93530}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4382555A-E4CD-4DFC-B59B-408FD4E93530}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4382555A-E4CD-4DFC-B59B-408FD4E93530}.Debug|x64.ActiveCfg = Debug|Any CPU
{4382555A-E4CD-4DFC-B59B-408FD4E93530}.Debug|x64.Build.0 = Debug|Any CPU
{4382555A-E4CD-4DFC-B59B-408FD4E93530}.Debug|x86.ActiveCfg = Debug|Any CPU
{4382555A-E4CD-4DFC-B59B-408FD4E93530}.Debug|x86.Build.0 = Debug|Any CPU
{4382555A-E4CD-4DFC-B59B-408FD4E93530}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4382555A-E4CD-4DFC-B59B-408FD4E93530}.Release|Any CPU.Build.0 = Release|Any CPU
{4382555A-E4CD-4DFC-B59B-408FD4E93530}.Release|x64.ActiveCfg = Release|Any CPU
{4382555A-E4CD-4DFC-B59B-408FD4E93530}.Release|x64.Build.0 = Release|Any CPU
{4382555A-E4CD-4DFC-B59B-408FD4E93530}.Release|x86.ActiveCfg = Release|Any CPU
{4382555A-E4CD-4DFC-B59B-408FD4E93530}.Release|x86.Build.0 = Release|Any CPU
{545751D5-71FC-4889-A3A0-BBD731DBA18A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{545751D5-71FC-4889-A3A0-BBD731DBA18A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{545751D5-71FC-4889-A3A0-BBD731DBA18A}.Debug|x64.ActiveCfg = Debug|Any CPU
{545751D5-71FC-4889-A3A0-BBD731DBA18A}.Debug|x64.Build.0 = Debug|Any CPU
{545751D5-71FC-4889-A3A0-BBD731DBA18A}.Debug|x86.ActiveCfg = Debug|Any CPU
{545751D5-71FC-4889-A3A0-BBD731DBA18A}.Debug|x86.Build.0 = Debug|Any CPU
{545751D5-71FC-4889-A3A0-BBD731DBA18A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{545751D5-71FC-4889-A3A0-BBD731DBA18A}.Release|Any CPU.Build.0 = Release|Any CPU
{545751D5-71FC-4889-A3A0-BBD731DBA18A}.Release|x64.ActiveCfg = Release|Any CPU
{545751D5-71FC-4889-A3A0-BBD731DBA18A}.Release|x64.Build.0 = Release|Any CPU
{545751D5-71FC-4889-A3A0-BBD731DBA18A}.Release|x86.ActiveCfg = Release|Any CPU
{545751D5-71FC-4889-A3A0-BBD731DBA18A}.Release|x86.Build.0 = Release|Any CPU
{5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Debug|x64.ActiveCfg = Debug|Any CPU
{5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Debug|x64.Build.0 = Debug|Any CPU
{5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Debug|x86.ActiveCfg = Debug|Any CPU
{5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Debug|x86.Build.0 = Debug|Any CPU
{5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Release|Any CPU.Build.0 = Release|Any CPU
{5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Release|x64.ActiveCfg = Release|Any CPU
{5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Release|x64.Build.0 = Release|Any CPU
{5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Release|x86.ActiveCfg = Release|Any CPU
{5D6F99C5-D292-4459-B8BD-8E4AD42E1B21}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -7887,8 +8064,6 @@ Global
{3CBC4802-E9B8-48B7-BC8C-B0AFB9EEC643} = {0ACCEDA7-339C-4B4D-8DD4-1AC271F31C04}
{48E64014-B249-4644-8AEB-CDEE8ABA0DC2} = {3CBC4802-E9B8-48B7-BC8C-B0AFB9EEC643}
{1542DC58-1836-4191-A9C5-51D1716D2543} = {05A169C7-4F20-4516-B10A-B13C5649D346}
{F71FE795-9923-461B-9809-BB1821A276D0} = {60D51C98-2CC0-40DF-B338-44154EFEE2FF}
{8294A74F-7DAA-4B69-BC56-7634D93C9693} = {F71FE795-9923-461B-9809-BB1821A276D0}
{FED4267E-E5E4-49C5-98DB-8B3F203596EE} = {562D5067-8CD8-4F19-BCBB-873204932C61}
{6B2734BF-C61D-4889-ABBF-456A4075D59B} = {FED4267E-E5E4-49C5-98DB-8B3F203596EE}
{83371889-9A3E-4D16-AE77-EB4F83BC6374} = {FED4267E-E5E4-49C5-98DB-8B3F203596EE}
@ -7935,9 +8110,6 @@ Global
{55CACC1F-FE96-47C8-8073-91F4CAA55C75} = {2A91479A-4ABE-4BB7-9A5E-CA3B9CCFC69E}
{7509AA1E-3093-4BEE-984F-E11579E98A11} = {7CB09412-C9B0-47E8-A8C3-311AA4CFDE04}
{DAAB6B35-CBD2-4573-B633-CDD42F583A0E} = {16898702-3E33-41C1-B8D8-4CE3F1D46BD9}
{1B06FD32-3A1D-46A4-B2AF-99159FAD8127} = {60D51C98-2CC0-40DF-B338-44154EFEE2FF}
{9059AC97-7547-4CC1-A076-680CBCCC1F33} = {1B06FD32-3A1D-46A4-B2AF-99159FAD8127}
{943FD3EC-D330-4277-B3F3-3DFABB57D3B5} = {1B06FD32-3A1D-46A4-B2AF-99159FAD8127}
{498A4F54-F11A-46C5-A58D-09DE56C6A034} = {AEB1933E-9369-4305-B20E-F186F888158F}
{AEB1933E-9369-4305-B20E-F186F888158F} = {017429CC-C5FB-48B4-9C46-034E29EE2F06}
{B9D37BCF-80D1-489D-9FC6-55191FDBB033} = {AEB1933E-9369-4305-B20E-F186F888158F}
@ -7945,6 +8117,27 @@ Global
{37329855-01B8-4B03-9765-1A941B06E43C} = {8C15FD04-7F90-43FC-B488-023432FE3CE1}
{D3246226-BC1A-47F1-8E3E-C3380A8F13FB} = {8C15FD04-7F90-43FC-B488-023432FE3CE1}
{B06ADD57-E855-4D8C-85DC-B323509AE540} = {898F7E0B-1671-42CB-9DFB-689AFF212ED3}
{04CFE286-6D32-41EF-8887-4B5F8086A365} = {6126DCE4-9692-4EE2-B240-C65743572995}
{BAD47859-95DF-4C8F-9AF7-C48B68F478A1} = {A4C26078-B6D8-4FD8-87A6-7C15A3482038}
{010A9638-F20E-4FE6-A186-85732BFC9CB0} = {A4C26078-B6D8-4FD8-87A6-7C15A3482038}
{3D34C81F-2CB5-459E-87E9-0CC04757A2A0} = {017429CC-C5FB-48B4-9C46-034E29EE2F06}
{FEF97646-9BC9-4D1B-A939-784D915C18A4} = {3D34C81F-2CB5-459E-87E9-0CC04757A2A0}
{839CE175-E0D9-43B9-9FA8-F32C47E7F56B} = {3D34C81F-2CB5-459E-87E9-0CC04757A2A0}
{50BF2926-7435-4F4B-88A9-3D0EDEB67FC8} = {3D34C81F-2CB5-459E-87E9-0CC04757A2A0}
{16B899B4-A4F4-4EF7-93BB-355861977A12} = {3D34C81F-2CB5-459E-87E9-0CC04757A2A0}
{3EAB9890-2C01-444C-ACA0-D77B29CDE08B} = {017429CC-C5FB-48B4-9C46-034E29EE2F06}
{3E29454A-C4DC-44B7-AF0A-A782AD2E73BC} = {3EAB9890-2C01-444C-ACA0-D77B29CDE08B}
{43E3B132-2486-44A3-92C6-39E39724FAFD} = {3EAB9890-2C01-444C-ACA0-D77B29CDE08B}
{DFC4F588-B4B4-484B-AB93-B36721374AD3} = {017429CC-C5FB-48B4-9C46-034E29EE2F06}
{48FF1D87-5066-4294-B802-2D1B478C6EB6} = {DFC4F588-B4B4-484B-AB93-B36721374AD3}
{563A3FFA-32DA-4ADA-891C-E00897BD919E} = {48FF1D87-5066-4294-B802-2D1B478C6EB6}
{DC5DE087-5C93-4441-9D62-1743A50E5086} = {48FF1D87-5066-4294-B802-2D1B478C6EB6}
{F00CE8C1-5715-4683-A8E5-C467B712AD46} = {DFC4F588-B4B4-484B-AB93-B36721374AD3}
{56B45580-B089-424E-A847-A6115D591950} = {DFC4F588-B4B4-484B-AB93-B36721374AD3}
{4382555A-E4CD-4DFC-B59B-408FD4E93530} = {56B45580-B089-424E-A847-A6115D591950}
{545751D5-71FC-4889-A3A0-BBD731DBA18A} = {56B45580-B089-424E-A847-A6115D591950}
{E83B0BCC-A8E0-4FBD-BE51-9A533C9CB972} = {DFC4F588-B4B4-484B-AB93-B36721374AD3}
{5D6F99C5-D292-4459-B8BD-8E4AD42E1B21} = {E83B0BCC-A8E0-4FBD-BE51-9A533C9CB972}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3E8720B3-DBDD-498C-B383-2CC32A054E8F}

View File

@ -13,7 +13,7 @@
<IsBenchmarkProject Condition="$(MSBuildProjectName.EndsWith('.Performance')) OR $(RepoRelativeProjectDir.Contains('perf')) OR $(RepoRelativeProjectDir.Contains('benchmarkapps'))">true</IsBenchmarkProject>
<IsSpecificationTestProject Condition="$(MSBuildProjectName.EndsWith('.Specification.Tests'))">true</IsSpecificationTestProject>
<IsUnitTestProject>false</IsUnitTestProject>
<IsUnitTestProject Condition=" '$(IsUnitTestProject)' == '' ">false</IsUnitTestProject>
<IsUnitTestProject Condition="'$(IsSpecificationTestProject)' != 'true' and ( $(MSBuildProjectName.EndsWith('Tests')) or $(MSBuildProjectName.EndsWith('.Test')) or $(MSBuildProjectName.EndsWith('.FunctionalTest')) )">true</IsUnitTestProject>
<IsTestAssetProject Condition="$(RepoRelativeProjectDir.Contains('testassets'))">true</IsTestAssetProject>
<IsSampleProject Condition="$(RepoRelativeProjectDir.Contains('sample'))">true</IsSampleProject>
@ -217,6 +217,7 @@
<Import Project="eng\targets\CSharp.Common.props" Condition="'$(MSBuildProjectExtension)' == '.csproj'" />
<Import Project="eng\targets\Wix.Common.props" Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
<Import Project="eng\targets\Npm.Common.props" Condition="'$(MSBuildProjectExtension)' == '.npmproj'" />
<Import Project="eng\targets\Java.Common.props" Condition="'$(MSBuildProjectExtension)' == '.javaproj'" />
<Import Project="eng\targets\Helix.props" Condition="'$(IsTestProject)' == 'true'" />
</Project>

View File

@ -36,13 +36,15 @@
<SiteExtensionPackageVersion Condition=" '$(VersionSuffix)' != '' ">$(VersionPrefix)-$(VersionSuffix.Replace('.','-'))</SiteExtensionPackageVersion>
<PackageVersion Condition=" '$(PackageVersion)' == '' ">$(Version)</PackageVersion>
<PackageVersion Condition=" '$(NoSemVer20)' == 'true' ">$(SiteExtensionPackageVersion)</PackageVersion>
<SharedFxVersion>$(PackageVersion)</SharedFxVersion>
<SharedFxVersion Condition=" '$(StabilizePackageVersion)' == 'true' ">$(VersionPrefix)</SharedFxVersion>
<SharedFxProductName>$(Product) $(SharedFxVersion) Shared Framework</SharedFxProductName>
<TargetingPackVersion>$(TargetingPackVersionPrefix)</TargetingPackVersion>
<TargetingPackVersion Condition=" '$(VersionSuffix)' != '' ">$(TargetingPackVersionPrefix)-$(VersionSuffix)</TargetingPackVersion>
<TargetingPackVersion>$(SharedFxVersion)</TargetingPackVersion>
<TargetingPackVersion Condition=" ! $(IsTargetingPackBuilding) ">$(TargetingPackVersionPrefix)</TargetingPackVersion>
<SharedFxProductName>$(Product) $(PackageVersion) Shared Framework</SharedFxProductName>
<PackageVersion Condition=" '$(NoSemVer20)' == 'true' ">$(SiteExtensionPackageVersion)</PackageVersion>
</PropertyGroup>
<PropertyGroup>
@ -130,8 +132,14 @@
<None Include="$(PackageThirdPartyNoticesFile)" Pack="true" PackagePath="." />
</ItemGroup>
<PropertyGroup Condition="'$(Language)' == 'C#'">
<AssemblyVersion>$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).0.0</AssemblyVersion>
<!--
If assembly is in shared framework and not net4*, assembly version should remain fixed for an entire
major.minor release even in servicing.
-->
<PropertyGroup Condition=" '$(IsAspNetCoreApp)' == 'true' AND
'$(Language)' == 'C#' AND
'$(TargetFrameworkIdentifier)' != '.NETFramework' ">
<AssemblyVersion>$(AspNetCoreMajorMinorVersion).0.0</AssemblyVersion>
</PropertyGroup>
<PropertyGroup>
@ -156,7 +164,7 @@
<KnownFrameworkReference Condition="'$(UseAspNetCoreSharedRuntime)' == 'true' AND '$(DoNotApplyWorkaroundsToMicrosoftAspNetCoreApp)' != 'true'" Update="Microsoft.AspNetCore.App">
<LatestRuntimeFrameworkVersion>$(SharedFxVersion)</LatestRuntimeFrameworkVersion>
<DefaultRuntimeFrameworkVersion Condition="'$(IsServicingBuild)' != 'true'">$(SharedFxVersion)</DefaultRuntimeFrameworkVersion>
<TargetingPackVersion Condition="'$(IsServicingBuild)' != 'true'">$(SharedFxVersion)</TargetingPackVersion>
<TargetingPackVersion Condition="'$(IsServicingBuild)' != 'true'">$(TargetingPackVersion)</TargetingPackVersion>
</KnownFrameworkReference>
<!-- Track compiler separately from Arcade.-->
@ -186,6 +194,7 @@
<Import Project="eng\targets\FSharp.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.fsproj'" />
<Import Project="eng\targets\Wix.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
<Import Project="eng\targets\Npm.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.npmproj'" />
<Import Project="eng\targets\Java.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.javaproj'" />
<Import Project="eng\targets\Helix.targets" Condition="'$(IsTestProject)' == 'true'" />
<Import Project="eng\targets\FunctionalTestAsset.targets" Condition="'$(IsTestAssetProject)' == 'true'" />
<Import Project="eng\targets\FunctionalTestWithAssets.targets" Condition="'$(ContainsFunctionalTestAssets)' == 'true'" />

View File

@ -293,3 +293,29 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
License notice for Swashbuckle
===================================
The MIT License (MIT)
Copyright (c) 2016 Richard Morris
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -296,12 +296,11 @@ if ($BuildNodeJS) { $dotnetBuildArguments += "/p:BuildNodeJS=true" }
# Don't bother with two builds if just one will build everything. Ignore super-weird cases like
# "-Projects ... -NoBuildJava -NoBuildManaged -NoBuildNodeJS". An empty `./build.ps1` command will build both
# managed and native projects.
$performDesktopBuild = ($BuildInstallers -or $BuildNative) -and `
-not $Architecture.StartsWith("arm", [System.StringComparison]::OrdinalIgnoreCase)
$performDesktopBuild = ($BuildInstallers -and $Architecture -ne "arm") -or `
($BuildNative -and -not $Architecture.StartsWith("arm", [System.StringComparison]::OrdinalIgnoreCase))
$performDotnetBuild = $BuildJava -or $BuildManaged -or $BuildNodeJS -or `
($All -and -not ($NoBuildJava -and $NoBuildManaged -and $NoBuildNodeJS)) -or `
($Projects -and -not ($BuildInstallers -or $specifiedBuildNative))
$foundJdk = $false
$javac = Get-Command javac -ErrorAction Ignore -CommandType Application
$localJdkPath = "$PSScriptRoot\.tools\jdk\win-x64\"

View File

@ -137,6 +137,7 @@ docker run \
-e SYSTEM_TEAMPROJECT \
-e BUILD_BUILDNUMBER \
-e BUILD_REPOSITORY_URI \
-e BUILD_REPOSITORY_NAME \
-e BUILD_SOURCEVERSION \
-e BUILD_SOURCEBRANCH \
-e SYSTEM_DEFINITIONID \

View File

@ -1,9 +1,7 @@
<Project>
<PropertyGroup Condition="'$(GenerateChecksums)' == 'true'">
<!-- The one use of ArtifactsDir in Publish.proj adds an additional slash, confusing itself. -->
<ArtifactsDir Condition=" HasTrailingSlash('$(ArtifactsDir)') ">$(ArtifactsDir.Substring(0, $([MSBuild]::Subtract($(ArtifactsDir.Length), 1))))</ArtifactsDir>
<!-- $(InstallersOutputPath) is not defined. Root Directory.Build.props is not imported. -->
<InstallersOutputPath>$(ArtifactsDir)\installers\</InstallersOutputPath>
<InstallersOutputPath>$(ArtifactsDir)installers\</InstallersOutputPath>
<_SuppressSdkImports>false</_SuppressSdkImports>
</PropertyGroup>

View File

@ -25,7 +25,7 @@
$(RepoRoot)src\Installers\**\*.*proj;
$(RepoRoot)src\SignalR\clients\ts\**\node_modules\**\*.*proj;
$(RepoRoot)src\Components\Web.JS\node_modules\**\*.*proj;
$(RepoRoot)src\Components\WebAssembly\Build\testassets\**\*.csproj;
$(RepoRoot)src\Components\WebAssembly\Sdk\testassets\**\*.csproj;
$(RepoRoot)src\ProjectTemplates\Web.ProjectTemplates\content\**\*.csproj;
$(RepoRoot)src\ProjectTemplates\Web.ProjectTemplates\content\**\*.fsproj;
$(RepoRoot)src\ProjectTemplates\Web.Spa.ProjectTemplates\content\**\*.csproj;
@ -50,7 +50,7 @@
</ItemGroup>
</When>
<Otherwise>
<ItemGroup Condition=" '$(BuildInstallers)' == 'true' AND '$(TargetOsName)' == 'win' ">
<ItemGroup Condition=" '$(BuildInstallers)' == 'true' AND '$(TargetOsName)' == 'win' AND ('$(TargetArchitecture)' == 'x86' OR '$(TargetArchitecture)' == 'x64') ">
<!-- Build the ANCM custom action -->
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\AspNetCoreModule-Setup\CustomAction\aspnetcoreCA.vcxproj" AdditionalProperties="Platform=x64" />
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\AspNetCoreModule-Setup\CustomAction\aspnetcoreCA.vcxproj" AdditionalProperties="Platform=Win32" />
@ -64,6 +64,10 @@
<!-- Build the targeting pack installers -->
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\TargetingPack\TargetingPack.wixproj" AdditionalProperties="Platform=x64" />
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\TargetingPack\TargetingPack.wixproj" AdditionalProperties="Platform=x86" />
<!-- This really shouldn't be here, but instead of harvesting from the intermediate/output directories, the targetting pack installer logic
harvests from a zip of the reference assemblies. Producing it in each leg ends up with multiple targeting packs
getting produced and the BAR will reject the build. Centralize building the targeting pack in the x86/x64 leg. -->
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\TargetingPack\TargetingPack.wixproj" AdditionalProperties="Platform=arm64" />
<!-- Build the SharedFramework installers -->
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\SharedFrameworkBundle\SharedFrameworkBundle.wixproj" AdditionalProperties="Platform=x64" />
@ -77,6 +81,14 @@
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\WindowsHostingBundle\WindowsHostingBundle.wixproj" AdditionalProperties="Platform=x86" />
</ItemGroup>
<ItemGroup Condition=" '$(BuildInstallers)' == 'true' AND '$(TargetOsName)' == 'win' AND '$(TargetArchitecture)' == 'arm64' ">
<!-- We don't build the bundle here because we'd have to bundle the x86 installer which gets built in a different leg.
Instead we only provide the ARM64 MSI-->
<!-- Build the SharedFramework wixlib -->
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\SharedFrameworkLib\SharedFrameworkLib.wixproj" AdditionalProperties="Platform=arm64" />
</ItemGroup>
<ItemGroup Condition="'$(BuildInstallers)' == 'true' AND '$(TargetRuntimeIdentifier)' == 'linux-x64'">
<ProjectToBuild Condition=" '$(LinuxInstallerType)' == 'deb' "
Include="$(RepoRoot)src\Installers\Debian\**\*.*proj" />

View File

@ -73,8 +73,6 @@ and are generated based on the last package release.
<LatestPackageReference Include="System.Reflection.Metadata" />
<LatestPackageReference Include="System.Runtime.CompilerServices.Unsafe" />
<LatestPackageReference Include="System.Runtime.InteropServices.RuntimeInformation" />
<!-- System.Security.AccessControl should only be referenced in Dependencies.props and RTMVersions.csproj. -->
<LatestPackageReference Include="System.Security.AccessControl" />
<LatestPackageReference Include="System.Security.Cryptography.Cng" />
<LatestPackageReference Include="System.Security.Cryptography.Pkcs" />
<LatestPackageReference Include="System.Security.Cryptography.Xml" />
@ -167,11 +165,11 @@ and are generated based on the last package release.
<LatestPackageReference Include="MessagePack" />
<LatestPackageReference Include="MessagePackAnalyzer" />
<LatestPackageReference Include="Microsoft.Data.SqlClient" />
<LatestPackageReference Include="Microsoft.Identity.Web.UI" />
<LatestPackageReference Include="Mono.Cecil" />
<LatestPackageReference Include="Moq" />
<LatestPackageReference Include="Newtonsoft.Json.Bson" />
<LatestPackageReference Include="NSwag.ApiDescription.Client" />
<LatestPackageReference Include="NuGet.Versioning" />
<LatestPackageReference Include="Selenium.Support" />
<LatestPackageReference Include="Selenium.WebDriver" />
<LatestPackageReference Include="Selenium.WebDriver.ChromeDriver" />
@ -196,11 +194,6 @@ and are generated based on the last package release.
<!-- Get versions. -->
<LatestPackageReference Update="@(LatestPackageReference)">
<Version>$(%(VersionName)PackageVersion)</Version>
<RTMVersion>$(%(VersionName)V0PackageVersion)</RTMVersion>
<!-- Remove excess metadata. -->
<RTMVersion Condition=" '%(Version)' == '%(RTMVersion)' " />
<VersionName />
</LatestPackageReference>
<!--

View File

@ -140,9 +140,7 @@
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Components" ProjectPath="$(RepoRoot)src\Components\Components\src\Microsoft.AspNetCore.Components.csproj" />
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Components.Forms" ProjectPath="$(RepoRoot)src\Components\Forms\src\Microsoft.AspNetCore.Components.Forms.csproj" />
<ProjectReferenceProvider Include="Ignitor" ProjectPath="$(RepoRoot)src\Components\Ignitor\src\Ignitor.csproj" />
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Components.ProtectedBrowserStorage" ProjectPath="$(RepoRoot)src\Components\ProtectedBrowserStorage\src\Microsoft.AspNetCore.Components.ProtectedBrowserStorage.csproj" />
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Components.Server" ProjectPath="$(RepoRoot)src\Components\Server\src\Microsoft.AspNetCore.Components.Server.csproj" />
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Components.Web.Extensions" ProjectPath="$(RepoRoot)src\Components\Web.Extensions\src\Microsoft.AspNetCore.Components.Web.Extensions.csproj" />
<ProjectReferenceProvider Include="Microsoft.Authentication.WebAssembly.Msal" ProjectPath="$(RepoRoot)src\Components\WebAssembly\Authentication.Msal\src\Microsoft.Authentication.WebAssembly.Msal.csproj" />
<ProjectReferenceProvider Include="Microsoft.JSInterop.WebAssembly" ProjectPath="$(RepoRoot)src\Components\WebAssembly\JSInterop\src\Microsoft.JSInterop.WebAssembly.csproj" />
<ProjectReferenceProvider Include="Microsoft.NET.Sdk.BlazorWebAssembly" ProjectPath="$(RepoRoot)src\Components\WebAssembly\Sdk\src\Microsoft.NET.Sdk.BlazorWebAssembly.csproj" />

View File

@ -1,8 +1,9 @@
<Project>
<PropertyGroup>
<!-- The one use of ArtifactsDir in Publish.proj adds an additional slash, confusing itself. -->
<ArtifactsDir Condition=" HasTrailingSlash('$(ArtifactsDir)') ">$(ArtifactsDir.Substring(0, $([MSBuild]::Subtract($(ArtifactsDir.Length), 1))))</ArtifactsDir>
<PublishingVersion>3</PublishingVersion>
</PropertyGroup>
<PropertyGroup>
<PublishDependsOnTargets>$(PublishDependsOnTargets);_PublishInstallersAndChecksums</PublishDependsOnTargets>
<_UploadPathRoot>aspnetcore</_UploadPathRoot>
@ -11,23 +12,23 @@
<!-- $(InstallersOutputPath), $(SymbolsOutputPath), and $(ChecksumExtensions) are not defined. Root Directory.Build.props is not imported. -->
<ItemGroup>
<!-- Include our "loose" PDBs when publishing symbols. -->
<FilesToPublishToSymbolServer Include="$(ArtifactsDir)\symbols\**\*.pdb" />
<FilesToPublishToSymbolServer Include="$(ArtifactsDir)symbols\**\*.pdb" />
<!-- Prepare for _PublishInstallersAndChecksums target. -->
<_InstallersToPublish Remove="@(_InstallersToPublish)" />
<_InstallersToPublish Include="$(ArtifactsDir)\packages\**\*.jar" UploadPathSegment="jar" />
<_InstallersToPublish Include="$(ArtifactsDir)\packages\**\*.pom" UploadPathSegment="jar" />
<_InstallersToPublish Include="$(ArtifactsDir)\packages\**\*.tgz" UploadPathSegment="npm" />
<_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.deb" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.exe" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.msi" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.rpm" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.tar.gz" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.version" UploadPathSegment="Runtime"
<_InstallersToPublish Include="$(ArtifactsDir)packages\**\*.jar" UploadPathSegment="jar" />
<_InstallersToPublish Include="$(ArtifactsDir)packages\**\*.pom" UploadPathSegment="jar" />
<_InstallersToPublish Include="$(ArtifactsDir)packages\**\*.tgz" UploadPathSegment="npm" />
<_InstallersToPublish Include="$(ArtifactsDir)installers\**\*.deb" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)installers\**\*.exe" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)installers\**\*.msi" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)installers\**\*.rpm" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)installers\**\*.tar.gz" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)installers\**\*.version" UploadPathSegment="Runtime"
Condition=" '$(PublishInstallerBaseVersion)' == 'true' " />
<_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.wixlib" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.zip" UploadPathSegment="Runtime" />
<_ChecksumsToPublish Include="$(ArtifactsDir)\**\*.sha512" />
<_InstallersToPublish Include="$(ArtifactsDir)installers\**\*.wixlib" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)installers\**\*.zip" UploadPathSegment="Runtime" />
<_ChecksumsToPublish Include="$(ArtifactsDir)**\*.sha512" />
</ItemGroup>
<Target Name="_PublishInstallersAndChecksums">
@ -63,6 +64,10 @@
<PublishFlatContainer>true</PublishFlatContainer>
<RelativeBlobPath>$(_UploadPathRoot)/%(_InstallersToPublish.UploadPathSegment)/$(_PackageVersion)/%(Filename)%(Extension)</RelativeBlobPath>
</ItemsToPushToBlobFeed>
<!-- Set up ItemsToSign for the push task to pick up. -->
<ItemsToSign Remove="@(ItemsToSign)" />
<ItemsToSign Include="@(ItemsToSignPostBuild)" />
</ItemGroup>
</Target>
</Project>

View File

@ -40,6 +40,7 @@
<ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Options.DataAnnotations" Version="$(MicrosoftExtensionsOptionsDataAnnotationsPackageVersion)" />
<ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Options" Version="$(MicrosoftExtensionsOptionsPackageVersion)" />
<ExternalAspNetCoreAppReference Include="Microsoft.Extensions.Primitives" Version="$(MicrosoftExtensionsPrimitivesPackageVersion)" />
<ExternalAspNetCoreAppReference Include="System.IO.Pipelines" Version="$(SystemIOPipelinesPackageVersion)" />
<ExternalAspNetCoreAppReference Include="System.Security.Cryptography.Xml" Version="$(SystemSecurityCryptographyXmlPackageVersion)" />
<!--

View File

@ -9,12 +9,43 @@
<FileExtensionSignInfo Remove="@(FileExtensionSignInfo)" />
</ItemGroup>
<ItemGroup Label="Signing config">
<ItemsToSign Include="$(ArtifactsPackagesDir)**\*.nupkg" Exclude="$(ArtifactsPackagesDir)**\*symbols.nupkg" />
<ItemsToSign Include="$(VisualStudioSetupOutputPath)**\*.vsix" />
<ItemsToSign Include="$(ArtifactsPackagesDir)**\*.jar" />
<ItemsToSign Include="$(ArtifactsDir)installers\$(Configuration)\**\*.zip" />
<!-- Files that should be always be signed between in-build and post-build signing -->
<ItemGroup Label="Common Files to Sign">
<CommonFilesToSign Include="$(ArtifactsPackagesDir)**\*.nupkg" />
<CommonFilesToSign Include="$(VisualStudioSetupOutputPath)**\*.vsix" />
<CommonFilesToSign Include="$(ArtifactsPackagesDir)**\*.jar" />
<CommonFilesToSign Include="$(ArtifactsDir)installers\$(Configuration)\**\*.zip" />
</ItemGroup>
<Choose>
<!-- When post build signing is false - Sign as normal.
When post build signing is true - Sign all of our signable artifacts
that we would publish. Use a different ItemGroup name so that
the signing stage signs nothing. We then set ItemToSign during
publishing to this ItemGroup.
-->
<When Condition="'$(PostBuildSign)' != 'true'">
<ItemGroup Label="Files To Sign">
<ItemsToSign Include="@(CommonFilesToSign)" />
<ItemsToSign Remove="$(ArtifactsPackagesDir)**\*symbols.nupkg" />
</ItemGroup>
</When>
<When Condition="'$(PostBuildSign)' == 'true'">
<PropertyGroup>
<AllowEmptySignList>true</AllowEmptySignList>
</PropertyGroup>
<ItemGroup Label="Files To Sign">
<!-- Sign symbol nupkgs so that shared files between layouts and msis end up identical. -->
<ItemsToSignPostBuild Include="@(CommonFilesToSign)" />
<ItemsToSignPostBuild Include="$(ArtifactsDir)installers\$(Configuration)\**\*.exe" />
<ItemsToSignPostBuild Include="$(ArtifactsDir)installers\$(Configuration)\**\*.msi" />
<!-- Wixlibs are signed because they are containers of other files -->
<ItemsToSignPostBuild Include="$(ArtifactsDir)installers\$(Configuration)\**\*.wixlib" />
</ItemGroup>
</When>
</Choose>
<ItemGroup Label="File signing information">
<!--
Map file extensions to a code-sign cert.
"None" means don't sign the file itself, but still scan the contents for signable files.
@ -88,6 +119,11 @@
These files should already be signed by the .NET Core team. They have to be listed again here because we recreate a redistributable which includes the Microsoft.NETCore.App runtime.
List all combinations of Windows RID's because CI may build multiple combinations of artitectures on the same machine.
This uses globs because some of the file names change on every build of .NET Core, like sos_amd64_$(fileversion).dll.
Technically, this may not be necessary. SignTool does a good deal of detection to determine
whether files are already signed.
Do not include these with cert "None" when doing post-build signing. In that case, we will recognize that
-->
<_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-x64\shared\Microsoft.NETCore.App\**\*.dll" CertificateName="None" />
<_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-x86\shared\Microsoft.NETCore.App\**\*.dll" CertificateName="None" />
@ -98,7 +134,11 @@
<_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-arm\host\**\*.dll" CertificateName="None" />
<_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-arm64\host\**\*.dll" CertificateName="None" />
<_DotNetFilesToExclude Include="$(RedistNetCorePath)dotnet.exe" CertificateName="None" />
<FileSignInfo Include="@(_DotNetFilesToExclude->'%(FileName)%(Extension)'->Distinct())" CertificateName="None" />
<FileSignInfo Include="@(_DotNetFilesToExclude->'%(FileName)%(Extension)'->Distinct())" CertificateName="None" Condition="'$(PostBuildSign)' != 'true'" />
<!-- Symbol packages should get no NuGet signature -->
<!-- Requires https://github.com/dotnet/arcade/issues/6192 to be fixed -->
<!-- <FileSignInfo Include="@(_SymbolPackages->'%(FileName)%(Extension)'->Distinct())" CertificateName="None" /> -->
<!--
We include the Microsoft.Build.Locator.dll assembly in our global tool 'Microsoft.dotnet-openapi'.

View File

@ -9,329 +9,320 @@
-->
<Dependencies>
<ProductDependencies>
<Dependency Name="Microsoft.AspNetCore.Components.WebAssembly.Runtime" Version="3.2.0">
<Uri>https://github.com/dotnet/blazor</Uri>
<Sha>cc449601d638ffaab58ae9487f0fd010bb178a12</Sha>
</Dependency>
<Dependency Name="dotnet-ef" Version="5.0.0-rc.1.20451.13">
<Dependency Name="dotnet-ef" Version="5.0.0-rc.2.20474.5">
<Uri>https://github.com/dotnet/efcore</Uri>
<Sha>422fcb2a51c7616b0e2bbeb28c10309ed1b3b365</Sha>
<Sha>8fe5baf8178b5eee033abe0a4d1f73d23ff7d01e</Sha>
</Dependency>
<Dependency Name="Microsoft.EntityFrameworkCore.InMemory" Version="5.0.0-rc.1.20451.13">
<Dependency Name="Microsoft.EntityFrameworkCore.InMemory" Version="5.0.0-rc.2.20474.5">
<Uri>https://github.com/dotnet/efcore</Uri>
<Sha>422fcb2a51c7616b0e2bbeb28c10309ed1b3b365</Sha>
<Sha>8fe5baf8178b5eee033abe0a4d1f73d23ff7d01e</Sha>
</Dependency>
<Dependency Name="Microsoft.EntityFrameworkCore.Relational" Version="5.0.0-rc.1.20451.13">
<Dependency Name="Microsoft.EntityFrameworkCore.Relational" Version="5.0.0-rc.2.20474.5">
<Uri>https://github.com/dotnet/efcore</Uri>
<Sha>422fcb2a51c7616b0e2bbeb28c10309ed1b3b365</Sha>
<Sha>8fe5baf8178b5eee033abe0a4d1f73d23ff7d01e</Sha>
</Dependency>
<Dependency Name="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.0-rc.1.20451.13">
<Dependency Name="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.0-rc.2.20474.5">
<Uri>https://github.com/dotnet/efcore</Uri>
<Sha>422fcb2a51c7616b0e2bbeb28c10309ed1b3b365</Sha>
<Sha>8fe5baf8178b5eee033abe0a4d1f73d23ff7d01e</Sha>
</Dependency>
<Dependency Name="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.0-rc.1.20451.13">
<Dependency Name="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.0-rc.2.20474.5">
<Uri>https://github.com/dotnet/efcore</Uri>
<Sha>422fcb2a51c7616b0e2bbeb28c10309ed1b3b365</Sha>
<Sha>8fe5baf8178b5eee033abe0a4d1f73d23ff7d01e</Sha>
</Dependency>
<Dependency Name="Microsoft.EntityFrameworkCore.Tools" Version="5.0.0-rc.1.20451.13">
<Dependency Name="Microsoft.EntityFrameworkCore.Tools" Version="5.0.0-rc.2.20474.5">
<Uri>https://github.com/dotnet/efcore</Uri>
<Sha>422fcb2a51c7616b0e2bbeb28c10309ed1b3b365</Sha>
<Sha>8fe5baf8178b5eee033abe0a4d1f73d23ff7d01e</Sha>
</Dependency>
<Dependency Name="Microsoft.EntityFrameworkCore" Version="5.0.0-rc.1.20451.13">
<Dependency Name="Microsoft.EntityFrameworkCore" Version="5.0.0-rc.2.20474.5">
<Uri>https://github.com/dotnet/efcore</Uri>
<Sha>422fcb2a51c7616b0e2bbeb28c10309ed1b3b365</Sha>
<Sha>8fe5baf8178b5eee033abe0a4d1f73d23ff7d01e</Sha>
</Dependency>
<Dependency Name="Microsoft.EntityFrameworkCore.Design" Version="5.0.0-rc.1.20451.13">
<Dependency Name="Microsoft.EntityFrameworkCore.Design" Version="5.0.0-rc.2.20474.5">
<Uri>https://github.com/dotnet/efcore</Uri>
<Sha>422fcb2a51c7616b0e2bbeb28c10309ed1b3b365</Sha>
<Sha>8fe5baf8178b5eee033abe0a4d1f73d23ff7d01e</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Caching.Abstractions" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Caching.Abstractions" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Caching.Memory" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Caching.Memory" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.Abstractions" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Configuration.Abstractions" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.Binder" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Configuration.Binder" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.CommandLine" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Configuration.CommandLine" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.FileExtensions" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Configuration.FileExtensions" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.Ini" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Configuration.Ini" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.Json" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Configuration.Json" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.UserSecrets" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Configuration.UserSecrets" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.Xml" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Configuration.Xml" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Configuration" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Configuration" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.DependencyInjection" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.DependencyInjection" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.FileProviders.Abstractions" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.FileProviders.Abstractions" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.FileProviders.Composite" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.FileProviders.Composite" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.FileProviders.Physical" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.FileProviders.Physical" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.FileSystemGlobbing" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.FileSystemGlobbing" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.HostFactoryResolver.Sources" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.HostFactoryResolver.Sources" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Hosting.Abstractions" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Hosting.Abstractions" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Hosting" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Hosting" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Http" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Http" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Logging.Configuration" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Logging.Configuration" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Logging.Console" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Logging.Console" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Logging.Debug" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Logging.Debug" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Logging.EventSource" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Logging.EventSource" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Logging.EventLog" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Logging.EventLog" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Logging.TraceSource" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Logging.TraceSource" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Logging" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Logging" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Options.ConfigurationExtensions" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Options.ConfigurationExtensions" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Options.DataAnnotations" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Options.DataAnnotations" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Options" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Options" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Primitives" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Primitives" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Internal.Transport" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.Internal.Transport" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Win32.Registry" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Win32.Registry" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Win32.SystemEvents" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Win32.SystemEvents" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.ComponentModel.Annotations" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.ComponentModel.Annotations" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Diagnostics.DiagnosticSource" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Diagnostics.DiagnosticSource" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Diagnostics.EventLog" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Diagnostics.EventLog" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.DirectoryServices.Protocols" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.DirectoryServices.Protocols" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Drawing.Common" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Drawing.Common" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.IO.Pipelines" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.IO.Pipelines" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Net.Http.Json" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Net.Http.Json" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Net.Http.WinHttpHandler" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Net.Http.WinHttpHandler" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Net.WebSockets.WebSocketProtocol" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Net.WebSockets.WebSocketProtocol" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Reflection.Metadata" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Reflection.Metadata" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Resources.Extensions" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Resources.Extensions" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Runtime.CompilerServices.Unsafe" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Runtime.CompilerServices.Unsafe" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<!-- System.Security.AccessControl should only be referenced in Dependencies.props and RTMVersions.csproj. -->
<Dependency Name="System.Security.AccessControl" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Security.Cryptography.Cng" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Security.Cryptography.Cng" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Security.Cryptography.Pkcs" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Security.Cryptography.Pkcs" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Security.Cryptography.Xml" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Security.Cryptography.Xml" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Security.Permissions" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Security.Permissions" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Security.Principal.Windows" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Security.Principal.Windows" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.ServiceProcess.ServiceController" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.ServiceProcess.ServiceController" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Text.Encodings.Web" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Text.Encodings.Web" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Text.Json" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Text.Json" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Threading.Channels" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Threading.Channels" Version="5.0.0-rc.1.20451.14">
<Dependency Name="System.Windows.Extensions" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="System.Windows.Extensions" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.Extensions.DependencyModel" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.DependencyModel" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.NETCore.App.Ref" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
</Dependency>
<Dependency Name="Microsoft.NETCore.App.Ref" Version="5.0.0-rc.1.20451.14">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</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-rc.1.20451.14">
<Dependency Name="Microsoft.NETCore.App.Runtime.win-x64" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.NETCore.App.Internal" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.NETCore.App.Internal" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.NETCore.BrowserDebugHost.Transport" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.NETCore.BrowserDebugHost.Transport" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
</ProductDependencies>
<ToolsetDependencies>
<!-- Listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 -->
<Dependency Name="Microsoft.NETCore.Platforms" Version="5.0.0-rc.1.20451.14">
<Dependency Name="Microsoft.NETCore.Platforms" Version="5.0.0-rc.2.20474.8">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha>
<Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="5.0.0-beta.20431.1">
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="5.0.0-beta.20467.6">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>4be47e467013f8a07a1ed7b6e49e39c8150bde54</Sha>
<Sha>b63ea25b8dc50bb3dfcef128d415254bd5ca4dc8</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.Build.Tasks.Installers" Version="5.0.0-beta.20431.1">
<Dependency Name="Microsoft.DotNet.Build.Tasks.Installers" Version="5.0.0-beta.20467.6">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>4be47e467013f8a07a1ed7b6e49e39c8150bde54</Sha>
<Sha>b63ea25b8dc50bb3dfcef128d415254bd5ca4dc8</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.Helix.Sdk" Version="5.0.0-beta.20431.1">
<Dependency Name="Microsoft.DotNet.Helix.Sdk" Version="5.0.0-beta.20467.6">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>4be47e467013f8a07a1ed7b6e49e39c8150bde54</Sha>
<Sha>b63ea25b8dc50bb3dfcef128d415254bd5ca4dc8</Sha>
</Dependency>
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="3.8.0-2.20407.3">
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="3.8.0-3.20458.6" Pinned="true">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>dba2fa57432b4bd9cc7880e2c6fe3acdd01bba3c</Sha>
<Sha>b446afd34759150c2ea3b86ab794104e12e64db1</Sha>
</Dependency>
</ToolsetDependencies>
</Dependencies>

View File

@ -9,7 +9,7 @@
<AspNetCoreMajorVersion>5</AspNetCoreMajorVersion>
<AspNetCoreMinorVersion>0</AspNetCoreMinorVersion>
<AspNetCorePatchVersion>0</AspNetCorePatchVersion>
<PreReleaseVersionIteration>1</PreReleaseVersionIteration>
<PreReleaseVersionIteration>2</PreReleaseVersionIteration>
<!--
When StabilizePackageVersion is set to 'true', this branch will produce stable outputs for 'Shipping' packages
-->
@ -20,8 +20,6 @@
<IncludePreReleaseLabelInPackageVersion>true</IncludePreReleaseLabelInPackageVersion>
<IncludePreReleaseLabelInPackageVersion Condition=" '$(DotNetFinalVersionKind)' == 'release' ">false</IncludePreReleaseLabelInPackageVersion>
<AspNetCoreMajorMinorVersion>$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion)</AspNetCoreMajorMinorVersion>
<!-- Additional assembly attributes are already configured to include the source revision ID. -->
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
<!--
Until package baselines are updated (see dotnet/aspnetcore#12702), ignore them and PatchConfig.props. This also
gives us time to build the entire repo and settle the infrastructure. Do _not_ do this when stabilizing versions.
@ -62,89 +60,85 @@
-->
<PropertyGroup Label="Automated">
<!-- Packages from dotnet/roslyn -->
<MicrosoftNetCompilersToolsetPackageVersion>3.8.0-2.20407.3</MicrosoftNetCompilersToolsetPackageVersion>
<MicrosoftNetCompilersToolsetPackageVersion>3.8.0-3.20458.6</MicrosoftNetCompilersToolsetPackageVersion>
<!-- Packages from dotnet/runtime -->
<MicrosoftExtensionsDependencyModelPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsDependencyModelPackageVersion>
<MicrosoftNETCoreAppInternalPackageVersion>5.0.0-rc.1.20451.14</MicrosoftNETCoreAppInternalPackageVersion>
<MicrosoftNETCoreAppRefPackageVersion>5.0.0-rc.1.20451.14</MicrosoftNETCoreAppRefPackageVersion>
<MicrosoftNETCoreAppRuntimewinx64PackageVersion>5.0.0-rc.1.20451.14</MicrosoftNETCoreAppRuntimewinx64PackageVersion>
<MicrosoftNETCoreBrowserDebugHostTransportPackageVersion>5.0.0-rc.1.20451.14</MicrosoftNETCoreBrowserDebugHostTransportPackageVersion>
<MicrosoftWin32RegistryPackageVersion>5.0.0-rc.1.20451.14</MicrosoftWin32RegistryPackageVersion>
<MicrosoftWin32SystemEventsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftWin32SystemEventsPackageVersion>
<MicrosoftExtensionsCachingAbstractionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsCachingAbstractionsPackageVersion>
<MicrosoftExtensionsCachingMemoryPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsCachingMemoryPackageVersion>
<MicrosoftExtensionsConfigurationAbstractionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationAbstractionsPackageVersion>
<MicrosoftExtensionsConfigurationBinderPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationBinderPackageVersion>
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
<MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>
<MicrosoftExtensionsConfigurationIniPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationIniPackageVersion>
<MicrosoftExtensionsConfigurationJsonPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationJsonPackageVersion>
<MicrosoftExtensionsConfigurationPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationPackageVersion>
<MicrosoftExtensionsConfigurationUserSecretsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
<MicrosoftExtensionsConfigurationXmlPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationXmlPackageVersion>
<MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>
<MicrosoftExtensionsDependencyInjectionPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsDependencyInjectionPackageVersion>
<MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>
<MicrosoftExtensionsFileProvidersCompositePackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsFileProvidersCompositePackageVersion>
<MicrosoftExtensionsFileProvidersPhysicalPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsFileProvidersPhysicalPackageVersion>
<MicrosoftExtensionsFileSystemGlobbingPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsFileSystemGlobbingPackageVersion>
<MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>
<MicrosoftExtensionsHostingAbstractionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsHostingAbstractionsPackageVersion>
<MicrosoftExtensionsHostingPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsHostingPackageVersion>
<MicrosoftExtensionsHttpPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsHttpPackageVersion>
<MicrosoftExtensionsLoggingAbstractionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsLoggingAbstractionsPackageVersion>
<MicrosoftExtensionsLoggingConfigurationPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsLoggingConfigurationPackageVersion>
<MicrosoftExtensionsLoggingConsolePackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsLoggingConsolePackageVersion>
<MicrosoftExtensionsLoggingDebugPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsLoggingDebugPackageVersion>
<MicrosoftExtensionsLoggingEventSourcePackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsLoggingEventSourcePackageVersion>
<MicrosoftExtensionsLoggingEventLogPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsLoggingEventLogPackageVersion>
<MicrosoftExtensionsLoggingPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsLoggingPackageVersion>
<MicrosoftExtensionsLoggingTraceSourcePackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsLoggingTraceSourcePackageVersion>
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
<MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>
<MicrosoftExtensionsOptionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsOptionsPackageVersion>
<MicrosoftExtensionsPrimitivesPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsPrimitivesPackageVersion>
<MicrosoftExtensionsInternalTransportPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsInternalTransportPackageVersion>
<SystemComponentModelAnnotationsPackageVersion>5.0.0-rc.1.20451.14</SystemComponentModelAnnotationsPackageVersion>
<SystemDiagnosticsDiagnosticSourcePackageVersion>5.0.0-rc.1.20451.14</SystemDiagnosticsDiagnosticSourcePackageVersion>
<SystemDiagnosticsEventLogPackageVersion>5.0.0-rc.1.20451.14</SystemDiagnosticsEventLogPackageVersion>
<SystemDirectoryServicesProtocolsPackageVersion>5.0.0-rc.1.20451.14</SystemDirectoryServicesProtocolsPackageVersion>
<SystemDrawingCommonPackageVersion>5.0.0-rc.1.20451.14</SystemDrawingCommonPackageVersion>
<SystemIOPipelinesPackageVersion>5.0.0-rc.1.20451.14</SystemIOPipelinesPackageVersion>
<SystemNetHttpJsonPackageVersion>5.0.0-rc.1.20451.14</SystemNetHttpJsonPackageVersion>
<SystemNetHttpWinHttpHandlerPackageVersion>5.0.0-rc.1.20451.14</SystemNetHttpWinHttpHandlerPackageVersion>
<SystemNetWebSocketsWebSocketProtocolPackageVersion>5.0.0-rc.1.20451.14</SystemNetWebSocketsWebSocketProtocolPackageVersion>
<SystemReflectionMetadataPackageVersion>5.0.0-rc.1.20451.14</SystemReflectionMetadataPackageVersion>
<SystemResourcesExtensionsPackageVersion>5.0.0-rc.1.20451.14</SystemResourcesExtensionsPackageVersion>
<SystemRuntimeCompilerServicesUnsafePackageVersion>5.0.0-rc.1.20451.14</SystemRuntimeCompilerServicesUnsafePackageVersion>
<!-- System.Security.AccessControl should only be referenced in Dependencies.props and RTMVersions.csproj. -->
<SystemSecurityAccessControlPackageVersion>5.0.0-rc.1.20451.14</SystemSecurityAccessControlPackageVersion>
<SystemSecurityCryptographyCngPackageVersion>5.0.0-rc.1.20451.14</SystemSecurityCryptographyCngPackageVersion>
<SystemSecurityCryptographyPkcsPackageVersion>5.0.0-rc.1.20451.14</SystemSecurityCryptographyPkcsPackageVersion>
<SystemSecurityCryptographyXmlPackageVersion>5.0.0-rc.1.20451.14</SystemSecurityCryptographyXmlPackageVersion>
<SystemSecurityPermissionsPackageVersion>5.0.0-rc.1.20451.14</SystemSecurityPermissionsPackageVersion>
<SystemSecurityPrincipalWindowsPackageVersion>5.0.0-rc.1.20451.14</SystemSecurityPrincipalWindowsPackageVersion>
<SystemServiceProcessServiceControllerPackageVersion>5.0.0-rc.1.20451.14</SystemServiceProcessServiceControllerPackageVersion>
<SystemTextEncodingsWebPackageVersion>5.0.0-rc.1.20451.14</SystemTextEncodingsWebPackageVersion>
<SystemTextJsonPackageVersion>5.0.0-rc.1.20451.14</SystemTextJsonPackageVersion>
<SystemThreadingChannelsPackageVersion>5.0.0-rc.1.20451.14</SystemThreadingChannelsPackageVersion>
<SystemWindowsExtensionsPackageVersion>5.0.0-rc.1.20451.14</SystemWindowsExtensionsPackageVersion>
<MicrosoftExtensionsDependencyModelPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsDependencyModelPackageVersion>
<MicrosoftNETCoreAppInternalPackageVersion>5.0.0-rc.2.20474.8</MicrosoftNETCoreAppInternalPackageVersion>
<MicrosoftNETCoreAppRefPackageVersion>5.0.0-rc.2.20474.8</MicrosoftNETCoreAppRefPackageVersion>
<MicrosoftNETCoreAppRuntimewinx64PackageVersion>5.0.0-rc.2.20474.8</MicrosoftNETCoreAppRuntimewinx64PackageVersion>
<MicrosoftNETCoreBrowserDebugHostTransportPackageVersion>5.0.0-rc.2.20474.8</MicrosoftNETCoreBrowserDebugHostTransportPackageVersion>
<MicrosoftWin32RegistryPackageVersion>5.0.0-rc.2.20474.8</MicrosoftWin32RegistryPackageVersion>
<MicrosoftWin32SystemEventsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftWin32SystemEventsPackageVersion>
<MicrosoftExtensionsCachingAbstractionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsCachingAbstractionsPackageVersion>
<MicrosoftExtensionsCachingMemoryPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsCachingMemoryPackageVersion>
<MicrosoftExtensionsConfigurationAbstractionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationAbstractionsPackageVersion>
<MicrosoftExtensionsConfigurationBinderPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationBinderPackageVersion>
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
<MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>
<MicrosoftExtensionsConfigurationIniPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationIniPackageVersion>
<MicrosoftExtensionsConfigurationJsonPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationJsonPackageVersion>
<MicrosoftExtensionsConfigurationPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationPackageVersion>
<MicrosoftExtensionsConfigurationUserSecretsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
<MicrosoftExtensionsConfigurationXmlPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationXmlPackageVersion>
<MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>
<MicrosoftExtensionsDependencyInjectionPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsDependencyInjectionPackageVersion>
<MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>
<MicrosoftExtensionsFileProvidersCompositePackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsFileProvidersCompositePackageVersion>
<MicrosoftExtensionsFileProvidersPhysicalPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsFileProvidersPhysicalPackageVersion>
<MicrosoftExtensionsFileSystemGlobbingPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsFileSystemGlobbingPackageVersion>
<MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>
<MicrosoftExtensionsHostingAbstractionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsHostingAbstractionsPackageVersion>
<MicrosoftExtensionsHostingPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsHostingPackageVersion>
<MicrosoftExtensionsHttpPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsHttpPackageVersion>
<MicrosoftExtensionsLoggingAbstractionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsLoggingAbstractionsPackageVersion>
<MicrosoftExtensionsLoggingConfigurationPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsLoggingConfigurationPackageVersion>
<MicrosoftExtensionsLoggingConsolePackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsLoggingConsolePackageVersion>
<MicrosoftExtensionsLoggingDebugPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsLoggingDebugPackageVersion>
<MicrosoftExtensionsLoggingEventSourcePackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsLoggingEventSourcePackageVersion>
<MicrosoftExtensionsLoggingEventLogPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsLoggingEventLogPackageVersion>
<MicrosoftExtensionsLoggingPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsLoggingPackageVersion>
<MicrosoftExtensionsLoggingTraceSourcePackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsLoggingTraceSourcePackageVersion>
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
<MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>
<MicrosoftExtensionsOptionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsOptionsPackageVersion>
<MicrosoftExtensionsPrimitivesPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsPrimitivesPackageVersion>
<MicrosoftExtensionsInternalTransportPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsInternalTransportPackageVersion>
<SystemComponentModelAnnotationsPackageVersion>5.0.0-rc.2.20474.8</SystemComponentModelAnnotationsPackageVersion>
<SystemDiagnosticsDiagnosticSourcePackageVersion>5.0.0-rc.2.20474.8</SystemDiagnosticsDiagnosticSourcePackageVersion>
<SystemDiagnosticsEventLogPackageVersion>5.0.0-rc.2.20474.8</SystemDiagnosticsEventLogPackageVersion>
<SystemDirectoryServicesProtocolsPackageVersion>5.0.0-rc.2.20474.8</SystemDirectoryServicesProtocolsPackageVersion>
<SystemDrawingCommonPackageVersion>5.0.0-rc.2.20474.8</SystemDrawingCommonPackageVersion>
<SystemIOPipelinesPackageVersion>5.0.0-rc.2.20474.8</SystemIOPipelinesPackageVersion>
<SystemNetHttpJsonPackageVersion>5.0.0-rc.2.20474.8</SystemNetHttpJsonPackageVersion>
<SystemNetHttpWinHttpHandlerPackageVersion>5.0.0-rc.2.20474.8</SystemNetHttpWinHttpHandlerPackageVersion>
<SystemNetWebSocketsWebSocketProtocolPackageVersion>5.0.0-rc.2.20474.8</SystemNetWebSocketsWebSocketProtocolPackageVersion>
<SystemReflectionMetadataPackageVersion>5.0.0-rc.2.20474.8</SystemReflectionMetadataPackageVersion>
<SystemResourcesExtensionsPackageVersion>5.0.0-rc.2.20474.8</SystemResourcesExtensionsPackageVersion>
<SystemRuntimeCompilerServicesUnsafePackageVersion>5.0.0-rc.2.20474.8</SystemRuntimeCompilerServicesUnsafePackageVersion>
<SystemSecurityCryptographyCngPackageVersion>5.0.0-rc.2.20474.8</SystemSecurityCryptographyCngPackageVersion>
<SystemSecurityCryptographyPkcsPackageVersion>5.0.0-rc.2.20474.8</SystemSecurityCryptographyPkcsPackageVersion>
<SystemSecurityCryptographyXmlPackageVersion>5.0.0-rc.2.20474.8</SystemSecurityCryptographyXmlPackageVersion>
<SystemSecurityPermissionsPackageVersion>5.0.0-rc.2.20474.8</SystemSecurityPermissionsPackageVersion>
<SystemSecurityPrincipalWindowsPackageVersion>5.0.0-rc.2.20474.8</SystemSecurityPrincipalWindowsPackageVersion>
<SystemServiceProcessServiceControllerPackageVersion>5.0.0-rc.2.20474.8</SystemServiceProcessServiceControllerPackageVersion>
<SystemTextEncodingsWebPackageVersion>5.0.0-rc.2.20474.8</SystemTextEncodingsWebPackageVersion>
<SystemTextJsonPackageVersion>5.0.0-rc.2.20474.8</SystemTextJsonPackageVersion>
<SystemThreadingChannelsPackageVersion>5.0.0-rc.2.20474.8</SystemThreadingChannelsPackageVersion>
<SystemWindowsExtensionsPackageVersion>5.0.0-rc.2.20474.8</SystemWindowsExtensionsPackageVersion>
<!-- Only listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 -->
<MicrosoftNETCorePlatformsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftNETCorePlatformsPackageVersion>
<!-- Packages from dotnet/blazor -->
<MicrosoftAspNetCoreComponentsWebAssemblyRuntimePackageVersion>3.2.0</MicrosoftAspNetCoreComponentsWebAssemblyRuntimePackageVersion>
<MicrosoftNETCorePlatformsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftNETCorePlatformsPackageVersion>
<!-- Packages from dotnet/efcore -->
<dotnetefPackageVersion>5.0.0-rc.1.20451.13</dotnetefPackageVersion>
<MicrosoftEntityFrameworkCoreInMemoryPackageVersion>5.0.0-rc.1.20451.13</MicrosoftEntityFrameworkCoreInMemoryPackageVersion>
<MicrosoftEntityFrameworkCoreRelationalPackageVersion>5.0.0-rc.1.20451.13</MicrosoftEntityFrameworkCoreRelationalPackageVersion>
<MicrosoftEntityFrameworkCoreSqlitePackageVersion>5.0.0-rc.1.20451.13</MicrosoftEntityFrameworkCoreSqlitePackageVersion>
<MicrosoftEntityFrameworkCoreSqlServerPackageVersion>5.0.0-rc.1.20451.13</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
<MicrosoftEntityFrameworkCoreToolsPackageVersion>5.0.0-rc.1.20451.13</MicrosoftEntityFrameworkCoreToolsPackageVersion>
<MicrosoftEntityFrameworkCorePackageVersion>5.0.0-rc.1.20451.13</MicrosoftEntityFrameworkCorePackageVersion>
<MicrosoftEntityFrameworkCoreDesignPackageVersion>5.0.0-rc.1.20451.13</MicrosoftEntityFrameworkCoreDesignPackageVersion>
<dotnetefPackageVersion>5.0.0-rc.2.20474.5</dotnetefPackageVersion>
<MicrosoftEntityFrameworkCoreInMemoryPackageVersion>5.0.0-rc.2.20474.5</MicrosoftEntityFrameworkCoreInMemoryPackageVersion>
<MicrosoftEntityFrameworkCoreRelationalPackageVersion>5.0.0-rc.2.20474.5</MicrosoftEntityFrameworkCoreRelationalPackageVersion>
<MicrosoftEntityFrameworkCoreSqlitePackageVersion>5.0.0-rc.2.20474.5</MicrosoftEntityFrameworkCoreSqlitePackageVersion>
<MicrosoftEntityFrameworkCoreSqlServerPackageVersion>5.0.0-rc.2.20474.5</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
<MicrosoftEntityFrameworkCoreToolsPackageVersion>5.0.0-rc.2.20474.5</MicrosoftEntityFrameworkCoreToolsPackageVersion>
<MicrosoftEntityFrameworkCorePackageVersion>5.0.0-rc.2.20474.5</MicrosoftEntityFrameworkCorePackageVersion>
<MicrosoftEntityFrameworkCoreDesignPackageVersion>5.0.0-rc.2.20474.5</MicrosoftEntityFrameworkCoreDesignPackageVersion>
<!-- Packages from dotnet/arcade -->
<MicrosoftDotNetBuildTasksInstallersPackageVersion>5.0.0-beta.20431.1</MicrosoftDotNetBuildTasksInstallersPackageVersion>
<MicrosoftDotNetBuildTasksInstallersPackageVersion>5.0.0-beta.20467.6</MicrosoftDotNetBuildTasksInstallersPackageVersion>
</PropertyGroup>
<!--
@ -162,36 +156,6 @@
-->
<MicrosoftNETCoreAppRuntimeVersion>$(MicrosoftNETCoreAppRuntimewinx64PackageVersion)</MicrosoftNETCoreAppRuntimeVersion>
</PropertyGroup>
<!--
We ship ref/ assemblies for runtime packages in our targeting targeting pack. When servicing that targeting pack,
these assemblies must not change. Must also compile our assemblies against the initial ref/ assemblies for runtime
packages. But, need to test against the latest implementation assemblies and ship them in our shared framework.
Upshot is we need Major.Minor.0 runtime packages for compilation and the targeting pack and Major.Minor.Latest
runtime packages for everything else. This is not an issue for assemblies available in Microsoft.NETCore.App.Ref or
Microsoft.Extensions.Internal.Transport because it is next to impossible we would service those packages.
System.Security.AccessControl should only be referenced in Dependencies.props and RTMVersions.csproj. Because
it's a transitive reference, we reship the ref/ assembly in Microsoft.AspNetCore.App.Ref. dotnet/runtime ships
the implementation assemblies in Microsoft.NETCore.App.Runtime.* packages.
If testing this configuration prior to servicing, update the versions of dependencies too. E.g. change
`$(SystemSecurityPrincipalWindowsV0PackageVersion)` if you change `$(SystemSecurityAccessControlV0PackageVersion)`
because System.Security.AccessControl will otherwise be loadable. This should not be necessary in servicing.
-->
<PropertyGroup Condition=" '$(IsServicingBuild)' == 'true' ">
<MicrosoftWin32RegistryV0PackageVersion>$(MicrosoftWin32RegistryPackageVersion.Split('.')[0]).$(MicrosoftWin32RegistryPackageVersion.Split('.')[1]).0</MicrosoftWin32RegistryV0PackageVersion>
<MicrosoftWin32SystemEventsV0PackageVersion>$(MicrosoftWin32SystemEventsPackageVersion.Split('.')[0]).$(MicrosoftWin32SystemEventsPackageVersion.Split('.')[1]).0</MicrosoftWin32SystemEventsV0PackageVersion>
<SystemDiagnosticsEventLogV0PackageVersion>$(SystemDiagnosticsEventLogPackageVersion.Split('.')[0]).$(SystemDiagnosticsEventLogPackageVersion.Split('.')[1]).0</SystemDiagnosticsEventLogV0PackageVersion>
<SystemDrawingCommonV0PackageVersion>$(SystemDrawingCommonPackageVersion.Split('.')[0]).$(SystemDrawingCommonPackageVersion.Split('.')[1]).0</SystemDrawingCommonV0PackageVersion>
<SystemIOPipelinesV0PackageVersion>$(SystemIOPipelinesPackageVersion.Split('.')[0]).$(SystemIOPipelinesPackageVersion.Split('.')[1]).0</SystemIOPipelinesV0PackageVersion>
<SystemSecurityAccessControlV0PackageVersion>$(SystemSecurityAccessControlPackageVersion.Split('.')[0]).$(SystemSecurityAccessControlPackageVersion.Split('.')[1]).0</SystemSecurityAccessControlV0PackageVersion>
<SystemSecurityCryptographyCngV0PackageVersion>$(SystemSecurityCryptographyCngPackageVersion.Split('.')[0]).$(SystemSecurityCryptographyCngPackageVersion.Split('.')[1]).0</SystemSecurityCryptographyCngV0PackageVersion>
<SystemSecurityCryptographyPkcsV0PackageVersion>$(SystemSecurityCryptographyPkcsPackageVersion.Split('.')[0]).$(SystemSecurityCryptographyPkcsPackageVersion.Split('.')[1]).0</SystemSecurityCryptographyPkcsV0PackageVersion>
<SystemSecurityCryptographyXmlV0PackageVersion>$(SystemSecurityCryptographyXmlPackageVersion.Split('.')[0]).$(SystemSecurityCryptographyXmlPackageVersion.Split('.')[1]).0</SystemSecurityCryptographyXmlV0PackageVersion>
<SystemSecurityPermissionsV0PackageVersion>$(SystemSecurityPermissionsPackageVersion.Split('.')[0]).$(SystemSecurityPermissionsPackageVersion.Split('.')[1]).0</SystemSecurityPermissionsV0PackageVersion>
<SystemSecurityPrincipalWindowsV0PackageVersion>$(SystemSecurityPrincipalWindowsPackageVersion.Split('.')[0]).$(SystemSecurityPrincipalWindowsPackageVersion.Split('.')[1]).0</SystemSecurityPrincipalWindowsV0PackageVersion>
<SystemWindowsExtensionsV0PackageVersion>$(SystemWindowsExtensionsPackageVersion.Split('.')[0]).$(SystemWindowsExtensionsPackageVersion.Split('.')[1]).0</SystemWindowsExtensionsV0PackageVersion>
</PropertyGroup>
<PropertyGroup Label="Manual">
<!-- DiagnosticAdapter package pinned temporarily until migrated/deprecated -->
<MicrosoftExtensionsDiagnosticAdapterPackageVersion>5.0.0-preview.4.20180.4</MicrosoftExtensionsDiagnosticAdapterPackageVersion>
@ -225,7 +189,7 @@
<MicrosoftCodeAnalysisCommonPackageVersion>3.7.0</MicrosoftCodeAnalysisCommonPackageVersion>
<MicrosoftCodeAnalysisCSharpPackageVersion>3.7.0</MicrosoftCodeAnalysisCSharpPackageVersion>
<MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>3.7.0</MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>
<MicrosoftCodeAnalysisPublicApiAnalyzersPackageVersion>3.3.0-beta2.final</MicrosoftCodeAnalysisPublicApiAnalyzersPackageVersion>
<MicrosoftCodeAnalysisPublicApiAnalyzersPackageVersion>3.3.0</MicrosoftCodeAnalysisPublicApiAnalyzersPackageVersion>
<MicrosoftCodeAnalysisFxCopAnalyzersPackageVersion>3.0.0</MicrosoftCodeAnalysisFxCopAnalyzersPackageVersion>
<MicrosoftCssParserPackageVersion>1.0.0-20200708.1</MicrosoftCssParserPackageVersion>
<MicrosoftIdentityModelClientsActiveDirectoryPackageVersion>3.19.8</MicrosoftIdentityModelClientsActiveDirectoryPackageVersion>
@ -239,10 +203,11 @@
<MicrosoftWebAdministrationPackageVersion>11.1.0</MicrosoftWebAdministrationPackageVersion>
<MicrosoftWebXdtPackageVersion>1.4.0</MicrosoftWebXdtPackageVersion>
<SystemIdentityModelTokensJwtPackageVersion>6.7.1</SystemIdentityModelTokensJwtPackageVersion>
<NuGetVersioningPackageVersion>5.7.0</NuGetVersioningPackageVersion>
<!-- Packages from 2.1, 2.2, and 3.1 branches used for site extension build. -->
<MicrosoftAspNetCoreAzureAppServicesSiteExtension21PackageVersion>2.1.1</MicrosoftAspNetCoreAzureAppServicesSiteExtension21PackageVersion>
<MicrosoftAspNetCoreAzureAppServicesSiteExtension22PackageVersion>2.2.0</MicrosoftAspNetCoreAzureAppServicesSiteExtension22PackageVersion>
<MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion>3.1.7-servicing-20372-13</MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion>
<MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion>3.1.8-servicing-20421-6</MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion>
<MicrosoftAspNetCoreAzureAppServicesSiteExtension31x64PackageVersion>$(MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion)</MicrosoftAspNetCoreAzureAppServicesSiteExtension31x64PackageVersion>
<MicrosoftAspNetCoreAzureAppServicesSiteExtension31x86PackageVersion>$(MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion)</MicrosoftAspNetCoreAzureAppServicesSiteExtension31x86PackageVersion>
<!-- 3rd party dependencies -->
@ -251,29 +216,30 @@
<CastleCorePackageVersion>4.2.1</CastleCorePackageVersion>
<CommandLineParserPackageVersion>2.3.0</CommandLineParserPackageVersion>
<FSharpCorePackageVersion>4.2.1</FSharpCorePackageVersion>
<GoogleProtobufPackageVersion>3.10.0</GoogleProtobufPackageVersion>
<GrpcAspNetCorePackageVersion>2.27.0</GrpcAspNetCorePackageVersion>
<GrpcAuthPackageVersion>2.27.0</GrpcAuthPackageVersion>
<GrpcNetClientPackageVersion>2.27.0</GrpcNetClientPackageVersion>
<GrpcToolsPackageVersion>2.27.0</GrpcToolsPackageVersion>
<GoogleProtobufPackageVersion>3.13.0</GoogleProtobufPackageVersion>
<GrpcAspNetCorePackageVersion>2.32.0-pre1</GrpcAspNetCorePackageVersion>
<GrpcAuthPackageVersion>2.32.0-pre1</GrpcAuthPackageVersion>
<GrpcNetClientPackageVersion>2.32.0-pre1</GrpcNetClientPackageVersion>
<GrpcToolsPackageVersion>2.32.0-pre1</GrpcToolsPackageVersion>
<IdentityServer4AspNetIdentityPackageVersion>4.0.4</IdentityServer4AspNetIdentityPackageVersion>
<IdentityServer4EntityFrameworkPackageVersion>4.0.4</IdentityServer4EntityFrameworkPackageVersion>
<IdentityServer4PackageVersion>4.0.4</IdentityServer4PackageVersion>
<IdentityServer4StoragePackageVersion>4.0.4</IdentityServer4StoragePackageVersion>
<IdentityServer4EntityFrameworkStoragePackageVersion>4.0.4</IdentityServer4EntityFrameworkStoragePackageVersion>
<MessagePackPackageVersion>2.1.90</MessagePackPackageVersion>
<MicrosoftIdentityWebPackageVersion>0.3.1-preview</MicrosoftIdentityWebPackageVersion>
<MicrosoftIdentityWebUIPackageVersion>0.3.1-preview</MicrosoftIdentityWebUIPackageVersion>
<MicrosoftIdentityWebPackageVersion>0.4.0-preview</MicrosoftIdentityWebPackageVersion>
<MicrosoftIdentityWebMicrosoftGraphPackageVersion>0.4.0-preview</MicrosoftIdentityWebMicrosoftGraphPackageVersion>
<MicrosoftIdentityWebUIPackageVersion>0.4.0-preview</MicrosoftIdentityWebUIPackageVersion>
<MessagePackAnalyzerPackageVersion>$(MessagePackPackageVersion)</MessagePackAnalyzerPackageVersion>
<MoqPackageVersion>4.10.0</MoqPackageVersion>
<MonoCecilPackageVersion>0.11.2</MonoCecilPackageVersion>
<NewtonsoftJsonBsonPackageVersion>1.0.2</NewtonsoftJsonBsonPackageVersion>
<NewtonsoftJsonPackageVersion>12.0.2</NewtonsoftJsonPackageVersion>
<NSwagApiDescriptionClientPackageVersion>13.0.4</NSwagApiDescriptionClientPackageVersion>
<SeleniumSupportPackageVersion>3.12.1</SeleniumSupportPackageVersion>
<SeleniumSupportPackageVersion>4.0.0-alpha05</SeleniumSupportPackageVersion>
<SeleniumWebDriverMicrosoftDriverPackageVersion>17.17134.0</SeleniumWebDriverMicrosoftDriverPackageVersion>
<SeleniumWebDriverChromeDriverPackageVersion>2.43.0</SeleniumWebDriverChromeDriverPackageVersion>
<SeleniumWebDriverPackageVersion>3.12.1</SeleniumWebDriverPackageVersion>
<SeleniumWebDriverChromeDriverPackageVersion>85.0.4183.8300</SeleniumWebDriverChromeDriverPackageVersion>
<SeleniumWebDriverPackageVersion>4.0.0-alpha05</SeleniumWebDriverPackageVersion>
<SerilogExtensionsLoggingPackageVersion>1.4.0</SerilogExtensionsLoggingPackageVersion>
<SerilogSinksFilePackageVersion>4.0.0</SerilogSinksFilePackageVersion>
<StackExchangeRedisPackageVersion>2.0.593</StackExchangeRedisPackageVersion>

View File

@ -1,4 +1,4 @@
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. See the LICENSE file in the project root for more information. -->
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. -->
<Project>
<Import Project="Sdk.props" Sdk="Microsoft.DotNet.Arcade.Sdk" />
</Project>

View File

@ -8,7 +8,7 @@ param(
[Parameter(Mandatory=$false)][string] $EnableSourceLinkValidation,
[Parameter(Mandatory=$false)][string] $EnableSigningValidation,
[Parameter(Mandatory=$false)][string] $EnableNugetValidation,
[Parameter(Mandatory=$true)][string] $PublishInstallersAndChecksums,
[Parameter(Mandatory=$false)][string] $PublishInstallersAndChecksums,
[Parameter(Mandatory=$false)][string] $ArtifactsPublishingAdditionalParameters,
[Parameter(Mandatory=$false)][string] $SigningValidationAdditionalParameters
)
@ -16,7 +16,7 @@ param(
try {
. $PSScriptRoot\post-build-utils.ps1
# Hard coding darc version till the next arcade-services roll out, cos this version has required API changes for darc add-build-to-channel
. $PSScriptRoot\..\darc-init.ps1 -darcVersion "1.1.0-beta.20418.1"
$darc = Get-Darc "1.1.0-beta.20418.1"
$optionalParams = [System.Collections.ArrayList]::new()
@ -29,7 +29,7 @@ try {
$optionalParams.Add("--no-wait") | Out-Null
}
if ("true" -eq $PublishInstallersAndChecksums) {
if ("false" -ne $PublishInstallersAndChecksums) {
$optionalParams.Add("--publish-installers-and-checksums") | Out-Null
}
@ -50,7 +50,7 @@ try {
}
}
& darc add-build-to-channel `
& $darc add-build-to-channel `
--id $buildId `
--publishing-infra-version $PublishingInfraVersion `
--default-channels `

View File

@ -144,11 +144,27 @@ $ValidatePackage = {
if ($FailedFiles -eq 0) {
Write-Host 'Passed.'
return 0
return [pscustomobject]@{
result = 0
packagePath = $PackagePath
}
}
else {
Write-PipelineTelemetryError -Category 'SourceLink' -Message "$PackagePath has broken SourceLink links."
return 1
return [pscustomobject]@{
result = 1
packagePath = $PackagePath
}
}
}
function CheckJobResult(
$result,
$packagePath,
[ref]$ValidationFailures) {
if ($jobResult.result -ne '0') {
Write-PipelineTelemetryError -Category 'SourceLink' -Message "$packagePath has broken SourceLink links."
$ValidationFailures.Value++
}
}
@ -211,10 +227,8 @@ function ValidateSourceLinkLinks {
}
foreach ($Job in @(Get-Job -State 'Completed')) {
$jobResult = Receive-Job -Id $Job.Id
if ($jobResult -ne '0') {
$ValidationFailures++
}
$jobResult = Wait-Job -Id $Job.Id | Receive-Job
CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures)
Remove-Job -Id $Job.Id
}
}

View File

@ -141,11 +141,6 @@ $CountMissingSymbols = {
if ($using:Clean) {
Remove-Item $ExtractPath -Recurse -Force
}
if ($MissingSymbols -ne 0)
{
Write-PipelineTelemetryError -Category 'CheckSymbols' -Message "Missing symbols for $MissingSymbols modules in the package $PackagePath"
}
Pop-Location
@ -165,6 +160,7 @@ function CheckJobResult(
$DupedSymbols.Value++
}
elseif ($jobResult.result -ne '0') {
Write-PipelineTelemetryError -Category 'CheckSymbols' -Message "Missing symbols for $result modules in the package $packagePath"
$TotalFailures.Value++
}
}
@ -201,7 +197,6 @@ function CheckSymbolsAvailable {
Start-Job -ScriptBlock $CountMissingSymbols -ArgumentList $FullName | Out-Null
$NumJobs = @(Get-Job -State 'Running').Count
Write-Host $NumJobs
while ($NumJobs -ge $MaxParallelJobs) {
Write-Host "There are $NumJobs validation jobs running right now. Waiting $SecondsBetweenLoadChecks seconds to check again."

View File

@ -64,7 +64,7 @@ try {
$GlobalJson.tools | Add-Member -Name "vs" -Value (ConvertFrom-Json "{ `"version`": `"16.5`" }") -MemberType NoteProperty
}
if( -not ($GlobalJson.tools.PSObject.Properties.Name -match "xcopy-msbuild" )) {
$GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "16.5.0-alpha" -MemberType NoteProperty
$GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "16.8.0-preview3" -MemberType NoteProperty
}
if ($GlobalJson.tools."xcopy-msbuild".Trim() -ine "none") {
$xcopyMSBuildToolsFolder = InitializeXCopyMSBuild $GlobalJson.tools."xcopy-msbuild" -install $true

View File

@ -4,7 +4,7 @@ parameters:
artifactsPublishingAdditionalParameters: ''
dependsOn:
- Validate
publishInstallersAndChecksums: false
publishInstallersAndChecksums: true
symbolPublishingAdditionalParameters: ''
stageName: ''
channelName: ''
@ -158,7 +158,7 @@ stages:
/p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/'
/p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts/'
/p:Configuration=Release
/p:PublishInstallersAndChecksums=true
/p:PublishInstallersAndChecksums=${{ parameters.publishInstallersAndChecksums }}
/p:ChecksumsTargetStaticFeed=$(InternalChecksumsBlobFeedUrl)
/p:ChecksumsAzureAccountKey=$(InternalChecksumsBlobFeedKey)
/p:InstallersTargetStaticFeed=$(InternalInstallersBlobFeedUrl)

View File

@ -4,7 +4,7 @@ parameters:
artifactsPublishingAdditionalParameters: ''
dependsOn:
- Validate
publishInstallersAndChecksums: false
publishInstallersAndChecksums: true
symbolPublishingAdditionalParameters: ''
stageName: ''
channelName: ''

View File

@ -19,7 +19,7 @@ parameters:
enableSigningValidation: true
enableSymbolValidation: false
enableNugetValidation: true
publishInstallersAndChecksums: false
publishInstallersAndChecksums: true
SDLValidationParameters:
enable: false
continueOnError: false

View File

@ -19,12 +19,18 @@ parameters:
DisplayNamePrefix: 'Send job to Helix' # optional -- rename the beginning of the displayName of the steps in AzDO
condition: succeeded() # optional -- condition for step to execute; defaults to succeeded()
continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false
osGroup: '' # required -- operating system for the job
steps:
- powershell: $(Build.SourcesDirectory)\eng\common\msbuild.ps1 $(Build.SourcesDirectory)\eng\common\performance\${{ parameters.ProjectFile }} /restore /t:Test /bl:$(Build.SourcesDirectory)\artifacts\log\$env:BuildConfig\SendToHelix.binlog
displayName: ${{ parameters.DisplayNamePrefix }} (Windows)
env:
- template: /eng/pipelines/common/templates/runtimes/send-to-helix-inner-step.yml
parameters:
osGroup: ${{ parameters.osGroup }}
sendParams: $(Build.SourcesDirectory)/eng/common/performance/${{ parameters.ProjectFile }} /restore /t:Test /bl:$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/SendToHelix.binlog
displayName: ${{ parameters.DisplayNamePrefix }}
condition: ${{ parameters.condition }}
continueOnError: ${{ parameters.continueOnError }}
environment:
BuildConfig: $(_BuildConfig)
HelixSource: ${{ parameters.HelixSource }}
HelixType: ${{ parameters.HelixType }}
@ -42,27 +48,3 @@ steps:
WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }}
Creator: ${{ parameters.Creator }}
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT'))
continueOnError: ${{ parameters.continueOnError }}
- script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/performance/${{ parameters.ProjectFile }} /restore /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog
displayName: ${{ parameters.DisplayNamePrefix }} (Unix)
env:
BuildConfig: $(_BuildConfig)
HelixSource: ${{ parameters.HelixSource }}
HelixType: ${{ parameters.HelixType }}
HelixBuild: ${{ parameters.HelixBuild }}
HelixTargetQueues: ${{ parameters.HelixTargetQueues }}
HelixAccessToken: ${{ parameters.HelixAccessToken }}
HelixPreCommands: ${{ parameters.HelixPreCommands }}
HelixPostCommands: ${{ parameters.HelixPostCommands }}
WorkItemDirectory: ${{ parameters.WorkItemDirectory }}
CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }}
IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }}
DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }}
DotNetCliVersion: ${{ parameters.DotNetCliVersion }}
EnableXUnitReporter: ${{ parameters.EnableXUnitReporter }}
WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }}
Creator: ${{ parameters.Creator }}
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT'))
continueOnError: ${{ parameters.continueOnError }}

View File

@ -3,20 +3,21 @@ parameters:
JobLabel: ''
steps:
- task: CopyFiles@2
displayName: Copy Logs to $(Build.StagingDirectory)\BuildLogs
- task: Powershell@2
displayName: Prepare Binlogs to Upload
inputs:
SourceFolder: $(Build.SourcesDirectory)\artifacts
Contents: |
**/*.log
**/*.binlog
TargetFolder: '$(Build.StagingDirectory)\BuildLogs'
targetType: inline
script: |
New-Item -ItemType Directory $(Build.SourcesDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
Move-Item -Path $(Build.SourcesDirectory)/artifacts/log/Debug/* $(Build.SourcesDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
continueOnError: true
condition: succeededOrFailed()
condition: always()
- task: PublishPipelineArtifact@1
displayName: Publish BuildLogs
- task: PublishBuildArtifacts@1
displayName: Publish Logs
inputs:
targetPath: '$(Build.StagingDirectory)\BuildLogs'
artifactName: ${{ parameters.JobLabel }}
condition: succeededOrFailed()
PathtoPublish: '$(Build.SourcesDirectory)/PostBuildLogs'
PublishLocation: Container
ArtifactName: PostBuildLogs
continueOnError: true
condition: always()

View File

@ -240,8 +240,8 @@ function GetDotNetInstallScript([string] $dotnetRoot) {
return $installScript
}
function InstallDotNetSdk([string] $dotnetRoot, [string] $version, [string] $architecture = '') {
InstallDotNet $dotnetRoot $version $architecture '' $false $runtimeSourceFeed $runtimeSourceFeedKey
function InstallDotNetSdk([string] $dotnetRoot, [string] $version, [string] $architecture = '', [switch] $noPath) {
InstallDotNet $dotnetRoot $version $architecture '' $false $runtimeSourceFeed $runtimeSourceFeedKey -noPath:$noPath
}
function InstallDotNet([string] $dotnetRoot,
@ -250,7 +250,8 @@ function InstallDotNet([string] $dotnetRoot,
[string] $runtime = '',
[bool] $skipNonVersionedFiles = $false,
[string] $runtimeSourceFeed = '',
[string] $runtimeSourceFeedKey = '') {
[string] $runtimeSourceFeedKey = '',
[switch] $noPath) {
$installScript = GetDotNetInstallScript $dotnetRoot
$installParameters = @{
@ -261,6 +262,7 @@ function InstallDotNet([string] $dotnetRoot,
if ($architecture) { $installParameters.Architecture = $architecture }
if ($runtime) { $installParameters.Runtime = $runtime }
if ($skipNonVersionedFiles) { $installParameters.SkipNonVersionedFiles = $skipNonVersionedFiles }
if ($noPath) { $installParameters.NoPath = $True }
try {
& $installScript @installParameters
@ -310,9 +312,15 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements =
return $global:_MSBuildExe
}
$vsMinVersionReqdStr = '16.5'
# Minimum VS version to require.
$vsMinVersionReqdStr = '16.8'
$vsMinVersionReqd = [Version]::new($vsMinVersionReqdStr)
# If the version of msbuild is going to be xcopied,
# use this version. Version matches a package here:
# https://dev.azure.com/dnceng/public/_packaging?_a=package&feed=dotnet-eng&package=RoslynTools.MSBuild&protocolType=NuGet&version=16.8.0-preview3&view=overview
$defaultXCopyMSBuildVersion = '16.8.0-preview3'
if (!$vsRequirements) { $vsRequirements = $GlobalJson.tools.vs }
$vsMinVersionStr = if ($vsRequirements.version) { $vsRequirements.version } else { $vsMinVersionReqdStr }
$vsMinVersion = [Version]::new($vsMinVersionStr)
@ -347,23 +355,28 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements =
$xcopyMSBuildVersion = $GlobalJson.tools.'xcopy-msbuild'
$vsMajorVersion = $xcopyMSBuildVersion.Split('.')[0]
} else {
#if vs version provided in global.json is incompatible then use the default version for xcopy msbuild download
#if vs version provided in global.json is incompatible (too low) then use the default version for xcopy msbuild download
if($vsMinVersion -lt $vsMinVersionReqd){
Write-Host "Using xcopy-msbuild version of $vsMinVersionReqdStr.0-alpha since VS version $vsMinVersionStr provided in global.json is not compatible"
$vsMajorVersion = $vsMinVersionReqd.Major
$vsMinorVersion = $vsMinVersionReqd.Minor
Write-Host "Using xcopy-msbuild version of $defaultXCopyMSBuildVersion since VS version $vsMinVersionStr provided in global.json is not compatible"
$xcopyMSBuildVersion = $defaultXCopyMSBuildVersion
}
else{
# If the VS version IS compatible, look for an xcopy msbuild package
# with a version matching VS.
# Note: If this version does not exist, then an explicit version of xcopy msbuild
# can be specified in global.json. This will be required for pre-release versions of msbuild.
$vsMajorVersion = $vsMinVersion.Major
$vsMinorVersion = $vsMinVersion.Minor
$xcopyMSBuildVersion = "$vsMajorVersion.$vsMinorVersion.0"
}
$xcopyMSBuildVersion = "$vsMajorVersion.$vsMinorVersion.0-alpha"
}
$vsInstallDir = $null
if ($xcopyMSBuildVersion.Trim() -ine "none") {
$vsInstallDir = InitializeXCopyMSBuild $xcopyMSBuildVersion $install
if ($vsInstallDir -eq $null) {
throw "Could not xcopy msbuild. Please check that package 'RoslynTools.MSBuild @ $xcopyMSBuildVersion' exists on feed 'dotnet-eng'."
}
}
if ($vsInstallDir -eq $null) {
throw 'Unable to find Visual Studio that has required version and components installed'
@ -716,6 +729,16 @@ function IsWindowsPlatform() {
return [environment]::OSVersion.Platform -eq [PlatformID]::Win32NT
}
function Get-Darc($version) {
$darcPath = "$TempDir\darc\$(New-Guid)"
if ($version -ne $null) {
& $PSScriptRoot\darc-init.ps1 -toolpath $darcPath -darcVersion $version | Out-Host
} else {
& $PSScriptRoot\darc-init.ps1 -toolpath $darcPath | Out-Host
}
return "$darcPath\darc.exe"
}
. $PSScriptRoot\pipeline-logging-functions.ps1
$RepoRoot = Resolve-Path (Join-Path $PSScriptRoot '..\..')

View File

@ -1,35 +0,0 @@
<#
.SYNOPSIS
Installs dotnet sdk and runtime using https://dot.net/v1/dotnet-install.ps1
.DESCRIPTION
Installs dotnet sdk and runtime using https://dot.net/v1/dotnet-install.ps1
.PARAMETER arch
The architecture to install.
.PARAMETER sdkVersion
The sdk version to install
.PARAMETER runtimeVersion
The runtime version to install
.PARAMETER installDir
The directory to install to
#>
param(
[Parameter(Mandatory = $true)]
$arch,
[Parameter(Mandatory = $true)]
$sdkVersion,
[Parameter(Mandatory = $true)]
$runtimeVersion,
[Parameter(Mandatory = $true)]
$installDir
)
& $PSScriptRoot\Download.ps1 "https://dot.net/v1/dotnet-install.ps1" $PSScriptRoot\dotnet-install.ps1
Write-Host "Download of dotnet-install.ps1 complete..."
Write-Host "Installing SDK...& $PSScriptRoot\dotnet-install.ps1 -Architecture $arch -Version $sdkVersion -InstallDir $installDir -NoPath"
Invoke-Expression "& $PSScriptRoot\dotnet-install.ps1 -Architecture $arch -Version $sdkVersion -InstallDir $installDir -NoPath"
Write-Host "Installing Runtime...& $PSScriptRoot\dotnet-install.ps1 -Architecture $arch -Runtime dotnet -Version $runtimeVersion -InstallDir $installDir -NoPath"
Invoke-Expression "& $PSScriptRoot\dotnet-install.ps1 -Architecture $arch -Runtime dotnet -Version $runtimeVersion -InstallDir $installDir -NoPath"
Write-Host "InstallDotNet.ps1 complete..."

View File

@ -46,16 +46,6 @@ namespace RunTests
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")
@ -63,34 +53,41 @@ namespace RunTests
};
var parseResult = command.Parse(args);
var options = new RunTestsOptions();
options.Target = parseResult.ValueForOption<string>("--target");
options.RuntimeVersion = parseResult.ValueForOption<string>("--runtime");
options.HelixQueue = parseResult.ValueForOption<string>("--queue");
options.Architecture = parseResult.ValueForOption<string>("--arch");
options.Quarantined = parseResult.ValueForOption<bool>("--quarantined");
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");
var sharedFxVersion = parseResult.ValueForOption<string>("--runtime");
var options = new RunTestsOptions
{
Architecture = parseResult.ValueForOption<string>("--arch"),
EfVersion = parseResult.ValueForOption<string>("--ef"),
HelixQueue = parseResult.ValueForOption<string>("--queue"),
Quarantined = parseResult.ValueForOption<bool>("--quarantined"),
RuntimeVersion = sharedFxVersion,
Target = parseResult.ValueForOption<string>("--target"),
Timeout = TimeSpan.Parse(parseResult.ValueForOption<string>("--helixTimeout")),
// When targeting pack builds, it has exactly the same version as the shared framework.
AspNetRef = $"Microsoft.AspNetCore.App.Ref.{sharedFxVersion}.nupkg",
AspNetRuntime = $"Microsoft.AspNetCore.App.Runtime.win-x64.{sharedFxVersion}.nupkg",
DotnetRoot = Environment.GetEnvironmentVariable("DOTNET_ROOT"),
HELIX_WORKITEM_ROOT = Environment.GetEnvironmentVariable("HELIX_WORKITEM_ROOT"),
Path = Environment.GetEnvironmentVariable("PATH"),
};
return options;
}
public string Target { get; set;}
public string SdkVersion { get; set;}
public string RuntimeVersion { get; set;}
public string AspNetRuntime { get; set;}
public string AspNetRef { get; set;}
public string HelixQueue { get; set;}
public string Architecture { get; set;}
public bool Quarantined { get; set;}
public string EfVersion { get; set;}
public string HELIX_WORKITEM_ROOT { get; set;}
public string DotnetRoot { get; set; }
public string Architecture { get; private set; }
public string EfVersion { get; private set; }
public string HelixQueue { get; private set; }
public bool Quarantined { get; private set; }
public string RuntimeVersion { get; private set; }
public string Target { get; private set; }
public TimeSpan Timeout { get; private set; }
public string AspNetRef { get; private set; }
public string AspNetRuntime { get; private set; }
public string HELIX_WORKITEM_ROOT { get; private set; }
public string DotnetRoot { get; private set; }
public string Path { get; set; }
public TimeSpan Timeout { get; set; }
}
}

View File

@ -34,7 +34,6 @@ namespace RunTests
}
EnvironmentVariables.Add("PATH", Options.Path);
EnvironmentVariables.Add("DOTNET_ROOT", Options.DotnetRoot);
EnvironmentVariables.Add("helix", Options.HelixQueue);
Console.WriteLine($"Current Directory: {Options.HELIX_WORKITEM_ROOT}");
@ -126,14 +125,6 @@ namespace RunTests
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,
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",
@ -175,9 +166,9 @@ namespace RunTests
{
if (File.Exists(Options.AspNetRef))
{
var refPath = $"Microsoft.AspNetCore.App.Ref";
var refPath = $"{Options.DotnetRoot}/packs/Microsoft.AspNetCore.App.Ref/{Options.RuntimeVersion}";
Console.WriteLine($"Found AspNetRef: {Options.AspNetRef}, extracting to {refPath}");
ZipFile.ExtractToDirectory(Options.AspNetRef, "Microsoft.AspNetCore.App.Ref");
ZipFile.ExtractToDirectory(Options.AspNetRef, refPath);
DisplayContents(refPath);
}
@ -199,8 +190,7 @@ namespace RunTests
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",
$"tool install dotnet-dump --tool-path {Options.HELIX_WORKITEM_ROOT} --version 5.0.0-*",
environmentVariables: EnvironmentVariables,
outputDataReceived: Console.WriteLine,
errorDataReceived: Console.Error.WriteLine,
@ -247,7 +237,7 @@ namespace RunTests
{
// Timeout test run 5 minutes before the Helix job would timeout
var cts = new CancellationTokenSource(Options.Timeout.Subtract(TimeSpan.FromMinutes(5)));
var commonTestArgs = $"test {Options.Target} --logger:xunit --logger:\"console;verbosity=normal\" --blame \"CollectHangDump;TestTimeout=5m\"";
var commonTestArgs = $"test {Options.Target} --logger:xunit --logger:\"console;verbosity=normal\" --blame \"CollectHangDump;TestTimeout=5m\"";
if (Options.Quarantined)
{
Console.WriteLine("Running quarantined tests.");
@ -346,7 +336,7 @@ namespace RunTests
else
{
Console.WriteLine("No dmps found in TestResults");
}
}
}
}
}

View File

@ -1,6 +1,5 @@
@echo off
REM Need delayed expansion !PATH! so parens in the path don't mess up the parens for the if statements that use parens for blocks
setlocal enabledelayedexpansion
SETLOCAL
REM Use '$' as a variable name prefix to avoid MSBuild variable collisions with these variables
set $target=%1
@ -11,30 +10,41 @@ set $queue=%5
set $arch=%6
set $quarantined=%7
set $ef=%8
set $aspnetruntime=%9
set $helixTimeout=%9
REM Batch only supports up to 9 arguments using the %# syntax, need to shift to get more
shift
set $aspnetref=%9
shift
set $helixTimeout=%9
set $feedCred=%9
set DOTNET_HOME=%HELIX_CORRELATION_PAYLOAD%\sdk
set DOTNET_HOME=%CD%\sdk%random%
set DOTNET_ROOT=%DOTNET_HOME%\%$arch%
set DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
set DOTNET_MULTILEVEL_LOOKUP=0
set DOTNET_CLI_HOME=%HELIX_CORRELATION_PAYLOAD%\home
set DOTNET_CLI_HOME=%CD%\home%random%
set PATH=%DOTNET_ROOT%;!PATH!;%HELIX_CORRELATION_PAYLOAD%\node\bin
echo Set path to: %PATH%
echo "Invoking InstallDotNet.ps1 %$arch% %$sdkVersion% %$runtimeVersion% %DOTNET_ROOT%"
powershell.exe -NoProfile -ExecutionPolicy unrestricted -file InstallDotNet.ps1 %$arch% %$sdkVersion% %$runtimeVersion% %DOTNET_ROOT%
set "PATH=%DOTNET_ROOT%;%PATH%;%HELIX_CORRELATION_PAYLOAD%\node\bin"
echo Set path to: "%PATH%"
echo.
echo "InstallDotNet %DOTNET_ROOT% %$sdkVersion% %$arch% '' $true '' '' $true"
powershell.exe -noLogo -NoProfile -ExecutionPolicy unrestricted -command ". eng\common\tools.ps1; InstallDotNet %DOTNET_ROOT% %$sdkVersion% %$arch% '' $true '' '' $true"
echo.
IF [%$feedCred%] == [] (
echo "InstallDotNet %DOTNET_ROOT% %$runtimeVersion% %$arch% dotnet $true '' '' $true"
powershell.exe -noLogo -NoProfile -ExecutionPolicy unrestricted -command ". eng\common\tools.ps1; InstallDotNet %DOTNET_ROOT% %$runtimeVersion% %$arch% dotnet $true '' '' $true"
) else (
echo "InstallDotNet %DOTNET_ROOT% %$runtimeVersion% %$arch% dotnet $true https://dotnetclimsrc.blob.core.windows.net/dotnet ... $true"
powershell.exe -noLogo -NoProfile -ExecutionPolicy unrestricted -command ". eng\common\tools.ps1; InstallDotNet %DOTNET_ROOT% %$runtimeVersion% %$arch% dotnet $true https://dotnetclimsrc.blob.core.windows.net/dotnet %$feedCred% $true"
)
echo.
set exit_code=0
echo "Restore: dotnet restore RunTests\RunTests.csproj --source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json --source https://api.nuget.org/v3/index.json --ignore-failed-sources..."
dotnet restore RunTests\RunTests.csproj --source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json --source https://api.nuget.org/v3/index.json --ignore-failed-sources
echo "Running tests: dotnet run --project RunTests\RunTests.csproj -- --target %$target% --runtime %$aspRuntimeVersion% --queue %$queue% --arch %$arch% --quarantined %$quarantined% --ef %$ef% --aspnetruntime %$aspnetruntime% --aspnetref %$aspnetref% --helixTimeout %$helixTimeout%..."
dotnet run --project RunTests\RunTests.csproj -- --target %$target% --runtime %$aspRuntimeVersion% --queue %$queue% --arch %$arch% --quarantined %$quarantined% --ef %$ef% --aspnetruntime %$aspnetruntime% --aspnetref %$aspnetref% --helixTimeout %$helixTimeout%
echo "Restore: dotnet restore RunTests\RunTests.csproj --ignore-failed-sources"
dotnet restore RunTests\RunTests.csproj --ignore-failed-sources
echo "Running tests: dotnet run --no-restore --project RunTests\RunTests.csproj -- --target %$target% --runtime %$aspRuntimeVersion% --queue %$queue% --arch %$arch% --quarantined %$quarantined% --ef %$ef% --helixTimeout %$helixTimeout%"
dotnet run --no-restore --project RunTests\RunTests.csproj -- --target %$target% --runtime %$aspRuntimeVersion% --queue %$queue% --arch %$arch% --quarantined %$quarantined% --ef %$ef% --helixTimeout %$helixTimeout%
if errorlevel neq 0 (
set exit_code=%errorlevel%
)

View File

@ -30,50 +30,31 @@ RED="\033[0;31m"
YELLOW="\033[0;33m"
MAGENTA="\033[0;95m"
curl -o dotnet-install.sh -sSL https://dot.net/v1/dotnet-install.sh
if [ $? -ne 0 ]; then
download_retries=3
while [ $download_retries -gt 0 ]; do
curl -o dotnet-install.sh -sSL https://dot.net/v1/dotnet-install.sh
if [ $? -ne 0 ]; then
let download_retries=download_retries-1
echo -e "${YELLOW}Failed to download dotnet-install.sh. Retries left: $download_retries.${RESET}"
else
download_retries=0
fi
done
fi
. eng/common/tools.sh
echo "InstallDotNet $DOTNET_ROOT $dotnet_sdk_version '' '' true"
InstallDotNet $DOTNET_ROOT $dotnet_sdk_version "" "" true || {
exit_code=$?
Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "dotnet-install.sh failed (exit code '$exit_code')." >&2
ExitWithExitCode $exit_code
}
echo
# Call "sync" between "chmod" and execution to prevent "text file busy" error in Docker (aufs)
chmod +x "dotnet-install.sh"; sync
./dotnet-install.sh --version $dotnet_sdk_version --install-dir "$DOTNET_ROOT"
if [ $? -ne 0 ]; then
sdk_retries=3
while [ $sdk_retries -gt 0 ]; do
./dotnet-install.sh --version $dotnet_sdk_version --install-dir "$DOTNET_ROOT"
if [ $? -ne 0 ]; then
let sdk_retries=sdk_retries-1
echo -e "${YELLOW}Failed to install .NET Core SDK $version. Retries left: $sdk_retries.${RESET}"
else
sdk_retries=0
fi
done
fi
./dotnet-install.sh --runtime dotnet --version $dotnet_runtime_version --install-dir "$DOTNET_ROOT"
if [ $? -ne 0 ]; then
runtime_retries=3
while [ $runtime_retries -gt 0 ]; do
./dotnet-install.sh --runtime dotnet --version $dotnet_runtime_version --install-dir "$DOTNET_ROOT"
if [ $? -ne 0 ]; then
let runtime_retries=runtime_retries-1
echo -e "${YELLOW}Failed to install .NET Core runtime $version. Retries left: $runtime_retries.${RESET}"
else
runtime_retries=0
fi
done
if [[ -z "${10:-}" ]]; then
echo "InstallDotNet $DOTNET_ROOT $dotnet_runtime_version '' dotnet true"
InstallDotNet $DOTNET_ROOT $dotnet_runtime_version "" dotnet true || {
exit_code=$?
Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "dotnet-install.sh failed (exit code '$exit_code')." >&2
ExitWithExitCode $exit_code
}
else
echo "InstallDotNet $DOTNET_ROOT $dotnet_runtime_version '' dotnet true https://dotnetclimsrc.blob.core.windows.net/dotnet ..."
InstallDotNet $DOTNET_ROOT $dotnet_runtime_version "" dotnet true https://dotnetclimsrc.blob.core.windows.net/dotnet ${10} || {
exit_code=$?
Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "dotnet-install.sh failed (exit code '$exit_code')." >&2
ExitWithExitCode $exit_code
}
fi
echo
if [ -e /proc/self/coredump_filter ]; then
# Include memory in private and shared file-backed mappings in the dump.
@ -82,14 +63,16 @@ if [ -e /proc/self/coredump_filter ]; then
echo -n 0x3F > /proc/self/coredump_filter
fi
# dontet-install.sh seems to affect the Linux filesystem and causes test flakiness unless we sync the filesystem before running tests
# dotnet-install.sh seems to affect the Linux filesystem and causes test flakiness unless we sync the filesystem before running tests
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 --runtime $4 --queue $5 --arch $6 --quarantined $7 --ef $8 --aspnetruntime $9 --aspnetref ${10} --helixTimeout ${11}"
$DOTNET_ROOT/dotnet run --project RunTests/RunTests.csproj -- --target $1 --runtime $4 --queue $5 --arch $6 --quarantined $7 --ef $8 --aspnetruntime $9 --aspnetref ${10} --helixTimeout ${11}
echo "Restore: $DOTNET_ROOT/dotnet restore RunTests/RunTests.csproj --ignore-failed-sources"
$DOTNET_ROOT/dotnet restore RunTests/RunTests.csproj --ignore-failed-sources
echo "Running tests: $DOTNET_ROOT/dotnet run --no-restore --project RunTests/RunTests.csproj -- --target $1 --runtime $4 --queue $5 --arch $6 --quarantined $7 --ef $8 --helixTimeout $9"
$DOTNET_ROOT/dotnet run --no-restore --project RunTests/RunTests.csproj -- --target $1 --runtime $4 --queue $5 --arch $6 --quarantined $7 --ef $8 --helixTimeout $9
exit_code=$?
echo "Finished tests...exit_code=$exit_code"

View File

@ -11,7 +11,8 @@
<Import Project="..\targets\Helix.Common.props" />
<Import Project="..\Build.props" />
<ItemGroup>
<!-- Microsoft.DotNet.Helix.Sdk.MultiQueue.targets splits $(HelixTargetQueues) into @(HelixTargetQueue) items. -->
<ItemGroup Condition=" '$(HelixTargetQueues)' == '' ">
<HelixTargetQueue Condition="'$(_UseHelixOpenQueues)' == 'true'" Include="@(HelixAvailableTargetQueue)" />
<HelixTargetQueue Condition="'$(_UseHelixOpenQueues)' != 'true'" Include="@(HelixAvailableTargetQueue->'%(Identity)'->Replace('.Open',''))" />
</ItemGroup>

View File

@ -6,7 +6,7 @@
.PARAMETER Project
The test project to publish and send to Helix.
.PARAMETER HelixQueues
Set the Helix queues to use, the list is ';' separated.
Set the Helix queues to use. The list is '+' or ';'-separated.
Some supported queues:
Ubuntu.1604.Amd64.Open
Ubuntu.1804.Amd64.Open

View File

@ -33,10 +33,76 @@ reporoot="$(dirname "$(dirname "$scriptroot")")"
# mv "$reporoot/global.bak.json" "$reporoot/global.json"
#}" EXIT
dotnet_runtime_source_feed=''
dotnet_runtime_source_feed_key=''
other_args=()
#
# Functions
#
__usage() {
echo "Usage: $(basename "${BASH_SOURCE[0]}") [options] [[--] <Arguments>...]
Arguments:
<Arguments>... Arguments passed to the command. Variable number of arguments allowed.
--dotnet-runtime-source-feed Additional feed that can be used when downloading .NET runtimes
--dotnet-runtime-source-feed-key Key for feed that can be used when downloading .NET runtimes
Description:
This script is meant for testing source build by imitating some of the input parameters and conditions.
"
if [[ "${1:-}" != '--no-exit' ]]; then
exit 2
fi
}
__error() {
echo -e "${RED}error: $*${RESET}" 1>&2
}
#
# main
#
while [[ $# -gt 0 ]]; do
opt="$(echo "${1/#--/-}" | awk '{print tolower($0)}')"
case "$opt" in
-\?|-h|-help)
__usage --no-exit
exit 0
;;
-dotnet-runtime-source-feed|-dotnetruntimesourcefeed)
shift
[ -z "${1:-}" ] && __error "Missing value for parameter --dotnet-runtime-source-feed" && __usage
dotnet_runtime_source_feed="${1:-}"
;;
-dotnet-runtime-source-feed-key|-dotnetruntimesourcefeedkey)
shift
[ -z "${1:-}" ] && __error "Missing value for parameter --dotnet-runtime-source-feed-key" && __usage
dotnet_runtime_source_feed_key="${1:-}"
;;
*)
other_args[${#other_args[*]}]="$1"
;;
esac
shift
done
# Set up additional runtime args
runtime_feed_args=()
if [ ! -z "$dotnet_runtime_source_feed$dotnet_runtime_source_feed_key" ]; then
runtimeFeedArg="/p:DotNetRuntimeSourceFeed=$dotnet_runtime_source_feed"
runtimeFeedKeyArg="/p:DotNetRuntimeSourceFeedKey=$dotnet_runtime_source_feed_key"
runtime_feed_args[${#runtime_feed_args[*]}]=$runtimeFeedArg
runtime_feed_args[${#runtime_feed_args[*]}]=$runtimeFeedKeyArg
fi
# Build repo tasks
"$reporoot/eng/common/build.sh" --restore --build --ci --configuration Release /p:ProjectToBuild=$reporoot/eng/tools/RepoTasks/RepoTasks.csproj
"$reporoot/eng/common/build.sh" --restore --build --ci --configuration Release /p:ProjectToBuild=$reporoot/eng/tools/RepoTasks/RepoTasks.csproj ${runtime_feed_args[@]+"${runtime_feed_args[@]}"}
export DotNetBuildFromSource='true'
# Build projects
"$reporoot/eng/common/build.sh" --restore --build --pack "$@"
"$reporoot/eng/common/build.sh" --restore --build --pack ${other_args[@]+"${other_args[@]}"} ${runtime_feed_args[@]+"${runtime_feed_args[@]}"}

View File

@ -12,7 +12,12 @@
<PackageReference Include="MicroBuild.Core" Version="0.3.0" PrivateAssets="All" AllowExplicitReference="true" ExcludeAssets="All" />
</ItemGroup>
<ItemGroup Condition="'$(UsingMicrosoftNETSdkWeb)' == 'true' OR '$(UsingMicrosoftNETSdkBlazorWebAssembly)' == 'true' OR '$(RazorSdkCurrentVersionProps)' != ''">
<PropertyGroup>
<_ReferenceLocalRazorSDK
Condition="'$(UsingMicrosoftNETSdkWeb)' == 'true' OR '$(UsingMicrosoftNETSdkBlazorWebAssembly)' == 'true' OR '$(RazorSdkCurrentVersionProps)' != '' OR '$(_RazorSdkImportsMicrosoftNetSdk)' == 'true'">true</_ReferenceLocalRazorSDK>
</PropertyGroup>
<ItemGroup Condition="'$(_ReferenceLocalRazorSDK)' == 'true'">
<!--
Use the Razor SDK as a project reference. The version of the .NET Core SDK we build with often contains a version of the Razor SDK
several versions older than latest. We reference the project to ensure it's built before the other projects that use it. Since this
@ -25,7 +30,7 @@
UndefineProperties="TargetFramework;TargetFrameworks" />
</ItemGroup>
<ImportGroup Condition="'$(UsingMicrosoftNETSdkWeb)' == 'true' OR '$(UsingMicrosoftNETSdkBlazorWebAssembly)' == 'true' OR '$(RazorSdkCurrentVersionProps)' != ''">
<ImportGroup Condition="'$(_ReferenceLocalRazorSDK)' == 'true'">
<Import Project="$(RepoRoot)eng\targets\GetRazorSDKDirectory.props" />
<Import Project="$(RepoRoot)src\Razor\Microsoft.NET.Sdk.Razor\src\build\netstandard2.0\Microsoft.NET.Sdk.Razor.props" />
</ImportGroup>

View File

@ -13,22 +13,25 @@
<!-- Public members should not use oblivious types. Not done with all nullable annotations. -->
<NoWarn>$(NoWarn);RS0041</NoWarn>
<!-- Turn off platform compatiblity analyzer warnings in test, test assets, and samples -->
<NoWarn Condition="'$(IsTestProject)' == 'true' OR '$(IsTestAssetProject)' == 'true' OR '$(ISBenchmarkProject)' == 'true' OR '$(IsSampleProject)' == 'true'">$(NoWarn);CA1416</NoWarn>
</PropertyGroup>
<ItemGroup Condition=" '$(IsImplementationProject)' == 'true' AND
<ItemGroup Condition=" Exists('$(MSBuildProjectDirectory)\PublicAPI.*.txt') AND
'$(IsImplementationProject)' == 'true' AND
'$(DotNetBuildFromSource)' != 'true' AND
! $(RepoRelativeProjectDir.Contains('Tools')) ">
<!-- Package does nothing in projects lacking PublicAPI.Shipped.txt or PublicAPI.Unshipped.txt files. -->
<Reference Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" ExcludeAssets="Compile" PrivateAssets="All" />
<AdditionalFiles Include="PublicAPI.Shipped.txt"
Condition=" Exists('$(MSBuildProjectDirectory)\PublicAPI.Shipped.txt') " />
<AdditionalFiles Include="PublicAPI.Unshipped.txt"
Condition=" Exists('$(MSBuildProjectDirectory)\PublicAPI.Unshipped.txt') " />
<AdditionalFiles Include="PublicAPI.Shipped.txt"
Condition=" Exists('$(MSBuildProjectDirectory)\$(_TFMDirectory)\PublicAPI.Shipped.txt') " />
<AdditionalFiles Include="PublicAPI.Unshipped.txt"
Condition=" Exists('$(MSBuildProjectDirectory)\$(_TFMDirectory)\PublicAPI.Unshipped.txt') " />
</ItemGroup>
<Target Name="_CheckIgnoredPublicApiFiles"
BeforeTargets="Build;Restore"
Condition=" Exists('$(MSBuildProjectDirectory)\PublicAPI.*.txt') AND
!('$(IsImplementationProject)' == 'true' AND
'$(DotNetBuildFromSource)' != 'true' AND
! $(RepoRelativeProjectDir.Contains('Tools'))) ">
<Warning Text="Public API baseline files ignored." />
</Target>
<Target Name="GetCustomAssemblyAttributes"
BeforeTargets="GetAssemblyAttributes"

View File

@ -29,9 +29,9 @@
<ItemGroup Condition="'$(IsWindowsOnlyTest)' != 'true' AND '$(TargetArchitecture)' == 'x64' AND '$(IsHelixDaily)' == 'true'">
<HelixAvailableTargetQueue Include="Windows.7.Amd64.Open" Platform="Windows" />
<HelixAvailableTargetQueue Include="Windows.81.Amd64.Open" Platform="Windows" />
<HelixAvailableTargetQueue Include="Windows.10.Amd64.Server20H1.Open" Platform="Windows" />
<HelixAvailableTargetQueue Include="Ubuntu.1804.Amd64.Open" Platform="Linux" />
<HelixAvailableTargetQueue Include="Ubuntu.2004.Amd64.Open" Platform="Linux" />
<HelixAvailableTargetQueue Include="Centos.7.Amd64.Open" Platform="Linux" />
<HelixAvailableTargetQueue Include="Debian.9.Amd64.Open" Platform="Linux" />
<HelixAvailableTargetQueue Include="Redhat.7.Amd64.Open" Platform="Linux" />
<HelixAvailableTargetQueue Include="(Fedora.28.Amd64.Open)Ubuntu.1604.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-28-helix-09ca40b-20190508143249" Platform="Linux" />

View File

@ -16,23 +16,43 @@
<HelixPreCommand Include="call RunPowershell.cmd InstallNode.ps1 $(NodeVersion) %25HELIX_CORRELATION_PAYLOAD%25\node\bin || exit /b 1" />
</ItemGroup>
<ItemGroup Condition="'$(IsHelixJob)' == 'true' AND '$(TestDependsOnAspNetRuntime)' == 'true'">
<HelixContent Include="$(RepoRoot)artifacts\packages\Release\Shipping\*-ci.nupkg" />
<ItemGroup Condition=" '$(TestDependsOnAspNetRuntime)' == 'true' ">
<!-- Grab all shipping packages. -->
<HelixContent Include="$(RepoRoot)artifacts\packages\$(Configuration)\Shipping\*$(SharedFxVersion).nupkg" />
</ItemGroup>
<!-- Item group has to be defined here becasue Helix.props is evaluated before xunit.runner.console.props -->
<ItemGroup>
<!-- Java test projects do not use xUnit. -->
<HelixContent Include="$(OutputPath)Microsoft.VisualStudio.TestPlatform.Extension.Xunit.Xml.TestAdapter.dll"
Condition=" EXISTS('$(OutputPath)Microsoft.VisualStudio.TestPlatform.Extension.Xunit.Xml.TestLogger.dll') " />
<HelixContent Include="$(OutputPath)Microsoft.VisualStudio.TestPlatform.Extension.Xunit.Xml.TestLogger.dll"
Condition=" EXISTS('$(OutputPath)Microsoft.VisualStudio.TestPlatform.Extension.Xunit.Xml.TestLogger.dll') " />
</ItemGroup>
<!-- Item group has to be defined here because Helix.props is evaluated before xunit.runner.console.props -->
<ItemGroup Condition="$(BuildHelixPayload)">
<Content Include="@(HelixContent)" />
<Content Include="$(RepoRoot)eng\scripts\Download.ps1" />
<Content Include="$(RepoRoot)NuGet.config" />
<Content Include="$(RepoRoot)global.json" />
<ContentWithTargetPath Include="
$(RepoRoot)eng\common\pipeline-logging-functions.*;
$(RepoRoot)eng\common\tools.*">
<TargetPath>eng\common\%(Filename)%(Extension)</TargetPath>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</ContentWithTargetPath>
<ContentWithTargetPath Include="$(RepoRoot)eng\common\dotnet-install-scripts\*">
<TargetPath>eng\common\dotnet-install-scripts\%(Filename)%(Extension)</TargetPath>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</ContentWithTargetPath>
</ItemGroup>
<!--
This target is meant to be used when invoking helix tests on one project at a time.
Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj
-->
<!--
This target is meant to be used when invoking helix tests on one project at a time.
Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj
-->
<Target Name="Helix">
<MSBuild Projects="$(MSBuildThisFileDirectory)..\helix\helix.proj"
Properties="ProjectToBuild=$(MSBuildProjectFullPath)" />
@ -87,25 +107,6 @@ Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj
</Target>
<Target Name="_CreateHelixWorkItem" Condition="$(BuildHelixPayload)">
<ItemGroup>
<HelixContent Include="$(OutputPath)/Microsoft.VisualStudio.TestPlatform.Extension.Xunit.Xml.TestAdapter.dll" />
<HelixContent Include="$(OutputPath)/Microsoft.VisualStudio.TestPlatform.Extension.Xunit.Xml.TestLogger.dll" />
</ItemGroup>
<!--
Could use _GetPackageVersionInfo target (defined in eng/targets/Packaging.targets and included in every C#
and F# project) instead of the $(SharedFxVersion) property but the property works everywhere except in site
extensions projects. Could also use $(TargetingPackVersion) but that has slightly more complicated semantics
and doesn't keep up when in servicing.
-->
<ItemGroup Condition=" '$(TestDependsOnAspNetRef)' == 'true' AND '$(IsTargetingPackBuilding)' == 'true' ">
<HelixContent Include="$(RepoRoot)artifacts\packages\Release\Shipping\Microsoft.AspNetCore.App.Ref.$(SharedFxVersion).nupkg" />
</ItemGroup>
<ItemGroup Condition=" '$(TestDependsOnAspNetRuntime)' == 'true' ">
<HelixContent Include="$(RepoRoot)artifacts\packages\Release\Shipping\Microsoft.AspNetCore.App.Runtime.win-x64.$(SharedFxVersion).nupkg" />
</ItemGroup>
<PropertyGroup>
<!-- Extract the effective queue name from this format "(name)host@dockerimage". This is sometimes used in test code to skip tests. -->
<_HelixFriendlyNameTargetQueue>$(HelixTargetQueue)</_HelixFriendlyNameTargetQueue>
@ -125,8 +126,12 @@ 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) $(SharedFxVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion) Microsoft.AspNetCore.App.Runtime.win-x64.$(SharedFxVersion).nupkg Microsoft.AspNetCore.App.Ref.$(SharedFxVersion).nupkg $(HelixTimeout)</Command>
<Command Condition="!$(IsWindowsHelixQueue)">./runtests.sh $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppRuntimeVersion) $(SharedFxVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion) Microsoft.AspNetCore.App.Runtime.win-x64.$(SharedFxVersion).nupkg Microsoft.AspNetCore.App.Ref.$(SharedFxVersion).nupkg $(HelixTimeout)</Command>
<!--
When the targeting pack builds, it has exactly the same version as the shared framework. Passing
SharedFxVersion because that's needed even when the targeting pack isn't building.
-->
<Command Condition="$(IsWindowsHelixQueue)">call runtests.cmd $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppInternalPackageVersion) $(SharedFxVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion) $(HelixTimeout) $(DotNetRuntimeSourceFeedKey)</Command>
<Command Condition="!$(IsWindowsHelixQueue)">./runtests.sh $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppInternalPackageVersion) $(SharedFxVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion) $(HelixTimeout) $(DotNetRuntimeSourceFeedKey)</Command>
<Command Condition="$(HelixCommand) != ''">$(HelixCommand)</Command>
<Timeout>$(HelixTimeout)</Timeout>
</HelixWorkItem>

View File

@ -0,0 +1,7 @@
<Project>
<PropertyGroup>
<!-- Disable gradle daemon on CI since the CI seems to try to wait for the daemon to shut down, which it doesn't do -->
<GradleOptions Condition="'$(ContinuousIntegrationBuild)' == 'true'">$(GradleOptions) -Dorg.gradle.daemon=false</GradleOptions>
<PackOnBuild>false</PackOnBuild>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,77 @@
<Project DefaultTargets="Build">
<PropertyGroup>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' == ''">$(ArtifactsDir)\obj\</BaseIntermediateOutputPath>
<IntermediateOutputPath>$([MSBuild]::NormalizeDirectory('$(BaseIntermediateOutputPath)'))$(Configuration)\</IntermediateOutputPath>
<BuildDependsOn>
PrepareForBuild;
ResolveProjectReferences;
_Build;
</BuildDependsOn>
<JavaBuildArgs Condition="'$(JavaBuildArgs)' == ''">../gradlew $(GradleOptions) compileJava</JavaBuildArgs>
<GradleOptions>$(GradleOptions) -PpackageVersion="$(PackageVersion)"</GradleOptions>
</PropertyGroup>
<ItemGroup>
<JavaFiles Include="src\**\*.java" />
<JavaFiles Include="*.javaproj" />
<JavaFiles Include="build.gradle" />
<BuildOutputFiles Include="$(BaseIntermediateOutputPath)build-sentinel" />
</ItemGroup>
<Target Name="Restore" />
<Target Name="PrepareForBuild">
<MakeDir Directories="$(IntermediateOutputPath);$(PackageOutputPath)" />
</Target>
<Target Name="ResolveProjectReferences">
<MSBuild Projects="@(ProjectReference)"
BuildInParallel="true" />
</Target>
<Target Name="Build" DependsOnTargets="$(BuildDependsOn)" />
<Target Name="GetBuildInputCacheFile">
<Hash ItemsToHash="@(JavaFiles)">
<Output TaskParameter="HashResult" PropertyName="_JavaFileHash" />
</Hash>
<WriteLinesToFile
Lines="$(_JavaFileHash)"
File="$(BaseIntermediateOutputPath)javafiles.cache"
Overwrite="True"
WriteOnlyWhenDifferent="True" />
</Target>
<Target Name="_Build"
Condition="'$(IsBuildable)' != 'false'"
DependsOnTargets="GetBuildInputCacheFile"
Inputs="@(JavaFiles);$(BaseIntermediateOutputPath)javafiles.cache"
Outputs="@(BuildOutputFiles)">
<Telemetry EventName="NETCORE_ENGINEERING_TELEMETRY" EventData="Category=Build" />
<Exec Command="$(JavaBuildArgs)" />
<WriteLinesToFile Overwrite="true" File="$(BaseIntermediateOutputPath)build-sentinel" />
</Target>
<PropertyGroup>
<PackDependsOn Condition="'$(NoBuild)' != 'true'">
Build;
$(PackDependsOn);
</PackDependsOn>
</PropertyGroup>
<Target Name="Pack" Condition="'$(IsPackable)' == 'true'" DependsOnTargets="$(PackDependsOn)">
<Telemetry EventName="NETCORE_ENGINEERING_TELEMETRY" EventData="Category=Pack" />
<Message Text="> gradlew $(GradleOptions) createPackage" Importance="high" />
<Exec Command="../gradlew $(GradleOptions) createPackage" />
<Message Importance="high" Text="$(PackageId) -> $(PackageOutputPath)%(JavaBuildFiles.Identity)" />
<Copy SourceFiles="$(MSBuildProjectDirectory)\build\libs\%(JavaBuildFiles.Identity)" DestinationFolder="$(PackageOutputPath)" />
</Target>
<Target Name="Test" />
<Target Name="Publish" />
</Project>

View File

@ -1,7 +1,10 @@
<Project>
<Target Name="EnsureBaselineIsUpdated"
Condition="'$(IsServicingBuild)' == 'true' AND '$(AspNetCoreBaselineVersion)' != '$(PreviousAspNetCoreReleaseVersion)'"
Condition=" '$(IsServicingBuild)' == 'true' AND
'$(AspNetCoreBaselineVersion)' != '$(PreviousAspNetCoreReleaseVersion)' AND
'$(MSBuildProjectName)' != 'BaselineGenerator' AND
'$(MSBuildProjectName)' != 'RepoTasks' "
BeforeTargets="BeforeBuild">
<Error Text="The package baseline ($(AspNetCoreBaselineVersion)) is out of date with the latest release of this repo ($(PreviousAspNetCoreReleaseVersion)).
See $(RepoRoot)eng\tools\BaselineGenerator\README.md for instructions on updating this baseline." />

View File

@ -10,11 +10,12 @@
Items used by the resolution strategy:
* BaselinePackageReference = a list of packages that were reference in the last release of the project currently building
* BaselinePackageReference = a list of packages that were referenced in the last release of the project currently building
- mainly used to ensure references do not change in servicing builds unless $(UseLatestPackageReferences) is not true.
* LatestPackageReference = a list of the latest versions of packages
* Reference = a list of the references which are needed for compilation or runtime
* ProjectReferenceProvider = a list which maps of assembly names to the project file that produces it
-->
-->
<Project>
<PropertyGroup>
@ -29,36 +30,29 @@
<PropertyGroup>
<!--
Projects should only use the latest package references when:
* preparing a new major or minor release (i.e. a non-servicing builds)
Projects should use the latest package references when:
* preparing a new major or minor release i.e. a non-servicing builds
* when a project is a test or sample project
* when a package is releasing a new patch (we like to update external dependencies in patches when possible)
That is, use latest package references unless this is a servicing build, the project is normally packable, and
the package is not included in this release. The "unless" cases are extremely unlikely because both
$(IsPackableInNonServicingBuild) and $(IsPackageInThisPatch) are either undefined or true.
-->
<UseLatestPackageReferences
Condition=" '$(UseLatestPackageReferences)' == '' AND '$(IsServicingBuild)' != 'true' ">true</UseLatestPackageReferences>
<UseLatestPackageReferences
Condition=" '$(UseLatestPackageReferences)' == '' AND '$(IsImplementationProject)' != 'true' ">true</UseLatestPackageReferences>
Condition=" '$(UseLatestPackageReferences)' == '' AND '$(IsPackableInNonServicingBuild)' != 'true' ">true</UseLatestPackageReferences>
<UseLatestPackageReferences
Condition=" '$(UseLatestPackageReferences)' == '' AND '$(IsImplementationProject)' == 'true' AND '$(IsPackable)' == 'true' ">true</UseLatestPackageReferences>
<UseLatestPackageReferences
Condition=" '$(UseLatestPackageReferences)' == '' ">false</UseLatestPackageReferences>
Condition=" '$(UseLatestPackageReferences)' == '' AND '$(IsPackageInThisPatch)' == 'true' ">true</UseLatestPackageReferences>
<UseLatestPackageReferences Condition=" '$(UseLatestPackageReferences)' == '' ">false</UseLatestPackageReferences>
<!--
Projects should only use the project references instead of baseline package references when:
* preparing a new major or minor release (i.e. a non-servicing builds)
* when a project is a test or sample project
We don't use project references between components in servicing builds between compontents to preserve the baseline as much as possible.
-->
<UseProjectReferences
Condition=" '$(UseProjectReferences)' == '' AND '$(IsServicingBuild)' != 'true' ">true</UseProjectReferences>
<UseProjectReferences
Condition=" '$(UseProjectReferences)' == '' AND '$(IsImplementationProject)' != 'true' ">true</UseProjectReferences>
<UseProjectReferences Condition=" '$(UseProjectReferences)' == '' ">false</UseProjectReferences>
<!-- Projects should use project references (instead of baseline packages) in almost all cases. -->
<UseProjectReferences Condition=" '$(UseProjectReferences)' == '' ">true</UseProjectReferences>
</PropertyGroup>
<ItemDefinitionGroup>
<Reference>
<IsSharedSource></IsSharedSource>
<IsSharedSource />
</Reference>
</ItemDefinitionGroup>
@ -73,20 +67,21 @@
<!-- Capture a list of references which were set explicitly in the project. -->
<_AllowedExplicitPackageReference Include="@(PackageReference->WithMetadataValue('AllowExplicitReference', 'true'))" />
<_AllowedExplicitPackageReference Include="FSharp.Core" Condition="'$(MSBuildProjectExtension)' == '.fsproj'" />
<_ExplicitPackageReference Include="@(PackageReference)" Exclude="@(_ImplicitPackageReference);@(_AllowedExplicitPackageReference)" />
<_ExplicitPackageReference Include="@(PackageReference)"
Exclude="@(_ImplicitPackageReference);@(_AllowedExplicitPackageReference)" />
<_CompilationOnlyReference Condition="'$(TargetFramework)' == 'netstandard2.0'"
Include="@(Reference->WithMetadataValue('NuGetPackageId','NETStandard.Library'))" />
<_CompilationOnlyReference Include="@(Reference->WithMetadataValue('NuGetPackageId','NETStandard.Library'))"
Condition="'$(TargetFramework)' == 'netstandard2.0'" />
<_InvalidReferenceToNonSharedFxAssembly Condition="'$(IsAspNetCoreApp)' == 'true'"
Include="@(Reference)"
Exclude="
@(AspNetCoreAppReference);
@(AspNetCoreAppReferenceAndPackage);
@(ExternalAspNetCoreAppReference);
@(_CompilationOnlyReference);
@(Reference->WithMetadataValue('IsSharedSource', 'true'));
@(Reference->WithMetadataValue('PrivateAssets', 'All'))" />
Include="@(Reference)"
Exclude="
@(AspNetCoreAppReference);
@(AspNetCoreAppReferenceAndPackage);
@(ExternalAspNetCoreAppReference);
@(_CompilationOnlyReference);
@(Reference->WithMetadataValue('IsSharedSource', 'true'));
@(Reference->WithMetadataValue('PrivateAssets', 'All'))" />
<_OriginalReferences Include="@(Reference)" />
</ItemGroup>
@ -134,7 +129,7 @@
</ItemGroup>
<!--
This target helps ensure projects within the shared framework do no unintentionally add new references, and that
This target helps ensure projects within the shared framework do not unintentionally add new references, and that
assemblies outside the shared framework reference the framework as a whole instead of using individual assemblies.
In addition, enforce use of Reference items for projects reference providers.
-->
@ -253,45 +248,6 @@
Text="Could not resolve this reference. Could not locate the package or project for &quot;%(Reference.Identity)&quot;. Did you update baselines and dependencies lists? See docs/ReferenceResolution.md for more details." />
</Target>
<!--
Change @(ResolvedCompileFileDefinitions) items between generation and use in order to compile against RTM lib/
or ref/ assemblies. The approach works for all TFMs because it happens after a specific assembly is chosen for
compilation; no need to restrict this to (say) the default TFM.
This target could get confused if the layout changes for one of the dozen special-cased packages during servicing.
E.g. ResolvePackageAssets picks a compatible assembly from the 5.0.1 package and _UseRTMReferenceAssemblies
changes the path to one not present in the 5.0.0 package. Fortunately, this will break the build with complaints
about the "invalid strong name".
-->
<Target Name="_UseRTMReferenceAssemblies"
Condition=" '$(MSBuildProjectName)' != 'RepoTasks' "
AfterTargets="ResolvePackageAssets"
BeforeTargets="GenerateBuildDependencyFile;GeneratePublishDependencyFile;ILLink;ResolveLockFileReferences"
DependsOnTargets="ResolvePackageAssets">
<Error Condition=" !EXISTS('$(RepoRoot)artifacts\obj\RepoTasks\RepoTasks.csproj.nuget.g.props') "
Text="The eng/tools/RepoTasks project must be restored before building other projects." />
<JoinItems Left="@(ResolvedCompileFileDefinitions)"
Right="@(LatestPackageReference->HasMetadata('RTMVersion'))"
LeftKey="Filename"
ItemSpecToUse="Left"
LeftMetadata="*"
RightMetadata="RTMVersion;Version">
<Output TaskParameter="JoinResult" ItemName="_ResolvedCompileFileDefinitionsToChange" />
</JoinItems>
<ItemGroup>
<ResolvedCompileFileDefinitions Remove="@(_ResolvedCompileFileDefinitionsToChange)" />
<!-- Ignore %(NuGetPackageVersion) when doing substitution because some projects use downlevel packages. -->
<_ResolvedCompileFileDefinitionsToChange
HintPath="$([System.String]::new('%(Identity)').Replace('\%(Version)\', '\%(RTMVersion)\').Replace('/%(Version)/', '/%(RTMVersion)/'))" />
<ResolvedCompileFileDefinitions Include="@(_ResolvedCompileFileDefinitionsToChange -> '%(HintPath)')" />
<_ResolvedCompileFileDefinitionsToChange Remove="@(_ResolvedCompileFileDefinitionsToChange)" />
</ItemGroup>
</Target>
<PropertyGroup>
<_CompileTfmUsingReferenceAssemblies>false</_CompileTfmUsingReferenceAssemblies>
<_CompileTfmUsingReferenceAssemblies
@ -348,9 +304,12 @@
<!-- This is used by the eng/scripts/AddAllProjectRefsToSolution.ps1 script to traverse the ProjectRef graph -->
<PropertyGroup>
<_CustomCollectProjectReferenceDependsOn Condition="'$(TargetFramework)' != ''">ResolveProjectReferences</_CustomCollectProjectReferenceDependsOn>
<_CustomCollectProjectReferenceDependsOn
Condition="'$(TargetFramework)' != ''">ResolveProjectReferences</_CustomCollectProjectReferenceDependsOn>
</PropertyGroup>
<Target Name="_CustomCollectProjectReference" DependsOnTargets="$(_CustomCollectProjectReferenceDependsOn)" Returns="$(MSBuildProjectFullPath);@(_MSBuildProjectReferenceExistent)">
<Target Name="_CustomCollectProjectReference"
DependsOnTargets="$(_CustomCollectProjectReferenceDependsOn)"
Returns="$(MSBuildProjectFullPath);@(_MSBuildProjectReferenceExistent)">
<ItemGroup>
<_TargetFrameworks Include="$(TargetFrameworks)" />
</ItemGroup>

View File

@ -3,8 +3,8 @@
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>
<ProductVersion>3.11</ProductVersion>
<WixVersion>3.11.1</WixVersion>
<ProductVersion>3.14</ProductVersion>
<WixVersion>3.14.0-dotnet</WixVersion>
</PropertyGroup>
<PropertyGroup>

View File

@ -36,15 +36,5 @@
<Reference Include="Microsoft.Deployment.WindowsInstaller.Package">
<HintPath>$(WiXSdkPath)\Microsoft.Deployment.WindowsInstaller.Package.dll</HintPath>
</Reference>
<!--
Gather project references for compilation against RTM packages. %(RTMVersion) is set for about a dozen packages
in all servicing builds. Cannot reference two versions of a package, mandating this separation from projects
using the relevant packages.
-->
<PackageReference Include="@(LatestPackageReference->HasMetadata('RTMVersion'))"
IncludeAssets="None"
PrivateAssets="All"
Version="%(RTMVersion)" />
</ItemGroup>
</Project>

View File

@ -1,9 +1,9 @@
{
"sdk": {
"version": "5.0.100-rc.1.20379.10"
"version": "5.0.100-rc.1.20452.10"
},
"tools": {
"dotnet": "5.0.100-rc.1.20379.10",
"dotnet": "5.0.100-rc.1.20452.10",
"runtimes": {
"dotnet/x64": [
"2.1.18",
@ -30,7 +30,7 @@
},
"msbuild-sdks": {
"Yarn.MSBuild": "1.15.2",
"Microsoft.DotNet.Arcade.Sdk": "5.0.0-beta.20431.1",
"Microsoft.DotNet.Helix.Sdk": "5.0.0-beta.20431.1"
"Microsoft.DotNet.Arcade.Sdk": "5.0.0-beta.20467.6",
"Microsoft.DotNet.Helix.Sdk": "5.0.0-beta.20467.6"
}
}

View File

@ -98,9 +98,9 @@
"src\\Components\\Ignitor\\src\\Ignitor.csproj",
"src\\Components\\Ignitor\\test\\Ignitor.Test.csproj",
"src\\Components\\test\\testassets\\ComponentsApp.Server\\ComponentsApp.Server.csproj",
"src\\Components\\test\\testassets\\GlobalizationWasmApp\\GlobalizationWasmApp.csproj",
"src\\Components\\benchmarkapps\\Wasm.Performance\\Driver\\Wasm.Performance.Driver.csproj",
"src\\Components\\benchmarkapps\\Wasm.Performance\\TestApp\\Wasm.Performance.TestApp.csproj",
"src\\Components\\Web.Extensions\\src\\Microsoft.AspNetCore.Components.Web.Extensions.csproj",
"src\\Components\\WebAssembly\\Server\\test\\Microsoft.AspNetCore.Components.WebAssembly.Server.Tests.csproj",
"src\\Components\\WebAssembly\\Authentication.Msal\\src\\Microsoft.Authentication.WebAssembly.Msal.csproj",
"src\\Components\\WebAssembly\\JSInterop\\src\\Microsoft.JSInterop.WebAssembly.csproj",
@ -111,9 +111,7 @@
"src\\Components\\WebAssembly\\Sdk\\src\\Microsoft.NET.Sdk.BlazorWebAssembly.csproj",
"src\\Components\\WebAssembly\\Sdk\\test\\Microsoft.NET.Sdk.BlazorWebAssembly.Tests.csproj",
"src\\Components\\WebAssembly\\Sdk\\integrationtests\\Microsoft.NET.Sdk.BlazorWebAssembly.IntegrationTests.csproj",
"src\\JSInterop\\Microsoft.JSInterop\\src\\Microsoft.JSInterop.csproj",
"src\\Components\\ProtectedBrowserStorage\\src\\Microsoft.AspNetCore.Components.ProtectedBrowserStorage.csproj",
"src\\Components\\ProtectedBrowserStorage\\test\\Microsoft.AspNetCore.Components.ProtectedBrowserStorage.Tests.csproj"
"src\\JSInterop\\Microsoft.JSInterop\\src\\Microsoft.JSInterop.csproj"
]
}
}

View File

@ -4,6 +4,7 @@
using System;
using System.Collections.Concurrent;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Reflection;
@ -22,10 +23,9 @@ namespace Microsoft.AspNetCore.Components
private static readonly object BoxedFalse = false;
private delegate object? BindFormatter<T>(T value, CultureInfo? culture);
private delegate object BindFormatterWithFormat<T>(T value, CultureInfo? culture, string format);
internal delegate bool BindParser<T>(object? obj, CultureInfo? culture, out T value);
internal delegate bool BindParserWithFormat<T>(object? obj, CultureInfo? culture, string? format, out T value);
internal delegate bool BindParser<T>(object? obj, CultureInfo? culture, [MaybeNullWhen(false)] out T value);
internal delegate bool BindParserWithFormat<T>(object? obj, CultureInfo? culture, string? format, [MaybeNullWhen(false)] out T value);
/// <summary>
/// Formats the provided <paramref name="value"/> as a <see cref="System.String"/>.
@ -35,6 +35,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string? FormatValue(string? value, CultureInfo? culture = null) => FormatStringValueCore(value, culture);
private static string? FormatStringValueCore(string? value, CultureInfo? culture)
@ -50,6 +51,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static bool FormatValue(bool value, CultureInfo? culture = null)
{
// Formatting for bool is special-cased. We need to produce a boolean value for conditional attributes
@ -73,6 +75,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static bool? FormatValue(bool? value, CultureInfo? culture = null)
{
// Formatting for bool is special-cased. We need to produce a boolean value for conditional attributes
@ -96,6 +99,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string? FormatValue(int value, CultureInfo? culture = null) => FormatIntValueCore(value, culture);
private static string? FormatIntValueCore(int value, CultureInfo? culture)
@ -111,6 +115,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string? FormatValue(int? value, CultureInfo? culture = null) => FormatNullableIntValueCore(value, culture);
private static string? FormatNullableIntValueCore(int? value, CultureInfo? culture)
@ -131,6 +136,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string FormatValue(long value, CultureInfo? culture = null) => FormatLongValueCore(value, culture);
private static string FormatLongValueCore(long value, CultureInfo? culture)
@ -146,6 +152,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string? FormatValue(long? value, CultureInfo? culture = null) => FormatNullableLongValueCore(value, culture);
private static string? FormatNullableLongValueCore(long? value, CultureInfo? culture)
@ -166,6 +173,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string FormatValue(short value, CultureInfo? culture = null) => FormatShortValueCore(value, culture);
private static string FormatShortValueCore(short value, CultureInfo? culture)
@ -181,6 +189,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string? FormatValue(short? value, CultureInfo? culture = null) => FormatNullableShortValueCore(value, culture);
private static string? FormatNullableShortValueCore(short? value, CultureInfo? culture)
@ -201,6 +210,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string FormatValue(float value, CultureInfo? culture = null) => FormatFloatValueCore(value, culture);
private static string FormatFloatValueCore(float value, CultureInfo? culture)
@ -216,6 +226,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string? FormatValue(float? value, CultureInfo? culture = null) => FormatNullableFloatValueCore(value, culture);
private static string? FormatNullableFloatValueCore(float? value, CultureInfo? culture)
@ -236,6 +247,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string? FormatValue(double value, CultureInfo? culture = null) => FormatDoubleValueCore(value, culture);
private static string FormatDoubleValueCore(double value, CultureInfo? culture)
@ -251,6 +263,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string? FormatValue(double? value, CultureInfo? culture = null) => FormatNullableDoubleValueCore(value, culture);
private static string? FormatNullableDoubleValueCore(double? value, CultureInfo? culture)
@ -271,6 +284,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string FormatValue(decimal value, CultureInfo? culture = null) => FormatDecimalValueCore(value, culture);
private static string FormatDecimalValueCore(decimal value, CultureInfo? culture)
@ -286,6 +300,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string? FormatValue(decimal? value, CultureInfo? culture = null) => FormatNullableDecimalValueCore(value, culture);
private static string? FormatNullableDecimalValueCore(decimal? value, CultureInfo? culture)
@ -306,6 +321,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string FormatValue(DateTime value, CultureInfo? culture = null) => FormatDateTimeValueCore(value, format: null, culture);
/// <summary>
@ -317,6 +333,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string FormatValue(DateTime value, string format, CultureInfo? culture = null) => FormatDateTimeValueCore(value, format, culture);
private static string FormatDateTimeValueCore(DateTime value, string? format, CultureInfo? culture)
@ -342,6 +359,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string? FormatValue(DateTime? value, CultureInfo? culture = null) => FormatNullableDateTimeValueCore(value, format: null, culture);
/// <summary>
@ -353,6 +371,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string? FormatValue(DateTime? value, string? format, CultureInfo? culture = null) => FormatNullableDateTimeValueCore(value, format, culture);
private static string? FormatNullableDateTimeValueCore(DateTime? value, string? format, CultureInfo? culture)
@ -388,6 +407,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string FormatValue(DateTimeOffset value, CultureInfo? culture = null) => FormatDateTimeOffsetValueCore(value, format: null, culture);
@ -400,6 +420,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string FormatValue(DateTimeOffset value, string format, CultureInfo? culture = null) => FormatDateTimeOffsetValueCore(value, format, culture);
private static string FormatDateTimeOffsetValueCore(DateTimeOffset value, string? format, CultureInfo? culture)
@ -425,6 +446,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string? FormatValue(DateTimeOffset? value, CultureInfo? culture = null) => FormatNullableDateTimeOffsetValueCore(value, format: null, culture);
/// <summary>
@ -436,6 +458,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static string? FormatValue(DateTimeOffset? value, string format, CultureInfo? culture = null) => FormatNullableDateTimeOffsetValueCore(value, format, culture);
private static string? FormatNullableDateTimeOffsetValueCore(DateTimeOffset? value, string? format, CultureInfo? culture)
@ -486,6 +509,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param>
/// <returns>The formatted value.</returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static object? FormatValue<T>(T value, CultureInfo? culture = null)
{
var formatter = FormatterDelegateCache.Get<T>();
@ -1251,7 +1275,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="culture">The <see cref="CultureInfo"/> to use for conversion.</param>
/// <param name="value">The converted value.</param>
/// <returns><c>true</c> if conversion is successful, otherwise <c>false</c>.</returns>
public static bool TryConvertTo<T>(object? obj, CultureInfo? culture, out T value)
public static bool TryConvertTo<T>(object? obj, CultureInfo? culture, [MaybeNullWhen(false)] out T value)
{
var converter = ParserDelegateCache.Get<T>();
return converter(obj, culture, out value);

View File

@ -51,11 +51,11 @@ namespace Microsoft.AspNetCore.Components
/// </summary>
/// <param name="arg">The argument.</param>
/// <returns>A <see cref="Task"/> which completes asynchronously once event processing has completed.</returns>
public Task InvokeAsync(object arg)
public Task InvokeAsync(object? arg)
{
if (Receiver == null)
{
return EventCallbackWorkItem.InvokeAsync<object>(Delegate, arg);
return EventCallbackWorkItem.InvokeAsync<object?>(Delegate, arg);
}
return Receiver.HandleEventAsync(new EventCallbackWorkItem(Delegate), arg);

View File

@ -2,6 +2,7 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using static Microsoft.AspNetCore.Components.BindConverter;
@ -31,6 +32,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -50,6 +52,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -69,6 +72,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -88,6 +92,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -107,6 +112,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -126,6 +132,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -145,6 +152,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -164,6 +172,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -183,6 +192,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -202,6 +212,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -221,6 +232,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -240,6 +252,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -259,6 +272,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -278,6 +292,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -297,6 +312,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -316,6 +332,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -336,6 +353,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="format"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -356,6 +374,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -376,6 +395,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="format"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -396,6 +416,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -416,6 +437,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="format"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -436,6 +458,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -456,6 +479,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="format"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory,
object receiver,
@ -477,6 +501,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param>
/// <param name="culture"></param>
/// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder<T>(
this EventCallbackFactory factory,
object receiver,

View File

@ -46,11 +46,11 @@ namespace Microsoft.AspNetCore.Components
/// </summary>
/// <param name="arg">The argument.</param>
/// <returns>A <see cref="Task"/> which completes asynchronously once event processing has completed.</returns>
public Task InvokeAsync(TValue arg)
public Task InvokeAsync(TValue? arg)
{
if (Receiver == null)
{
return EventCallbackWorkItem.InvokeAsync<TValue>(Delegate, arg);
return EventCallbackWorkItem.InvokeAsync<TValue?>(Delegate, arg);
}
return Receiver.HandleEventAsync(new EventCallbackWorkItem(Delegate), arg);

View File

@ -88,9 +88,8 @@ namespace Microsoft.AspNetCore.Components
/// <typeparam name="TValue">The type of the value.</typeparam>
/// <param name="parameterName">The name of the parameter.</param>
/// <returns>The parameter value if found; otherwise the default value for the specified type.</returns>
[return: MaybeNull]
public TValue GetValueOrDefault<TValue>(string parameterName)
=> GetValueOrDefault<TValue>(parameterName, default!);
public TValue? GetValueOrDefault<TValue>(string parameterName)
=> GetValueOrDefault<TValue?>(parameterName, default);
/// <summary>
/// Gets the value of the parameter with the specified name, or a specified default value

View File

@ -0,0 +1 @@
#nullable enable

View File

@ -0,0 +1,429 @@
Microsoft.AspNetCore.Components.BindConverter
Microsoft.AspNetCore.Components.BindElementAttribute
Microsoft.AspNetCore.Components.BindElementAttribute.BindElementAttribute(string! element, string? suffix, string! valueAttribute, string! changeAttribute) -> void
Microsoft.AspNetCore.Components.BindElementAttribute.ChangeAttribute.get -> string!
Microsoft.AspNetCore.Components.BindElementAttribute.Element.get -> string!
Microsoft.AspNetCore.Components.BindElementAttribute.Suffix.get -> string?
Microsoft.AspNetCore.Components.BindElementAttribute.ValueAttribute.get -> string!
Microsoft.AspNetCore.Components.CascadingParameterAttribute
Microsoft.AspNetCore.Components.CascadingParameterAttribute.CascadingParameterAttribute() -> void
Microsoft.AspNetCore.Components.CascadingParameterAttribute.Name.get -> string?
Microsoft.AspNetCore.Components.CascadingParameterAttribute.Name.set -> void
Microsoft.AspNetCore.Components.CascadingValue<TValue>
Microsoft.AspNetCore.Components.CascadingValue<TValue>.Attach(Microsoft.AspNetCore.Components.RenderHandle renderHandle) -> void
Microsoft.AspNetCore.Components.CascadingValue<TValue>.CascadingValue() -> void
Microsoft.AspNetCore.Components.CascadingValue<TValue>.ChildContent.get -> Microsoft.AspNetCore.Components.RenderFragment!
Microsoft.AspNetCore.Components.CascadingValue<TValue>.ChildContent.set -> void
Microsoft.AspNetCore.Components.CascadingValue<TValue>.IsFixed.get -> bool
Microsoft.AspNetCore.Components.CascadingValue<TValue>.IsFixed.set -> void
Microsoft.AspNetCore.Components.CascadingValue<TValue>.Name.get -> string?
Microsoft.AspNetCore.Components.CascadingValue<TValue>.Name.set -> void
Microsoft.AspNetCore.Components.CascadingValue<TValue>.SetParametersAsync(Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.Task!
Microsoft.AspNetCore.Components.CascadingValue<TValue>.Value.get -> TValue
Microsoft.AspNetCore.Components.CascadingValue<TValue>.Value.set -> void
Microsoft.AspNetCore.Components.ChangeEventArgs
Microsoft.AspNetCore.Components.ChangeEventArgs.ChangeEventArgs() -> void
Microsoft.AspNetCore.Components.ChangeEventArgs.Value.get -> object?
Microsoft.AspNetCore.Components.ChangeEventArgs.Value.set -> void
Microsoft.AspNetCore.Components.CompilerServices.RuntimeHelpers
Microsoft.AspNetCore.Components.ComponentBase
Microsoft.AspNetCore.Components.ComponentBase.ComponentBase() -> void
Microsoft.AspNetCore.Components.ComponentBase.InvokeAsync(System.Action! workItem) -> System.Threading.Tasks.Task!
Microsoft.AspNetCore.Components.ComponentBase.InvokeAsync(System.Func<System.Threading.Tasks.Task!>! workItem) -> System.Threading.Tasks.Task!
Microsoft.AspNetCore.Components.ComponentBase.StateHasChanged() -> void
Microsoft.AspNetCore.Components.Dispatcher
Microsoft.AspNetCore.Components.Dispatcher.AssertAccess() -> void
Microsoft.AspNetCore.Components.Dispatcher.Dispatcher() -> void
Microsoft.AspNetCore.Components.Dispatcher.OnUnhandledException(System.UnhandledExceptionEventArgs! e) -> void
Microsoft.AspNetCore.Components.ElementReference
Microsoft.AspNetCore.Components.ElementReference.Context.get -> Microsoft.AspNetCore.Components.ElementReferenceContext?
Microsoft.AspNetCore.Components.ElementReference.ElementReference(string! id) -> void
Microsoft.AspNetCore.Components.ElementReference.ElementReference(string! id, Microsoft.AspNetCore.Components.ElementReferenceContext? context) -> void
Microsoft.AspNetCore.Components.ElementReference.Id.get -> string!
Microsoft.AspNetCore.Components.ElementReferenceContext
Microsoft.AspNetCore.Components.ElementReferenceContext.ElementReferenceContext() -> void
Microsoft.AspNetCore.Components.EventCallback
Microsoft.AspNetCore.Components.EventCallback.EventCallback(Microsoft.AspNetCore.Components.IHandleEvent? receiver, System.MulticastDelegate? delegate) -> void
Microsoft.AspNetCore.Components.EventCallback.HasDelegate.get -> bool
Microsoft.AspNetCore.Components.EventCallback.InvokeAsync() -> System.Threading.Tasks.Task!
Microsoft.AspNetCore.Components.EventCallback.InvokeAsync(object! arg) -> System.Threading.Tasks.Task!
Microsoft.AspNetCore.Components.EventCallback<TValue>
Microsoft.AspNetCore.Components.EventCallback<TValue>.EventCallback(Microsoft.AspNetCore.Components.IHandleEvent? receiver, System.MulticastDelegate? delegate) -> void
Microsoft.AspNetCore.Components.EventCallback<TValue>.HasDelegate.get -> bool
Microsoft.AspNetCore.Components.EventCallback<TValue>.InvokeAsync() -> System.Threading.Tasks.Task!
Microsoft.AspNetCore.Components.EventCallback<TValue>.InvokeAsync(TValue arg) -> System.Threading.Tasks.Task!
Microsoft.AspNetCore.Components.EventCallbackFactory
Microsoft.AspNetCore.Components.EventCallbackFactory.Create(object! receiver, Microsoft.AspNetCore.Components.EventCallback callback) -> Microsoft.AspNetCore.Components.EventCallback
Microsoft.AspNetCore.Components.EventCallbackFactory.Create(object! receiver, System.Action! callback) -> Microsoft.AspNetCore.Components.EventCallback
Microsoft.AspNetCore.Components.EventCallbackFactory.Create(object! receiver, System.Action<object!>! callback) -> Microsoft.AspNetCore.Components.EventCallback
Microsoft.AspNetCore.Components.EventCallbackFactory.Create(object! receiver, System.Func<System.Threading.Tasks.Task!>! callback) -> Microsoft.AspNetCore.Components.EventCallback
Microsoft.AspNetCore.Components.EventCallbackFactory.Create(object! receiver, System.Func<object!, System.Threading.Tasks.Task!>! callback) -> Microsoft.AspNetCore.Components.EventCallback
Microsoft.AspNetCore.Components.EventCallbackFactory.Create<TValue>(object! receiver, Microsoft.AspNetCore.Components.EventCallback callback) -> Microsoft.AspNetCore.Components.EventCallback<TValue>
Microsoft.AspNetCore.Components.EventCallbackFactory.Create<TValue>(object! receiver, Microsoft.AspNetCore.Components.EventCallback<TValue> callback) -> Microsoft.AspNetCore.Components.EventCallback<TValue>
Microsoft.AspNetCore.Components.EventCallbackFactory.Create<TValue>(object! receiver, System.Action! callback) -> Microsoft.AspNetCore.Components.EventCallback<TValue>
Microsoft.AspNetCore.Components.EventCallbackFactory.Create<TValue>(object! receiver, System.Action<TValue>! callback) -> Microsoft.AspNetCore.Components.EventCallback<TValue>
Microsoft.AspNetCore.Components.EventCallbackFactory.Create<TValue>(object! receiver, System.Func<System.Threading.Tasks.Task!>! callback) -> Microsoft.AspNetCore.Components.EventCallback<TValue>
Microsoft.AspNetCore.Components.EventCallbackFactory.Create<TValue>(object! receiver, System.Func<TValue, System.Threading.Tasks.Task!>! callback) -> Microsoft.AspNetCore.Components.EventCallback<TValue>
Microsoft.AspNetCore.Components.EventCallbackFactory.CreateInferred<TValue>(object! receiver, System.Action<TValue>! callback, TValue value) -> Microsoft.AspNetCore.Components.EventCallback<TValue>
Microsoft.AspNetCore.Components.EventCallbackFactory.CreateInferred<TValue>(object! receiver, System.Func<TValue, System.Threading.Tasks.Task!>! callback, TValue value) -> Microsoft.AspNetCore.Components.EventCallback<TValue>
Microsoft.AspNetCore.Components.EventCallbackFactory.EventCallbackFactory() -> void
Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions
Microsoft.AspNetCore.Components.EventCallbackFactoryEventArgsExtensions
Microsoft.AspNetCore.Components.EventCallbackWorkItem
Microsoft.AspNetCore.Components.EventCallbackWorkItem.EventCallbackWorkItem(System.MulticastDelegate? delegate) -> void
Microsoft.AspNetCore.Components.EventCallbackWorkItem.InvokeAsync(object? arg) -> System.Threading.Tasks.Task!
Microsoft.AspNetCore.Components.EventHandlerAttribute
Microsoft.AspNetCore.Components.EventHandlerAttribute.AttributeName.get -> string!
Microsoft.AspNetCore.Components.EventHandlerAttribute.EnablePreventDefault.get -> bool
Microsoft.AspNetCore.Components.EventHandlerAttribute.EnableStopPropagation.get -> bool
Microsoft.AspNetCore.Components.EventHandlerAttribute.EventArgsType.get -> System.Type!
Microsoft.AspNetCore.Components.EventHandlerAttribute.EventHandlerAttribute(string! attributeName, System.Type! eventArgsType) -> void
Microsoft.AspNetCore.Components.EventHandlerAttribute.EventHandlerAttribute(string! attributeName, System.Type! eventArgsType, bool enableStopPropagation, bool enablePreventDefault) -> void
Microsoft.AspNetCore.Components.IComponent
Microsoft.AspNetCore.Components.IComponent.Attach(Microsoft.AspNetCore.Components.RenderHandle renderHandle) -> void
Microsoft.AspNetCore.Components.IComponent.SetParametersAsync(Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.Task!
Microsoft.AspNetCore.Components.IComponentActivator
Microsoft.AspNetCore.Components.IComponentActivator.CreateInstance(System.Type! componentType) -> Microsoft.AspNetCore.Components.IComponent!
Microsoft.AspNetCore.Components.IHandleAfterRender
Microsoft.AspNetCore.Components.IHandleAfterRender.OnAfterRenderAsync() -> System.Threading.Tasks.Task!
Microsoft.AspNetCore.Components.IHandleEvent
Microsoft.AspNetCore.Components.IHandleEvent.HandleEventAsync(Microsoft.AspNetCore.Components.EventCallbackWorkItem item, object? arg) -> System.Threading.Tasks.Task!
Microsoft.AspNetCore.Components.InjectAttribute
Microsoft.AspNetCore.Components.InjectAttribute.InjectAttribute() -> void
Microsoft.AspNetCore.Components.LayoutAttribute
Microsoft.AspNetCore.Components.LayoutAttribute.LayoutAttribute(System.Type! layoutType) -> void
Microsoft.AspNetCore.Components.LayoutAttribute.LayoutType.get -> System.Type!
Microsoft.AspNetCore.Components.LayoutComponentBase
Microsoft.AspNetCore.Components.LayoutComponentBase.Body.get -> Microsoft.AspNetCore.Components.RenderFragment?
Microsoft.AspNetCore.Components.LayoutComponentBase.Body.set -> void
Microsoft.AspNetCore.Components.LayoutComponentBase.LayoutComponentBase() -> void
Microsoft.AspNetCore.Components.LayoutView
Microsoft.AspNetCore.Components.LayoutView.Attach(Microsoft.AspNetCore.Components.RenderHandle renderHandle) -> void
Microsoft.AspNetCore.Components.LayoutView.ChildContent.get -> Microsoft.AspNetCore.Components.RenderFragment!
Microsoft.AspNetCore.Components.LayoutView.ChildContent.set -> void
Microsoft.AspNetCore.Components.LayoutView.Layout.get -> System.Type!
Microsoft.AspNetCore.Components.LayoutView.Layout.set -> void
Microsoft.AspNetCore.Components.LayoutView.LayoutView() -> void
Microsoft.AspNetCore.Components.LayoutView.SetParametersAsync(Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.Task!
Microsoft.AspNetCore.Components.LocationChangeException
Microsoft.AspNetCore.Components.LocationChangeException.LocationChangeException(string! message, System.Exception! innerException) -> void
Microsoft.AspNetCore.Components.MarkupString
Microsoft.AspNetCore.Components.MarkupString.MarkupString(string! value) -> void
Microsoft.AspNetCore.Components.MarkupString.Value.get -> string!
Microsoft.AspNetCore.Components.NavigationException
Microsoft.AspNetCore.Components.NavigationException.Location.get -> string!
Microsoft.AspNetCore.Components.NavigationException.NavigationException(string! uri) -> void
Microsoft.AspNetCore.Components.NavigationManager
Microsoft.AspNetCore.Components.NavigationManager.BaseUri.get -> string!
Microsoft.AspNetCore.Components.NavigationManager.BaseUri.set -> void
Microsoft.AspNetCore.Components.NavigationManager.Initialize(string! baseUri, string! uri) -> void
Microsoft.AspNetCore.Components.NavigationManager.LocationChanged -> System.EventHandler<Microsoft.AspNetCore.Components.Routing.LocationChangedEventArgs!>!
Microsoft.AspNetCore.Components.NavigationManager.NavigateTo(string! uri, bool forceLoad = false) -> void
Microsoft.AspNetCore.Components.NavigationManager.NavigationManager() -> void
Microsoft.AspNetCore.Components.NavigationManager.NotifyLocationChanged(bool isInterceptedLink) -> void
Microsoft.AspNetCore.Components.NavigationManager.ToAbsoluteUri(string! relativeUri) -> System.Uri!
Microsoft.AspNetCore.Components.NavigationManager.ToBaseRelativePath(string! uri) -> string!
Microsoft.AspNetCore.Components.NavigationManager.Uri.get -> string!
Microsoft.AspNetCore.Components.NavigationManager.Uri.set -> void
Microsoft.AspNetCore.Components.OwningComponentBase
Microsoft.AspNetCore.Components.OwningComponentBase.IsDisposed.get -> bool
Microsoft.AspNetCore.Components.OwningComponentBase.OwningComponentBase() -> void
Microsoft.AspNetCore.Components.OwningComponentBase.ScopedServices.get -> System.IServiceProvider!
Microsoft.AspNetCore.Components.OwningComponentBase<TService>
Microsoft.AspNetCore.Components.OwningComponentBase<TService>.OwningComponentBase() -> void
Microsoft.AspNetCore.Components.OwningComponentBase<TService>.Service.get -> TService
Microsoft.AspNetCore.Components.ParameterAttribute
Microsoft.AspNetCore.Components.ParameterAttribute.CaptureUnmatchedValues.get -> bool
Microsoft.AspNetCore.Components.ParameterAttribute.CaptureUnmatchedValues.set -> void
Microsoft.AspNetCore.Components.ParameterAttribute.ParameterAttribute() -> void
Microsoft.AspNetCore.Components.ParameterValue
Microsoft.AspNetCore.Components.ParameterValue.Cascading.get -> bool
Microsoft.AspNetCore.Components.ParameterValue.Name.get -> string!
Microsoft.AspNetCore.Components.ParameterValue.Value.get -> object!
Microsoft.AspNetCore.Components.ParameterView
Microsoft.AspNetCore.Components.ParameterView.Enumerator
Microsoft.AspNetCore.Components.ParameterView.Enumerator.Current.get -> Microsoft.AspNetCore.Components.ParameterValue
Microsoft.AspNetCore.Components.ParameterView.Enumerator.MoveNext() -> bool
Microsoft.AspNetCore.Components.ParameterView.GetEnumerator() -> Microsoft.AspNetCore.Components.ParameterView.Enumerator
Microsoft.AspNetCore.Components.ParameterView.GetValueOrDefault<TValue>(string! parameterName) -> TValue
Microsoft.AspNetCore.Components.ParameterView.GetValueOrDefault<TValue>(string! parameterName, TValue defaultValue) -> TValue
Microsoft.AspNetCore.Components.ParameterView.SetParameterProperties(object! target) -> void
Microsoft.AspNetCore.Components.ParameterView.ToDictionary() -> System.Collections.Generic.IReadOnlyDictionary<string!, object!>!
Microsoft.AspNetCore.Components.ParameterView.TryGetValue<TValue>(string! parameterName, out TValue result) -> bool
Microsoft.AspNetCore.Components.RenderFragment
Microsoft.AspNetCore.Components.RenderFragment<TValue>
Microsoft.AspNetCore.Components.RenderHandle
Microsoft.AspNetCore.Components.RenderHandle.Dispatcher.get -> Microsoft.AspNetCore.Components.Dispatcher!
Microsoft.AspNetCore.Components.RenderHandle.IsInitialized.get -> bool
Microsoft.AspNetCore.Components.RenderHandle.Render(Microsoft.AspNetCore.Components.RenderFragment! renderFragment) -> void
Microsoft.AspNetCore.Components.RenderTree.ArrayBuilderSegment<T>
Microsoft.AspNetCore.Components.RenderTree.ArrayBuilderSegment<T>.Array.get -> T[]!
Microsoft.AspNetCore.Components.RenderTree.ArrayBuilderSegment<T>.Count.get -> int
Microsoft.AspNetCore.Components.RenderTree.ArrayBuilderSegment<T>.Offset.get -> int
Microsoft.AspNetCore.Components.RenderTree.ArrayBuilderSegment<T>.this[int index].get -> T
Microsoft.AspNetCore.Components.RenderTree.ArrayRange<T>
Microsoft.AspNetCore.Components.RenderTree.ArrayRange<T>.ArrayRange(T[]! array, int count) -> void
Microsoft.AspNetCore.Components.RenderTree.ArrayRange<T>.Clone() -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange<T>
Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo
Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo.ComponentId.get -> int
Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo.ComponentId.set -> void
Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo.EventFieldInfo() -> void
Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo.FieldValue.get -> object!
Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo.FieldValue.set -> void
Microsoft.AspNetCore.Components.RenderTree.RenderBatch
Microsoft.AspNetCore.Components.RenderTree.RenderBatch.DisposedComponentIDs.get -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange<int>
Microsoft.AspNetCore.Components.RenderTree.RenderBatch.DisposedEventHandlerIDs.get -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange<ulong>
Microsoft.AspNetCore.Components.RenderTree.RenderBatch.ReferenceFrames.get -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange<Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame>
Microsoft.AspNetCore.Components.RenderTree.RenderBatch.UpdatedComponents.get -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange<Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiff>
Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiff
Microsoft.AspNetCore.Components.RenderTree.RenderTreeEdit
Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType.PermutationListEnd = 10 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType.PermutationListEntry = 9 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType.PrependFrame = 1 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType.RemoveAttribute = 4 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType.RemoveFrame = 2 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType.SetAttribute = 3 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType.StepIn = 6 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType.StepOut = 7 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType.UpdateMarkup = 8 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType.UpdateText = 5 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.AttributeEventHandlerId.get -> ulong
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddAttribute(int sequence, string! name, string? value) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddComponentReferenceCapture(int sequence, System.Action<object!>! componentReferenceCaptureAction) -> void
Microsoft.AspNetCore.Components.Routing.Router.OnNavigateAsync.get -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.Routing.NavigationContext!>
Microsoft.AspNetCore.Components.Routing.Router.OnNavigateAsync.set -> void
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.AttributeEventUpdatesAttributeName.get -> string
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.AttributeName.get -> string
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.AttributeValue.get -> object
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.Component.get -> Microsoft.AspNetCore.Components.IComponent
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentId.get -> int
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentKey.get -> object
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentReferenceCaptureAction.get -> System.Action<object>
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentReferenceCaptureParentFrameIndex.get -> int
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentSubtreeLength.get -> int
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentType.get -> System.Type
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ElementKey.get -> object
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ElementName.get -> string
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ElementReferenceCaptureAction.get -> System.Action<Microsoft.AspNetCore.Components.ElementReference>
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ElementReferenceCaptureId.get -> string
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ElementSubtreeLength.get -> int
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.FrameType.get -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.MarkupContent.get -> string
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.RegionSubtreeLength.get -> int
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.Sequence.get -> int
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.TextContent.get -> string
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.Attribute = 3 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.Component = 4 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.ComponentReferenceCapture = 7 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.Element = 1 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.ElementReferenceCapture = 6 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.Markup = 8 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.None = 0 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.Region = 5 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.Text = 2 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType
Microsoft.AspNetCore.Components.RenderTree.Renderer
Microsoft.AspNetCore.Components.RenderTree.Renderer.AssignRootComponentId(Microsoft.AspNetCore.Components.IComponent! component) -> int
Microsoft.AspNetCore.Components.RenderTree.Renderer.Dispose() -> void
Microsoft.AspNetCore.Components.RenderTree.Renderer.ElementReferenceContext.get -> Microsoft.AspNetCore.Components.ElementReferenceContext?
Microsoft.AspNetCore.Components.RenderTree.Renderer.ElementReferenceContext.set -> void
Microsoft.AspNetCore.Components.RenderTree.Renderer.GetCurrentRenderTreeFrames(int componentId) -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange<Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame>
Microsoft.AspNetCore.Components.RenderTree.Renderer.InstantiateComponent(System.Type! componentType) -> Microsoft.AspNetCore.Components.IComponent!
Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderRootComponentAsync(int componentId) -> System.Threading.Tasks.Task!
Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderRootComponentAsync(int componentId, Microsoft.AspNetCore.Components.ParameterView initialParameters) -> System.Threading.Tasks.Task!
Microsoft.AspNetCore.Components.RenderTree.Renderer.Renderer(System.IServiceProvider! serviceProvider, Microsoft.Extensions.Logging.ILoggerFactory! loggerFactory) -> void
Microsoft.AspNetCore.Components.RenderTree.Renderer.Renderer(System.IServiceProvider! serviceProvider, Microsoft.Extensions.Logging.ILoggerFactory! loggerFactory, Microsoft.AspNetCore.Components.IComponentActivator! componentActivator) -> void
Microsoft.AspNetCore.Components.RenderTree.Renderer.UnhandledSynchronizationException -> System.UnhandledExceptionEventHandler!
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddAttribute(int sequence, Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame frame) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddAttribute(int sequence, string! name) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddAttribute(int sequence, string! name, Microsoft.AspNetCore.Components.EventCallback value) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddAttribute(int sequence, string! name, System.MulticastDelegate? value) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddAttribute(int sequence, string! name, bool value) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddAttribute(int sequence, string! name, object? value) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddAttribute<TArgument>(int sequence, string! name, Microsoft.AspNetCore.Components.EventCallback<TArgument> value) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(int sequence, Microsoft.AspNetCore.Components.MarkupString markupContent) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(int sequence, Microsoft.AspNetCore.Components.RenderFragment? fragment) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(int sequence, object? textContent) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(int sequence, string? textContent) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent<TValue>(int sequence, Microsoft.AspNetCore.Components.RenderFragment<TValue>? fragment, TValue value) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddElementReferenceCapture(int sequence, System.Action<Microsoft.AspNetCore.Components.ElementReference>! elementReferenceCaptureAction) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddMarkupContent(int sequence, string? markupContent) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddMultipleAttributes(int sequence, System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string!, object!>>? attributes) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.Clear() -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.CloseComponent() -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.CloseElement() -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.CloseRegion() -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.GetFrames() -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange<Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame>
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.OpenComponent(int sequence, System.Type! componentType) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.OpenComponent<TComponent>(int sequence) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.OpenElement(int sequence, string! elementName) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.OpenRegion(int sequence) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.RenderTreeBuilder() -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.SetKey(object? value) -> void
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.SetUpdatesAttributeName(string! updatesAttributeName) -> void
Microsoft.AspNetCore.Components.RouteAttribute
Microsoft.AspNetCore.Components.RouteAttribute.RouteAttribute(string! template) -> void
Microsoft.AspNetCore.Components.RouteAttribute.Template.get -> string!
Microsoft.AspNetCore.Components.RouteData
Microsoft.AspNetCore.Components.RouteData.PageType.get -> System.Type!
Microsoft.AspNetCore.Components.RouteData.RouteData(System.Type! pageType, System.Collections.Generic.IReadOnlyDictionary<string!, object!>! routeValues) -> void
Microsoft.AspNetCore.Components.RouteData.RouteValues.get -> System.Collections.Generic.IReadOnlyDictionary<string!, object!>!
Microsoft.AspNetCore.Components.RouteView
Microsoft.AspNetCore.Components.RouteView.Attach(Microsoft.AspNetCore.Components.RenderHandle renderHandle) -> void
Microsoft.AspNetCore.Components.RouteView.DefaultLayout.get -> System.Type!
Microsoft.AspNetCore.Components.RouteView.DefaultLayout.set -> void
Microsoft.AspNetCore.Components.RouteView.RouteData.get -> Microsoft.AspNetCore.Components.RouteData!
Microsoft.AspNetCore.Components.RouteView.RouteData.set -> void
Microsoft.AspNetCore.Components.RouteView.RouteView() -> void
Microsoft.AspNetCore.Components.RouteView.SetParametersAsync(Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.Task!
Microsoft.AspNetCore.Components.Routing.IHostEnvironmentNavigationManager
Microsoft.AspNetCore.Components.Routing.IHostEnvironmentNavigationManager.Initialize(string! baseUri, string! uri) -> void
Microsoft.AspNetCore.Components.Routing.INavigationInterception
Microsoft.AspNetCore.Components.Routing.INavigationInterception.EnableNavigationInterceptionAsync() -> System.Threading.Tasks.Task!
Microsoft.AspNetCore.Components.Routing.LocationChangedEventArgs
Microsoft.AspNetCore.Components.Routing.LocationChangedEventArgs.IsNavigationIntercepted.get -> bool
Microsoft.AspNetCore.Components.Routing.LocationChangedEventArgs.Location.get -> string!
Microsoft.AspNetCore.Components.Routing.LocationChangedEventArgs.LocationChangedEventArgs(string! location, bool isNavigationIntercepted) -> void
Microsoft.AspNetCore.Components.Routing.NavigationContext
Microsoft.AspNetCore.Components.Routing.NavigationContext.CancellationToken.get -> System.Threading.CancellationToken
Microsoft.AspNetCore.Components.Routing.NavigationContext.Path.get -> string!
Microsoft.AspNetCore.Components.Routing.Router
Microsoft.AspNetCore.Components.Routing.Router.AdditionalAssemblies.get -> System.Collections.Generic.IEnumerable<System.Reflection.Assembly!>!
Microsoft.AspNetCore.Components.Routing.Router.AdditionalAssemblies.set -> void
Microsoft.AspNetCore.Components.Routing.Router.AppAssembly.get -> System.Reflection.Assembly!
Microsoft.AspNetCore.Components.Routing.Router.AppAssembly.set -> void
Microsoft.AspNetCore.Components.Routing.Router.Attach(Microsoft.AspNetCore.Components.RenderHandle renderHandle) -> void
Microsoft.AspNetCore.Components.Routing.Router.Dispose() -> void
Microsoft.AspNetCore.Components.Routing.Router.Found.get -> Microsoft.AspNetCore.Components.RenderFragment<Microsoft.AspNetCore.Components.RouteData!>!
Microsoft.AspNetCore.Components.Routing.Router.Found.set -> void
Microsoft.AspNetCore.Components.Routing.Router.Navigating.get -> Microsoft.AspNetCore.Components.RenderFragment?
Microsoft.AspNetCore.Components.Routing.Router.Navigating.set -> void
Microsoft.AspNetCore.Components.Routing.Router.NotFound.get -> Microsoft.AspNetCore.Components.RenderFragment!
Microsoft.AspNetCore.Components.Routing.Router.NotFound.set -> void
Microsoft.AspNetCore.Components.Routing.Router.Router() -> void
Microsoft.AspNetCore.Components.Routing.Router.SetParametersAsync(Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.Task!
abstract Microsoft.AspNetCore.Components.Dispatcher.CheckAccess() -> bool
abstract Microsoft.AspNetCore.Components.Dispatcher.InvokeAsync(System.Action! workItem) -> System.Threading.Tasks.Task!
abstract Microsoft.AspNetCore.Components.Dispatcher.InvokeAsync(System.Func<System.Threading.Tasks.Task!>! workItem) -> System.Threading.Tasks.Task!
abstract Microsoft.AspNetCore.Components.Dispatcher.InvokeAsync<TResult>(System.Func<System.Threading.Tasks.Task<TResult>!>! workItem) -> System.Threading.Tasks.Task<TResult>!
abstract Microsoft.AspNetCore.Components.Dispatcher.InvokeAsync<TResult>(System.Func<TResult>! workItem) -> System.Threading.Tasks.Task<TResult>!
abstract Microsoft.AspNetCore.Components.NavigationManager.NavigateToCore(string! uri, bool forceLoad) -> void
abstract Microsoft.AspNetCore.Components.RenderTree.Renderer.Dispatcher.get -> Microsoft.AspNetCore.Components.Dispatcher!
abstract Microsoft.AspNetCore.Components.RenderTree.Renderer.HandleException(System.Exception! exception) -> void
abstract Microsoft.AspNetCore.Components.RenderTree.Renderer.UpdateDisplayAsync(in Microsoft.AspNetCore.Components.RenderTree.RenderBatch renderBatch) -> System.Threading.Tasks.Task!
override Microsoft.AspNetCore.Components.MarkupString.ToString() -> string!
~override Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ToString() -> string
readonly Microsoft.AspNetCore.Components.RenderTree.ArrayRange<T>.Array -> T[]!
readonly Microsoft.AspNetCore.Components.RenderTree.ArrayRange<T>.Count -> int
readonly Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiff.ComponentId -> int
readonly Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiff.Edits -> Microsoft.AspNetCore.Components.RenderTree.ArrayBuilderSegment<Microsoft.AspNetCore.Components.RenderTree.RenderTreeEdit>
readonly Microsoft.AspNetCore.Components.RenderTree.RenderTreeEdit.MoveToSiblingIndex -> int
readonly Microsoft.AspNetCore.Components.RenderTree.RenderTreeEdit.ReferenceFrameIndex -> int
readonly Microsoft.AspNetCore.Components.RenderTree.RenderTreeEdit.RemovedAttributeName -> string!
readonly Microsoft.AspNetCore.Components.RenderTree.RenderTreeEdit.SiblingIndex -> int
readonly Microsoft.AspNetCore.Components.RenderTree.RenderTreeEdit.Type -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(System.DateTime value, System.Globalization.CultureInfo? culture = null) -> string!
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(System.DateTime value, string! format, System.Globalization.CultureInfo? culture = null) -> string!
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(System.DateTime? value, System.Globalization.CultureInfo? culture = null) -> string?
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(System.DateTime? value, string? format, System.Globalization.CultureInfo? culture = null) -> string?
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(System.DateTimeOffset value, System.Globalization.CultureInfo? culture = null) -> string!
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(System.DateTimeOffset value, string! format, System.Globalization.CultureInfo? culture = null) -> string!
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(System.DateTimeOffset? value, System.Globalization.CultureInfo? culture = null) -> string?
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(System.DateTimeOffset? value, string! format, System.Globalization.CultureInfo? culture = null) -> string?
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(bool value, System.Globalization.CultureInfo? culture = null) -> bool
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(bool? value, System.Globalization.CultureInfo? culture = null) -> bool?
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(decimal value, System.Globalization.CultureInfo? culture = null) -> string!
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(decimal? value, System.Globalization.CultureInfo? culture = null) -> string?
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(double value, System.Globalization.CultureInfo? culture = null) -> string?
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(double? value, System.Globalization.CultureInfo? culture = null) -> string?
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(float value, System.Globalization.CultureInfo? culture = null) -> string!
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(float? value, System.Globalization.CultureInfo? culture = null) -> string?
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(int value, System.Globalization.CultureInfo? culture = null) -> string?
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(int? value, System.Globalization.CultureInfo? culture = null) -> string?
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(long value, System.Globalization.CultureInfo? culture = null) -> string!
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(long? value, System.Globalization.CultureInfo? culture = null) -> string?
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(short value, System.Globalization.CultureInfo? culture = null) -> string!
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(short? value, System.Globalization.CultureInfo? culture = null) -> string?
static Microsoft.AspNetCore.Components.BindConverter.FormatValue(string? value, System.Globalization.CultureInfo? culture = null) -> string?
static Microsoft.AspNetCore.Components.BindConverter.FormatValue<T>(T value, System.Globalization.CultureInfo? culture = null) -> object?
static Microsoft.AspNetCore.Components.BindConverter.TryConvertTo<T>(object? obj, System.Globalization.CultureInfo? culture, out T value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToBool(object? obj, System.Globalization.CultureInfo? culture, out bool value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToDateTime(object? obj, System.Globalization.CultureInfo? culture, out System.DateTime value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToDateTime(object? obj, System.Globalization.CultureInfo? culture, string! format, out System.DateTime value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToDateTimeOffset(object? obj, System.Globalization.CultureInfo? culture, out System.DateTimeOffset value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToDateTimeOffset(object? obj, System.Globalization.CultureInfo? culture, string! format, out System.DateTimeOffset value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToDecimal(object? obj, System.Globalization.CultureInfo? culture, out decimal value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToDouble(object? obj, System.Globalization.CultureInfo? culture, out double value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToFloat(object? obj, System.Globalization.CultureInfo? culture, out float value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToInt(object? obj, System.Globalization.CultureInfo? culture, out int value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToLong(object? obj, System.Globalization.CultureInfo? culture, out long value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToNullableBool(object? obj, System.Globalization.CultureInfo? culture, out bool? value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToNullableDateTime(object? obj, System.Globalization.CultureInfo? culture, out System.DateTime? value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToNullableDateTime(object? obj, System.Globalization.CultureInfo? culture, string! format, out System.DateTime? value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToNullableDateTimeOffset(object? obj, System.Globalization.CultureInfo? culture, out System.DateTimeOffset? value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToNullableDateTimeOffset(object? obj, System.Globalization.CultureInfo? culture, string! format, out System.DateTimeOffset? value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToNullableDecimal(object? obj, System.Globalization.CultureInfo? culture, out decimal? value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToNullableDouble(object? obj, System.Globalization.CultureInfo? culture, out double? value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToNullableFloat(object? obj, System.Globalization.CultureInfo? culture, out float? value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToNullableInt(object? obj, System.Globalization.CultureInfo? culture, out int? value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToNullableLong(object? obj, System.Globalization.CultureInfo? culture, out long? value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToNullableShort(object? obj, System.Globalization.CultureInfo? culture, out short? value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToShort(object? obj, System.Globalization.CultureInfo? culture, out short value) -> bool
static Microsoft.AspNetCore.Components.BindConverter.TryConvertToString(object? obj, System.Globalization.CultureInfo? culture, out string? value) -> bool
static Microsoft.AspNetCore.Components.CompilerServices.RuntimeHelpers.CreateInferredEventCallback<T>(object! receiver, System.Action<T>! callback, T value) -> Microsoft.AspNetCore.Components.EventCallback<T>
static Microsoft.AspNetCore.Components.CompilerServices.RuntimeHelpers.CreateInferredEventCallback<T>(object! receiver, System.Func<T, System.Threading.Tasks.Task!>! callback, T value) -> Microsoft.AspNetCore.Components.EventCallback<T>
static Microsoft.AspNetCore.Components.CompilerServices.RuntimeHelpers.TypeCheck<T>(T value) -> T
static Microsoft.AspNetCore.Components.Dispatcher.CreateDefault() -> Microsoft.AspNetCore.Components.Dispatcher!
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<System.DateTime>! setter, System.DateTime existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<System.DateTime>! setter, System.DateTime existingValue, string! format, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<System.DateTime?>! setter, System.DateTime? existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<System.DateTime?>! setter, System.DateTime? existingValue, string! format, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<System.DateTimeOffset>! setter, System.DateTimeOffset existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<System.DateTimeOffset>! setter, System.DateTimeOffset existingValue, string! format, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<System.DateTimeOffset?>! setter, System.DateTimeOffset? existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<System.DateTimeOffset?>! setter, System.DateTimeOffset? existingValue, string! format, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<bool>! setter, bool existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<bool?>! setter, bool? existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<decimal>! setter, decimal existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<decimal?>! setter, decimal? existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<double>! setter, double existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<double?>! setter, double? existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<float>! setter, float existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<float?>! setter, float? existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<int>! setter, int existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<int?>! setter, int? existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<long>! setter, long existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<long?>! setter, long? existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<short>! setter, short existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<short?>! setter, short? existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<string?>! setter, string! existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.CreateBinder<T>(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<T>! setter, T existingValue, System.Globalization.CultureInfo? culture = null) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryEventArgsExtensions.Create(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<Microsoft.AspNetCore.Components.ChangeEventArgs!>! callback) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryEventArgsExtensions.Create(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action<System.EventArgs!>! callback) -> Microsoft.AspNetCore.Components.EventCallback<System.EventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryEventArgsExtensions.Create(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Func<Microsoft.AspNetCore.Components.ChangeEventArgs!, System.Threading.Tasks.Task!>! callback) -> Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.ChangeEventArgs!>
static Microsoft.AspNetCore.Components.EventCallbackFactoryEventArgsExtensions.Create(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Func<System.EventArgs!, System.Threading.Tasks.Task!>! callback) -> Microsoft.AspNetCore.Components.EventCallback<System.EventArgs!>
static Microsoft.AspNetCore.Components.MarkupString.explicit operator Microsoft.AspNetCore.Components.MarkupString(string! value) -> Microsoft.AspNetCore.Components.MarkupString
static Microsoft.AspNetCore.Components.ParameterView.Empty.get -> Microsoft.AspNetCore.Components.ParameterView
static Microsoft.AspNetCore.Components.ParameterView.FromDictionary(System.Collections.Generic.IDictionary<string!, object!>! parameters) -> Microsoft.AspNetCore.Components.ParameterView
static readonly Microsoft.AspNetCore.Components.EventCallback.Empty -> Microsoft.AspNetCore.Components.EventCallback
static readonly Microsoft.AspNetCore.Components.EventCallback.Factory -> Microsoft.AspNetCore.Components.EventCallbackFactory!
static readonly Microsoft.AspNetCore.Components.EventCallback<TValue>.Empty -> Microsoft.AspNetCore.Components.EventCallback<TValue>
static readonly Microsoft.AspNetCore.Components.EventCallbackWorkItem.Empty -> Microsoft.AspNetCore.Components.EventCallbackWorkItem
virtual Microsoft.AspNetCore.Components.ComponentBase.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder! builder) -> void
virtual Microsoft.AspNetCore.Components.ComponentBase.OnAfterRender(bool firstRender) -> void
virtual Microsoft.AspNetCore.Components.ComponentBase.OnAfterRenderAsync(bool firstRender) -> System.Threading.Tasks.Task!
virtual Microsoft.AspNetCore.Components.ComponentBase.OnInitialized() -> void
virtual Microsoft.AspNetCore.Components.ComponentBase.OnInitializedAsync() -> System.Threading.Tasks.Task!
virtual Microsoft.AspNetCore.Components.ComponentBase.OnParametersSet() -> void
virtual Microsoft.AspNetCore.Components.ComponentBase.OnParametersSetAsync() -> System.Threading.Tasks.Task!
virtual Microsoft.AspNetCore.Components.ComponentBase.SetParametersAsync(Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.Task!
virtual Microsoft.AspNetCore.Components.ComponentBase.ShouldRender() -> bool
virtual Microsoft.AspNetCore.Components.NavigationManager.EnsureInitialized() -> void
virtual Microsoft.AspNetCore.Components.OwningComponentBase.Dispose(bool disposing) -> void
virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.DispatchEventAsync(ulong eventHandlerId, Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo! fieldInfo, System.EventArgs! eventArgs) -> System.Threading.Tasks.Task!
virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.Dispose(bool disposing) -> void
virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessPendingRender() -> void
virtual Microsoft.AspNetCore.Components.RouteView.Render(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder! builder) -> void

View File

@ -667,15 +667,16 @@ namespace Microsoft.AspNetCore.Components.Rendering
// internal because this should only be used during the post-event tree patching logic
// It's expensive because it involves copying all the subsequent memory in the array
internal void InsertAttributeExpensive(int insertAtIndex, int sequence, string attributeName, object? attributeValue)
internal bool InsertAttributeExpensive(int insertAtIndex, int sequence, string attributeName, object? attributeValue)
{
// Replicate the same attribute omission logic as used elsewhere
if ((attributeValue == null) || (attributeValue is bool boolValue && !boolValue))
{
return;
return false;
}
_entries.InsertExpensive(insertAtIndex, RenderTreeFrame.Attribute(sequence, attributeName, attributeValue));
return true;
}
/// <summary>

View File

@ -75,7 +75,14 @@ namespace Microsoft.AspNetCore.Components.Rendering
// If we get here, we didn't find the desired attribute, so we have to insert a new frame for it
var insertAtIndex = elementFrameIndex + 1;
renderTreeBuilder.InsertAttributeExpensive(insertAtIndex, RenderTreeDiffBuilder.SystemAddedAttributeSequenceNumber, attributeName, attributeValue);
var didInsertFrame = renderTreeBuilder.InsertAttributeExpensive(insertAtIndex, RenderTreeDiffBuilder.SystemAddedAttributeSequenceNumber, attributeName, attributeValue);
if (!didInsertFrame)
{
// The builder decided to omit the new frame, e.g., because it's a false-valued bool
// In this case there's nothing else to update
return;
}
framesArray = renderTreeBuilder.GetFrames().Array; // Refresh in case it mutated due to the expansion
// Update subtree length for this and all ancestor containers

View File

@ -127,6 +127,30 @@ namespace Microsoft.AspNetCore.Components.Test
frame => AssertFrame.Attribute(frame, "eventname", v => Assert.IsType<Action>(v), 1));
}
[Fact]
public void OmitsAttributeIfNotFoundButValueIsOmissible()
{
// Arrange
var valuePropName = "testprop";
var renderer = new TestRenderer();
var builder = new RenderTreeBuilder();
builder.OpenElement(0, "elem");
builder.AddAttribute(1, "eventname", (Action)(() => { }));
builder.SetUpdatesAttributeName(valuePropName);
builder.CloseElement();
var frames = builder.GetFrames();
frames.Array[1] = frames.Array[1].WithAttributeEventHandlerId(123);
// Act
RenderTreeUpdater.UpdateToMatchClientState(builder, 123, false);
frames = builder.GetFrames();
// Assert
Assert.Collection(frames.AsEnumerable(),
frame => AssertFrame.Element(frame, "elem", 2, 0),
frame => AssertFrame.Attribute(frame, "eventname", v => Assert.IsType<Action>(v), 1));
}
[Fact]
public void ExpandsAllAncestorsWhenAddingAttribute()
{

View File

@ -16,7 +16,6 @@
"src\\Components\\Samples\\BlazorServerApp\\BlazorServerApp.csproj",
"src\\Components\\Server\\src\\Microsoft.AspNetCore.Components.Server.csproj",
"src\\Components\\Server\\test\\Microsoft.AspNetCore.Components.Server.Tests.csproj",
"src\\Components\\Web.Extensions\\src\\Microsoft.AspNetCore.Components.Web.Extensions.csproj",
"src\\Components\\WebAssembly\\Authentication.Msal\\src\\Microsoft.Authentication.WebAssembly.Msal.csproj",
"src\\Components\\WebAssembly\\DevServer\\src\\Microsoft.AspNetCore.Components.WebAssembly.DevServer.csproj",
"src\\Components\\WebAssembly\\JSInterop\\src\\Microsoft.JSInterop.WebAssembly.csproj",
@ -44,10 +43,9 @@
"src\\Components\\test\\E2ETest\\Microsoft.AspNetCore.Components.E2ETests.csproj",
"src\\Components\\test\\testassets\\BasicTestApp\\BasicTestApp.csproj",
"src\\Components\\test\\testassets\\ComponentsApp.Server\\ComponentsApp.Server.csproj",
"src\\Components\\test\\testassets\\GlobalizationWasmApp\\GlobalizationWasmApp.csproj",
"src\\Components\\test\\testassets\\TestContentPackage\\TestContentPackage.csproj",
"src\\Components\\test\\testassets\\TestServer\\Components.TestServer.csproj",
"src\\Components\\ProtectedBrowserStorage\\src\\Microsoft.AspNetCore.Components.ProtectedBrowserStorage.csproj",
"src\\Components\\ProtectedBrowserStorage\\test\\Microsoft.AspNetCore.Components.ProtectedBrowserStorage.Tests.csproj"
"src\\Components\\test\\testassets\\TestServer\\Components.TestServer.csproj"
]
}
}

View File

@ -3,7 +3,7 @@
<BlazorWebAssemblyJSPath>$(RepoRoot)src\Components\Web.JS\dist\$(Configuration)\blazor.webassembly.js</BlazorWebAssemblyJSPath>
<BlazorWebAssemblyJSMapPath>$(BlazorWebAssemblyJSPath).map</BlazorWebAssemblyJSMapPath>
<_BlazorDevServerPath>$(ArtifactsDir)/bin/Microsoft.AspNetCore.Components.WebAssembly.DevServer/$(Configuration)/$(DefaultNetCoreTargetFramework)/blazor-devserver.dll</_BlazorDevServerPath>
<_BlazorDevServerPath>$(ArtifactsDir)bin/Microsoft.AspNetCore.Components.WebAssembly.DevServer/$(Configuration)/$(DefaultNetCoreTargetFramework)/blazor-devserver.dll</_BlazorDevServerPath>
<RunCommand>dotnet</RunCommand>
<RunArguments>exec &quot;$(_BlazorDevServerPath)&quot; serve --applicationpath &quot;$(TargetPath)&quot; $(AdditionalRunArguments)</RunArguments>
</PropertyGroup>

View File

@ -0,0 +1 @@
#nullable enable

View File

@ -0,0 +1,59 @@
#nullable enable
Microsoft.AspNetCore.Components.Forms.DataAnnotationsValidator
Microsoft.AspNetCore.Components.Forms.DataAnnotationsValidator.DataAnnotationsValidator() -> void
Microsoft.AspNetCore.Components.Forms.EditContext
Microsoft.AspNetCore.Components.Forms.EditContext.EditContext(object! model) -> void
Microsoft.AspNetCore.Components.Forms.EditContext.Field(string! fieldName) -> Microsoft.AspNetCore.Components.Forms.FieldIdentifier
Microsoft.AspNetCore.Components.Forms.EditContext.GetValidationMessages() -> System.Collections.Generic.IEnumerable<string!>!
Microsoft.AspNetCore.Components.Forms.EditContext.GetValidationMessages(Microsoft.AspNetCore.Components.Forms.FieldIdentifier fieldIdentifier) -> System.Collections.Generic.IEnumerable<string!>!
Microsoft.AspNetCore.Components.Forms.EditContext.GetValidationMessages(System.Linq.Expressions.Expression<System.Func<object!>!>! accessor) -> System.Collections.Generic.IEnumerable<string!>!
Microsoft.AspNetCore.Components.Forms.EditContext.IsModified() -> bool
Microsoft.AspNetCore.Components.Forms.EditContext.IsModified(System.Linq.Expressions.Expression<System.Func<object!>!>! accessor) -> bool
Microsoft.AspNetCore.Components.Forms.EditContext.IsModified(in Microsoft.AspNetCore.Components.Forms.FieldIdentifier fieldIdentifier) -> bool
Microsoft.AspNetCore.Components.Forms.EditContext.MarkAsUnmodified() -> void
Microsoft.AspNetCore.Components.Forms.EditContext.MarkAsUnmodified(in Microsoft.AspNetCore.Components.Forms.FieldIdentifier fieldIdentifier) -> void
Microsoft.AspNetCore.Components.Forms.EditContext.Model.get -> object!
Microsoft.AspNetCore.Components.Forms.EditContext.NotifyFieldChanged(in Microsoft.AspNetCore.Components.Forms.FieldIdentifier fieldIdentifier) -> void
Microsoft.AspNetCore.Components.Forms.EditContext.NotifyValidationStateChanged() -> void
Microsoft.AspNetCore.Components.Forms.EditContext.OnFieldChanged -> System.EventHandler<Microsoft.AspNetCore.Components.Forms.FieldChangedEventArgs!>?
Microsoft.AspNetCore.Components.Forms.EditContext.OnValidationRequested -> System.EventHandler<Microsoft.AspNetCore.Components.Forms.ValidationRequestedEventArgs!>?
Microsoft.AspNetCore.Components.Forms.EditContext.OnValidationStateChanged -> System.EventHandler<Microsoft.AspNetCore.Components.Forms.ValidationStateChangedEventArgs!>?
Microsoft.AspNetCore.Components.Forms.EditContext.Properties.get -> Microsoft.AspNetCore.Components.Forms.EditContextProperties!
Microsoft.AspNetCore.Components.Forms.EditContext.Validate() -> bool
Microsoft.AspNetCore.Components.Forms.EditContextDataAnnotationsExtensions
Microsoft.AspNetCore.Components.Forms.EditContextProperties
Microsoft.AspNetCore.Components.Forms.EditContextProperties.EditContextProperties() -> void
Microsoft.AspNetCore.Components.Forms.EditContextProperties.Remove(object! key) -> bool
Microsoft.AspNetCore.Components.Forms.EditContextProperties.TryGetValue(object! key, out object? value) -> bool
Microsoft.AspNetCore.Components.Forms.EditContextProperties.this[object! key].get -> object!
Microsoft.AspNetCore.Components.Forms.EditContextProperties.this[object! key].set -> void
Microsoft.AspNetCore.Components.Forms.FieldChangedEventArgs
Microsoft.AspNetCore.Components.Forms.FieldChangedEventArgs.FieldChangedEventArgs(in Microsoft.AspNetCore.Components.Forms.FieldIdentifier fieldIdentifier) -> void
Microsoft.AspNetCore.Components.Forms.FieldChangedEventArgs.FieldIdentifier.get -> Microsoft.AspNetCore.Components.Forms.FieldIdentifier
Microsoft.AspNetCore.Components.Forms.FieldIdentifier
Microsoft.AspNetCore.Components.Forms.FieldIdentifier.Equals(Microsoft.AspNetCore.Components.Forms.FieldIdentifier otherIdentifier) -> bool
Microsoft.AspNetCore.Components.Forms.FieldIdentifier.FieldIdentifier(object! model, string! fieldName) -> void
Microsoft.AspNetCore.Components.Forms.FieldIdentifier.FieldName.get -> string!
Microsoft.AspNetCore.Components.Forms.FieldIdentifier.Model.get -> object!
Microsoft.AspNetCore.Components.Forms.ValidationMessageStore
Microsoft.AspNetCore.Components.Forms.ValidationMessageStore.Add(System.Linq.Expressions.Expression<System.Func<object!>!>! accessor, System.Collections.Generic.IEnumerable<string!>! messages) -> void
Microsoft.AspNetCore.Components.Forms.ValidationMessageStore.Add(System.Linq.Expressions.Expression<System.Func<object!>!>! accessor, string! message) -> void
Microsoft.AspNetCore.Components.Forms.ValidationMessageStore.Add(in Microsoft.AspNetCore.Components.Forms.FieldIdentifier fieldIdentifier, System.Collections.Generic.IEnumerable<string!>! messages) -> void
Microsoft.AspNetCore.Components.Forms.ValidationMessageStore.Add(in Microsoft.AspNetCore.Components.Forms.FieldIdentifier fieldIdentifier, string! message) -> void
Microsoft.AspNetCore.Components.Forms.ValidationMessageStore.Clear() -> void
Microsoft.AspNetCore.Components.Forms.ValidationMessageStore.Clear(System.Linq.Expressions.Expression<System.Func<object!>!>! accessor) -> void
Microsoft.AspNetCore.Components.Forms.ValidationMessageStore.Clear(in Microsoft.AspNetCore.Components.Forms.FieldIdentifier fieldIdentifier) -> void
Microsoft.AspNetCore.Components.Forms.ValidationMessageStore.ValidationMessageStore(Microsoft.AspNetCore.Components.Forms.EditContext! editContext) -> void
Microsoft.AspNetCore.Components.Forms.ValidationMessageStore.this[Microsoft.AspNetCore.Components.Forms.FieldIdentifier fieldIdentifier].get -> System.Collections.Generic.IEnumerable<string!>!
Microsoft.AspNetCore.Components.Forms.ValidationMessageStore.this[System.Linq.Expressions.Expression<System.Func<object!>!>! accessor].get -> System.Collections.Generic.IEnumerable<string!>!
Microsoft.AspNetCore.Components.Forms.ValidationRequestedEventArgs
Microsoft.AspNetCore.Components.Forms.ValidationRequestedEventArgs.ValidationRequestedEventArgs() -> void
Microsoft.AspNetCore.Components.Forms.ValidationStateChangedEventArgs
Microsoft.AspNetCore.Components.Forms.ValidationStateChangedEventArgs.ValidationStateChangedEventArgs() -> void
override Microsoft.AspNetCore.Components.Forms.DataAnnotationsValidator.OnInitialized() -> void
override Microsoft.AspNetCore.Components.Forms.FieldIdentifier.Equals(object? obj) -> bool
override Microsoft.AspNetCore.Components.Forms.FieldIdentifier.GetHashCode() -> int
static Microsoft.AspNetCore.Components.Forms.EditContextDataAnnotationsExtensions.AddDataAnnotationsValidation(this Microsoft.AspNetCore.Components.Forms.EditContext! editContext) -> Microsoft.AspNetCore.Components.Forms.EditContext!
static Microsoft.AspNetCore.Components.Forms.FieldIdentifier.Create<TField>(System.Linq.Expressions.Expression<System.Func<TField>!>! accessor) -> Microsoft.AspNetCore.Components.Forms.FieldIdentifier
static readonly Microsoft.AspNetCore.Components.Forms.ValidationRequestedEventArgs.Empty -> Microsoft.AspNetCore.Components.Forms.ValidationRequestedEventArgs!
static readonly Microsoft.AspNetCore.Components.Forms.ValidationStateChangedEventArgs.Empty -> Microsoft.AspNetCore.Components.Forms.ValidationStateChangedEventArgs!

View File

@ -14,7 +14,7 @@ namespace Ignitor
{
Timeout = timeout;
Completion = new TaskCompletionSource<TResult>(TaskContinuationOptions.RunContinuationsAsynchronously);
Completion = new TaskCompletionSource<TResult>(TaskCreationOptions.RunContinuationsAsynchronously);
Completion.Task.ContinueWith(
(task, state) =>
{

View File

@ -0,0 +1 @@
#nullable enable

View File

@ -0,0 +1,193 @@
#nullable enable
Ignitor.ArrayBuilderSegment<T>
Ignitor.ArrayBuilderSegment<T>.Array.get -> T[]!
Ignitor.ArrayBuilderSegment<T>.Count.get -> int
Ignitor.ArrayBuilderSegment<T>.Offset.get -> int
Ignitor.ArrayBuilderSegment<T>.this[int index].get -> T
Ignitor.ArrayRange<T>
Ignitor.ArrayRange<T>.Clone() -> Ignitor.ArrayRange<T>
Ignitor.BlazorClient
Ignitor.BlazorClient.BlazorClient() -> void
Ignitor.BlazorClient.Cancel() -> void
Ignitor.BlazorClient.CaptureOperations.get -> bool
Ignitor.BlazorClient.CaptureOperations.set -> void
Ignitor.BlazorClient.CircuitId.get -> string?
Ignitor.BlazorClient.ClickAsync(string! elementId, bool expectRenderBatch = true) -> System.Threading.Tasks.Task!
Ignitor.BlazorClient.ConfirmBatch(int batchId, string? error = null) -> System.Threading.Tasks.Task!
Ignitor.BlazorClient.ConfirmRenderBatch.get -> bool
Ignitor.BlazorClient.ConfirmRenderBatch.set -> void
Ignitor.BlazorClient.ConnectAsync(System.Uri! uri, bool connectAutomatically = true, System.Action<Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilder!, System.Uri!>? configure = null) -> System.Threading.Tasks.Task<bool>!
Ignitor.BlazorClient.DefaultConnectionTimeout.get -> System.TimeSpan?
Ignitor.BlazorClient.DefaultConnectionTimeout.set -> void
Ignitor.BlazorClient.DefaultOperationTimeout.get -> System.TimeSpan?
Ignitor.BlazorClient.DefaultOperationTimeout.set -> void
Ignitor.BlazorClient.DisposeAsync() -> System.Threading.Tasks.ValueTask
Ignitor.BlazorClient.DotNetInteropCompletion -> System.Action<string!>?
Ignitor.BlazorClient.ExpectCircuitError(System.Func<System.Threading.Tasks.Task!>! action, System.TimeSpan? timeout = null) -> System.Threading.Tasks.Task<string?>!
Ignitor.BlazorClient.ExpectCircuitErrorAndDisconnect(System.Func<System.Threading.Tasks.Task!>! action, System.TimeSpan? timeout = null) -> System.Threading.Tasks.Task<(string? error, System.Exception? exception)>!
Ignitor.BlazorClient.ExpectDisconnect(System.Func<System.Threading.Tasks.Task!>! action, System.TimeSpan? timeout = null) -> System.Threading.Tasks.Task<System.Exception?>!
Ignitor.BlazorClient.ExpectDotNetInterop(System.Func<System.Threading.Tasks.Task!>! action, System.TimeSpan? timeout = null) -> System.Threading.Tasks.Task<string?>!
Ignitor.BlazorClient.ExpectJSInterop(System.Func<System.Threading.Tasks.Task!>! action, System.TimeSpan? timeout = null) -> System.Threading.Tasks.Task<Ignitor.CapturedJSInteropCall?>!
Ignitor.BlazorClient.ExpectRenderBatch(System.Func<System.Threading.Tasks.Task!>! action, System.TimeSpan? timeout = null) -> System.Threading.Tasks.Task<Ignitor.CapturedRenderBatch?>!
Ignitor.BlazorClient.FindElementById(string! id) -> Ignitor.ElementNode!
Ignitor.BlazorClient.FormatError.get -> System.Func<string!, System.Exception!>?
Ignitor.BlazorClient.FormatError.set -> void
Ignitor.BlazorClient.GetPrerenderDescriptors(System.Uri! uri) -> System.Threading.Tasks.Task<string!>!
Ignitor.BlazorClient.Hive.get -> Ignitor.ElementHive!
Ignitor.BlazorClient.HubConnection.get -> Microsoft.AspNetCore.SignalR.Client.HubConnection!
Ignitor.BlazorClient.ImplicitWait.get -> bool
Ignitor.BlazorClient.InvokeDotNetMethod(object! callId, string! assemblyName, string! methodIdentifier, object! dotNetObjectId, string! argsJson) -> System.Threading.Tasks.Task!
Ignitor.BlazorClient.JSInterop -> System.Action<Ignitor.CapturedJSInteropCall!>?
Ignitor.BlazorClient.LoggerProvider.get -> Microsoft.Extensions.Logging.ILoggerProvider!
Ignitor.BlazorClient.LoggerProvider.set -> void
Ignitor.BlazorClient.OnCircuitError -> System.Action<string!>?
Ignitor.BlazorClient.Operations.get -> Ignitor.Operations!
Ignitor.BlazorClient.PrepareForNextBatch(System.TimeSpan? timeout) -> System.Threading.Tasks.Task<Ignitor.CapturedRenderBatch?>!
Ignitor.BlazorClient.PrepareForNextCircuitError(System.TimeSpan? timeout) -> System.Threading.Tasks.Task<string?>!
Ignitor.BlazorClient.PrepareForNextDisconnect(System.TimeSpan? timeout) -> System.Threading.Tasks.Task<System.Exception?>!
Ignitor.BlazorClient.PrepareForNextDotNetInterop(System.TimeSpan? timeout) -> System.Threading.Tasks.Task<string?>!
Ignitor.BlazorClient.PrepareForNextJSInterop(System.TimeSpan? timeout) -> System.Threading.Tasks.Task<Ignitor.CapturedJSInteropCall?>!
Ignitor.BlazorClient.RenderBatchReceived -> System.Action<Ignitor.CapturedRenderBatch!>?
Ignitor.BlazorClient.SelectAsync(string! elementId, string! value) -> System.Threading.Tasks.Task!
Ignitor.CapturedAttachComponentCall
Ignitor.CapturedAttachComponentCall.ComponentId.get -> int
Ignitor.CapturedJSInteropCall
Ignitor.CapturedJSInteropCall.AsyncHandle.get -> int
Ignitor.CapturedJSInteropCall.ResultType.get -> int
Ignitor.CapturedJSInteropCall.TargetInstanceId.get -> long
Ignitor.CapturedRenderBatch
Ignitor.CapturedRenderBatch.Id.get -> int
Ignitor.ComponentNode
Ignitor.ComponentNode.ComponentId.get -> int
Ignitor.ComponentNode.ComponentNode(int componentId) -> void
Ignitor.ComponentState
Ignitor.ComponentState.Component.get -> Ignitor.IComponent?
Ignitor.ComponentState.ComponentId.get -> int
Ignitor.ComponentState.ComponentState(int componentId) -> void
Ignitor.ContainerNode
Ignitor.ContainerNode.Children.get -> System.Collections.Generic.IReadOnlyList<Ignitor.Node!>!
Ignitor.ContainerNode.ContainerNode() -> void
Ignitor.ContainerNode.CreateAndInsertComponent(int componentId, int childIndex) -> Ignitor.ComponentNode!
Ignitor.ContainerNode.CreateAndInsertContainer(int childIndex) -> Ignitor.ContainerNode!
Ignitor.ContainerNode.InsertLogicalChild(Ignitor.Node! child, int childIndex) -> void
Ignitor.ContainerNode.RemoveLogicalChild(int childIndex) -> void
Ignitor.ElementHive
Ignitor.ElementHive.Components.get -> System.Collections.Generic.Dictionary<int, Ignitor.ComponentNode!>!
Ignitor.ElementHive.ElementHive() -> void
Ignitor.ElementHive.SerializedValue.get -> string!
Ignitor.ElementHive.TryFindElementById(string! id, out Ignitor.ElementNode? element) -> bool
Ignitor.ElementHive.Update(Ignitor.RenderBatch batch) -> void
Ignitor.ElementNode
Ignitor.ElementNode.Attributes.get -> System.Collections.Generic.IReadOnlyDictionary<string!, object!>!
Ignitor.ElementNode.ClickAsync(Microsoft.AspNetCore.SignalR.Client.HubConnection! connection) -> System.Threading.Tasks.Task!
Ignitor.ElementNode.ElementEventDescriptor
Ignitor.ElementNode.ElementEventDescriptor.ElementEventDescriptor(string! eventName, ulong eventId) -> void
Ignitor.ElementNode.ElementEventDescriptor.EventId.get -> ulong
Ignitor.ElementNode.ElementEventDescriptor.EventName.get -> string!
Ignitor.ElementNode.ElementNode(string! tagName) -> void
Ignitor.ElementNode.Events.get -> System.Collections.Generic.IReadOnlyDictionary<string!, Ignitor.ElementNode.ElementEventDescriptor!>!
Ignitor.ElementNode.Properties.get -> System.Collections.Generic.IReadOnlyDictionary<string!, object!>!
Ignitor.ElementNode.RemoveAttribute(string! key) -> void
Ignitor.ElementNode.SetAttribute(string! key, object! value) -> void
Ignitor.ElementNode.SetEvent(string! eventName, Ignitor.ElementNode.ElementEventDescriptor! descriptor) -> void
Ignitor.ElementNode.SetProperty(string! key, object! value) -> void
Ignitor.ElementNode.TagName.get -> string!
Ignitor.ElementReference
Ignitor.Error
Ignitor.Error.Error() -> void
Ignitor.Error.Stack.get -> string?
Ignitor.Error.Stack.set -> void
Ignitor.IComponent
Ignitor.IgnitorMessagePackHubProtocol
Ignitor.IgnitorMessagePackHubProtocol.IgnitorMessagePackHubProtocol() -> void
Ignitor.MarkupNode
Ignitor.Node
Ignitor.Node.Node() -> void
Ignitor.Node.SerializedValue.get -> string!
Ignitor.Operations
Ignitor.Operations.AttachComponent.get -> System.Collections.Concurrent.ConcurrentQueue<Ignitor.CapturedAttachComponentCall>!
Ignitor.Operations.Batches.get -> System.Collections.Concurrent.ConcurrentQueue<Ignitor.CapturedRenderBatch!>!
Ignitor.Operations.DotNetCompletions.get -> System.Collections.Concurrent.ConcurrentQueue<string!>!
Ignitor.Operations.Errors.get -> System.Collections.Concurrent.ConcurrentQueue<string!>!
Ignitor.Operations.JSInteropCalls.get -> System.Collections.Concurrent.ConcurrentQueue<Ignitor.CapturedJSInteropCall!>!
Ignitor.Operations.Operations() -> void
Ignitor.RenderBatch
Ignitor.RenderBatch.DisposedComponentIDs.get -> Ignitor.ArrayRange<int>
Ignitor.RenderBatch.DisposedEventHandlerIDs.get -> Ignitor.ArrayRange<ulong>
Ignitor.RenderBatch.ReferenceFrames.get -> Ignitor.ArrayRange<Ignitor.RenderTreeFrame>
Ignitor.RenderBatch.UpdatedComponents.get -> Ignitor.ArrayRange<Ignitor.RenderTreeDiff>
Ignitor.RenderBatchReader
Ignitor.RenderTreeDiff
Ignitor.RenderTreeEdit
Ignitor.RenderTreeEditType
Ignitor.RenderTreeEditType.PermutationListEnd = 10 -> Ignitor.RenderTreeEditType
Ignitor.RenderTreeEditType.PermutationListEntry = 9 -> Ignitor.RenderTreeEditType
Ignitor.RenderTreeEditType.PrependFrame = 1 -> Ignitor.RenderTreeEditType
Ignitor.RenderTreeEditType.RemoveAttribute = 4 -> Ignitor.RenderTreeEditType
Ignitor.RenderTreeEditType.RemoveFrame = 2 -> Ignitor.RenderTreeEditType
Ignitor.RenderTreeEditType.SetAttribute = 3 -> Ignitor.RenderTreeEditType
Ignitor.RenderTreeEditType.StepIn = 6 -> Ignitor.RenderTreeEditType
Ignitor.RenderTreeEditType.StepOut = 7 -> Ignitor.RenderTreeEditType
Ignitor.RenderTreeEditType.UpdateMarkup = 8 -> Ignitor.RenderTreeEditType
Ignitor.RenderTreeEditType.UpdateText = 5 -> Ignitor.RenderTreeEditType
Ignitor.RenderTreeFrame
Ignitor.RenderTreeFrame.AttributeEventHandlerId.get -> ulong
Ignitor.RenderTreeFrame.ComponentId.get -> int
Ignitor.RenderTreeFrame.ComponentReferenceCaptureParentFrameIndex.get -> int
Ignitor.RenderTreeFrame.ComponentSubtreeLength.get -> int
Ignitor.RenderTreeFrame.ElementSubtreeLength.get -> int
Ignitor.RenderTreeFrame.FrameType.get -> Ignitor.RenderTreeFrameType
Ignitor.RenderTreeFrame.RegionSubtreeLength.get -> int
Ignitor.RenderTreeFrame.Sequence.get -> int
Ignitor.RenderTreeFrameType
Ignitor.RenderTreeFrameType.Attribute = 3 -> Ignitor.RenderTreeFrameType
Ignitor.RenderTreeFrameType.Component = 4 -> Ignitor.RenderTreeFrameType
Ignitor.RenderTreeFrameType.ComponentReferenceCapture = 7 -> Ignitor.RenderTreeFrameType
Ignitor.RenderTreeFrameType.Element = 1 -> Ignitor.RenderTreeFrameType
Ignitor.RenderTreeFrameType.ElementReferenceCapture = 6 -> Ignitor.RenderTreeFrameType
Ignitor.RenderTreeFrameType.Markup = 8 -> Ignitor.RenderTreeFrameType
Ignitor.RenderTreeFrameType.None = 0 -> Ignitor.RenderTreeFrameType
Ignitor.RenderTreeFrameType.Region = 5 -> Ignitor.RenderTreeFrameType
Ignitor.RenderTreeFrameType.Text = 2 -> Ignitor.RenderTreeFrameType
Ignitor.TextNode
readonly Ignitor.ArrayRange<T>.Count -> int
readonly Ignitor.RenderTreeDiff.ComponentId -> int
readonly Ignitor.RenderTreeDiff.Edits -> Ignitor.ArrayBuilderSegment<Ignitor.RenderTreeEdit>
readonly Ignitor.RenderTreeEdit.MoveToSiblingIndex -> int
readonly Ignitor.RenderTreeEdit.ReferenceFrameIndex -> int
readonly Ignitor.RenderTreeEdit.SiblingIndex -> int
readonly Ignitor.RenderTreeEdit.Type -> Ignitor.RenderTreeEditType
static Ignitor.RenderBatchReader.Read(System.ReadOnlySpan<byte> data) -> Ignitor.RenderBatch
virtual Ignitor.Node.Parent.get -> Ignitor.ContainerNode?
virtual Ignitor.Node.Parent.set -> void
~Ignitor.ArrayRange<T>.ArrayRange(T[] array, int count) -> void
~Ignitor.CapturedAttachComponentCall.CapturedAttachComponentCall(int componentId, string selector) -> void
~Ignitor.CapturedAttachComponentCall.Selector.get -> string
~Ignitor.CapturedJSInteropCall.ArgsJson.get -> string
~Ignitor.CapturedJSInteropCall.CapturedJSInteropCall(int asyncHandle, string identifier, string argsJson, int resultType, long targetInstanceId) -> void
~Ignitor.CapturedJSInteropCall.Identifier.get -> string
~Ignitor.CapturedRenderBatch.CapturedRenderBatch(int id, byte[] data) -> void
~Ignitor.CapturedRenderBatch.Data.get -> byte[]
~Ignitor.ElementReference.ElementReference(string id) -> void
~Ignitor.ElementReference.Id.get -> string
~Ignitor.MarkupNode.MarkupContent.get -> string
~Ignitor.MarkupNode.MarkupNode(string markupContent) -> void
~Ignitor.RenderTreeFrame.AttributeEventUpdatesAttributeName.get -> string
~Ignitor.RenderTreeFrame.AttributeName.get -> string
~Ignitor.RenderTreeFrame.AttributeValue.get -> object
~Ignitor.RenderTreeFrame.Component.get -> Ignitor.IComponent
~Ignitor.RenderTreeFrame.ComponentKey.get -> object
~Ignitor.RenderTreeFrame.ComponentReferenceCaptureAction.get -> System.Action<object>
~Ignitor.RenderTreeFrame.ComponentType.get -> System.Type
~Ignitor.RenderTreeFrame.ElementKey.get -> object
~Ignitor.RenderTreeFrame.ElementName.get -> string
~Ignitor.RenderTreeFrame.ElementReferenceCaptureAction.get -> System.Action<Ignitor.ElementReference>
~Ignitor.RenderTreeFrame.ElementReferenceCaptureId.get -> string
~Ignitor.RenderTreeFrame.MarkupContent.get -> string
~Ignitor.RenderTreeFrame.TextContent.get -> string
~Ignitor.TextNode.TextContent.get -> string
~Ignitor.TextNode.TextContent.set -> void
~Ignitor.TextNode.TextNode(string text) -> void
~override Ignitor.RenderTreeFrame.ToString() -> string
~readonly Ignitor.ArrayRange<T>.Array -> T[]
~readonly Ignitor.RenderTreeEdit.RemovedAttributeName -> string

View File

@ -1,20 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
<Description>Provides functionality for storing protected data using the browser's localStorage and sessionStorage APIs.</Description>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.AspNetCore.Components" />
<Reference Include="Microsoft.AspNetCore.DataProtection" />
<Reference Include="Microsoft.JSInterop" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\Shared\src\JsonSerializerOptionsProvider.cs" />
</ItemGroup>
</Project>

View File

@ -1,4 +0,0 @@
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
[assembly: InternalsVisibleTo("Microsoft.AspNetCore.Components.ProtectedBrowserStorage.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")]

View File

@ -1,24 +0,0 @@
// 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 Microsoft.AspNetCore.Components.ProtectedBrowserStorage;
namespace Microsoft.Extensions.DependencyInjection
{
/// <summary>
/// Extension methods for registering Protected Browser Storage services.
/// </summary>
public static class ProtectedBrowserStorageServiceCollectionExtensions
{
/// <summary>
/// Adds services for protected browser storage to the specified <see cref="IServiceCollection"/>.
/// </summary>
/// <param name="services">The <see cref="IServiceCollection"/>.</param>
public static void AddProtectedBrowserStorage(this IServiceCollection services)
{
services.AddDataProtection();
services.AddScoped<ProtectedLocalStorage>();
services.AddScoped<ProtectedSessionStorage>();
}
}
}

View File

@ -0,0 +1 @@
#nullable enable

View File

@ -0,0 +1,17 @@
#nullable enable
Microsoft.AspNetCore.Components.ProtectedBrowserStorage.ProtectedBrowserStorage
Microsoft.AspNetCore.Components.ProtectedBrowserStorage.ProtectedBrowserStorage.DeleteAsync(string! key) -> System.Threading.Tasks.ValueTask
Microsoft.AspNetCore.Components.ProtectedBrowserStorage.ProtectedBrowserStorage.GetAsync<TValue>(string! key) -> System.Threading.Tasks.ValueTask<Microsoft.AspNetCore.Components.ProtectedBrowserStorage.ProtectedBrowserStorageResult<TValue>>
Microsoft.AspNetCore.Components.ProtectedBrowserStorage.ProtectedBrowserStorage.GetAsync<TValue>(string! purpose, string! key) -> System.Threading.Tasks.ValueTask<Microsoft.AspNetCore.Components.ProtectedBrowserStorage.ProtectedBrowserStorageResult<TValue>>
Microsoft.AspNetCore.Components.ProtectedBrowserStorage.ProtectedBrowserStorage.ProtectedBrowserStorage(string! storeName, Microsoft.JSInterop.IJSRuntime! jsRuntime, Microsoft.AspNetCore.DataProtection.IDataProtectionProvider! dataProtectionProvider) -> void
Microsoft.AspNetCore.Components.ProtectedBrowserStorage.ProtectedBrowserStorage.SetAsync(string! key, object! value) -> System.Threading.Tasks.ValueTask
Microsoft.AspNetCore.Components.ProtectedBrowserStorage.ProtectedBrowserStorage.SetAsync(string! purpose, string! key, object! value) -> System.Threading.Tasks.ValueTask
Microsoft.AspNetCore.Components.ProtectedBrowserStorage.ProtectedBrowserStorageResult<T>
Microsoft.AspNetCore.Components.ProtectedBrowserStorage.ProtectedBrowserStorageResult<T>.Success.get -> bool
Microsoft.AspNetCore.Components.ProtectedBrowserStorage.ProtectedBrowserStorageResult<T>.Value.get -> T
Microsoft.AspNetCore.Components.ProtectedBrowserStorage.ProtectedLocalStorage
Microsoft.AspNetCore.Components.ProtectedBrowserStorage.ProtectedLocalStorage.ProtectedLocalStorage(Microsoft.JSInterop.IJSRuntime! jsRuntime, Microsoft.AspNetCore.DataProtection.IDataProtectionProvider! dataProtectionProvider) -> void
Microsoft.AspNetCore.Components.ProtectedBrowserStorage.ProtectedSessionStorage
Microsoft.AspNetCore.Components.ProtectedBrowserStorage.ProtectedSessionStorage.ProtectedSessionStorage(Microsoft.JSInterop.IJSRuntime! jsRuntime, Microsoft.AspNetCore.DataProtection.IDataProtectionProvider! dataProtectionProvider) -> void
Microsoft.Extensions.DependencyInjection.ProtectedBrowserStorageServiceCollectionExtensions
static Microsoft.Extensions.DependencyInjection.ProtectedBrowserStorageServiceCollectionExtensions.AddProtectedBrowserStorage(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void

View File

@ -1,18 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.AspNetCore.Components" />
<Reference Include="Microsoft.AspNetCore.Components.ProtectedBrowserStorage" />
<Reference Include="Microsoft.AspNetCore.WebUtilities" />
<Reference Include="Microsoft.Extensions.DependencyInjection" />
</ItemGroup>
<ItemGroup>
<Compile Include="$(ComponentsSharedSourceRoot)test\**\*.cs" LinkBase="Helpers" />
</ItemGroup>
</Project>

View File

@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
@ -29,7 +28,7 @@ namespace Microsoft.AspNetCore.Components.Server.Circuits
public string Secret { get; }
public bool Equals([AllowNull] CircuitId other)
public bool Equals(CircuitId other)
{
// We want to use a fixed time equality comparison for a *real* comparisons.
// The only use case for Secret being null is with a default struct value,

View File

@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Components.Routing;
using Microsoft.AspNetCore.Components.Server;
using Microsoft.AspNetCore.Components.Server.BlazorPack;
using Microsoft.AspNetCore.Components.Server.Circuits;
using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage;
using Microsoft.AspNetCore.SignalR.Protocol;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
@ -33,6 +34,9 @@ namespace Microsoft.Extensions.DependencyInjection
services.AddDataProtection();
services.TryAddScoped<ProtectedLocalStorage>();
services.TryAddScoped<ProtectedSessionStorage>();
// This call INTENTIONALLY uses the AddHubOptions on the SignalR builder, because it will merge
// the global HubOptions before running the configure callback. We want to ensure that happens
// once. Our AddHubOptions method doesn't do this.

View File

@ -4,19 +4,17 @@
using System;
using System.Collections.Concurrent;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.JSInterop;
namespace Microsoft.AspNetCore.Components.ProtectedBrowserStorage
namespace Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
{
/// <summary>
/// Provides mechanisms for storing and retrieving data in the browser storage.
/// </summary>
[UnsupportedOSPlatform("browser")]
public abstract class ProtectedBrowserStorage
{
private readonly string _storeName;
@ -31,7 +29,7 @@ namespace Microsoft.AspNetCore.Components.ProtectedBrowserStorage
/// <param name="storeName">The name of the store in which the data should be stored.</param>
/// <param name="jsRuntime">The <see cref="IJSRuntime"/>.</param>
/// <param name="dataProtectionProvider">The <see cref="IDataProtectionProvider"/>.</param>
protected ProtectedBrowserStorage(string storeName, IJSRuntime jsRuntime, IDataProtectionProvider dataProtectionProvider)
private protected ProtectedBrowserStorage(string storeName, IJSRuntime jsRuntime, IDataProtectionProvider dataProtectionProvider)
{
// Performing data protection on the client would give users a false sense of security, so we'll prevent this.
if (RuntimeInformation.IsOSPlatform(OSPlatform.Create("BROWSER")))
@ -155,8 +153,8 @@ namespace Microsoft.AspNetCore.Components.ProtectedBrowserStorage
private ValueTask SetProtectedJsonAsync(string key, string protectedJson)
=> _jsRuntime.InvokeVoidAsync($"{_storeName}.setItem", key, protectedJson);
private ValueTask<string> GetProtectedJsonAsync(string key)
=> _jsRuntime.InvokeAsync<string>($"{_storeName}.getItem", key);
private ValueTask<string?> GetProtectedJsonAsync(string key)
=> _jsRuntime.InvokeAsync<string?>($"{_storeName}.getItem", key);
// IDataProtect isn't disposable, so we're fine holding these indefinitely.
// Only a bounded number of them will be created, as the 'key' values should

View File

@ -1,14 +1,12 @@
// 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.Diagnostics.CodeAnalysis;
namespace Microsoft.AspNetCore.Components.ProtectedBrowserStorage
namespace Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
{
/// <summary>
/// Contains the result of a protected browser storage operation.
/// </summary>
public readonly struct ProtectedBrowserStorageResult<T>
public readonly struct ProtectedBrowserStorageResult<TValue>
{
/// <summary>
/// Gets whether the operation succeeded.
@ -18,11 +16,9 @@ namespace Microsoft.AspNetCore.Components.ProtectedBrowserStorage
/// <summary>
/// Gets the result value of the operation.
/// </summary>
[MaybeNull]
[AllowNull]
public T Value { get; }
public TValue? Value { get; }
internal ProtectedBrowserStorageResult(bool success, [AllowNull] T value)
internal ProtectedBrowserStorageResult(bool success, TValue? value)
{
Success = success;
Value = value;

View File

@ -1,11 +1,10 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Runtime.Versioning;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.JSInterop;
namespace Microsoft.AspNetCore.Components.ProtectedBrowserStorage
namespace Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
{
/// <summary>
/// Provides mechanisms for storing and retrieving data in the browser's
@ -16,8 +15,7 @@ namespace Microsoft.AspNetCore.Components.ProtectedBrowserStorage
///
/// See: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
/// </summary>
[UnsupportedOSPlatform("browser")]
public class ProtectedLocalStorage : ProtectedBrowserStorage
public sealed class ProtectedLocalStorage : ProtectedBrowserStorage
{
/// <summary>
/// Constructs an instance of <see cref="ProtectedLocalStorage"/>.

View File

@ -1,11 +1,10 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Runtime.Versioning;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.JSInterop;
namespace Microsoft.AspNetCore.Components.ProtectedBrowserStorage
namespace Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
{
/// <summary>
/// Provides mechanisms for storing and retrieving data in the browser's
@ -16,8 +15,7 @@ namespace Microsoft.AspNetCore.Components.ProtectedBrowserStorage
///
/// See: https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage
/// </summary>
[UnsupportedOSPlatform("browser")]
public class ProtectedSessionStorage : ProtectedBrowserStorage
public sealed class ProtectedSessionStorage : ProtectedBrowserStorage
{
/// <summary>
/// Constructs an instance of <see cref="ProtectedSessionStorage"/>.

View File

@ -0,0 +1 @@
#nullable enable

View File

@ -0,0 +1,44 @@
Microsoft.AspNetCore.Builder.ComponentEndpointConventionBuilder
Microsoft.AspNetCore.Builder.ComponentEndpointConventionBuilder.Add(System.Action<Microsoft.AspNetCore.Builder.EndpointBuilder!>! convention) -> void
Microsoft.AspNetCore.Builder.ComponentEndpointRouteBuilderExtensions
Microsoft.AspNetCore.Components.Server.CircuitOptions
Microsoft.AspNetCore.Components.Server.CircuitOptions.CircuitOptions() -> void
Microsoft.AspNetCore.Components.Server.CircuitOptions.DetailedErrors.get -> bool
Microsoft.AspNetCore.Components.Server.CircuitOptions.DetailedErrors.set -> void
Microsoft.AspNetCore.Components.Server.CircuitOptions.DisconnectedCircuitMaxRetained.get -> int
Microsoft.AspNetCore.Components.Server.CircuitOptions.DisconnectedCircuitMaxRetained.set -> void
Microsoft.AspNetCore.Components.Server.CircuitOptions.DisconnectedCircuitRetentionPeriod.get -> System.TimeSpan
Microsoft.AspNetCore.Components.Server.CircuitOptions.DisconnectedCircuitRetentionPeriod.set -> void
Microsoft.AspNetCore.Components.Server.CircuitOptions.JSInteropDefaultCallTimeout.get -> System.TimeSpan
Microsoft.AspNetCore.Components.Server.CircuitOptions.JSInteropDefaultCallTimeout.set -> void
Microsoft.AspNetCore.Components.Server.CircuitOptions.MaxBufferedUnacknowledgedRenderBatches.get -> int
Microsoft.AspNetCore.Components.Server.CircuitOptions.MaxBufferedUnacknowledgedRenderBatches.set -> void
Microsoft.AspNetCore.Components.Server.Circuits.Circuit
Microsoft.AspNetCore.Components.Server.Circuits.Circuit.Id.get -> string!
Microsoft.AspNetCore.Components.Server.Circuits.CircuitHandler
Microsoft.AspNetCore.Components.Server.Circuits.CircuitHandler.CircuitHandler() -> void
Microsoft.AspNetCore.Components.Server.RevalidatingServerAuthenticationStateProvider
Microsoft.AspNetCore.Components.Server.RevalidatingServerAuthenticationStateProvider.RevalidatingServerAuthenticationStateProvider(Microsoft.Extensions.Logging.ILoggerFactory! loggerFactory) -> void
Microsoft.AspNetCore.Components.Server.ServerAuthenticationStateProvider
Microsoft.AspNetCore.Components.Server.ServerAuthenticationStateProvider.ServerAuthenticationStateProvider() -> void
Microsoft.AspNetCore.Components.Server.ServerAuthenticationStateProvider.SetAuthenticationState(System.Threading.Tasks.Task<Microsoft.AspNetCore.Components.Authorization.AuthenticationState!>! authenticationStateTask) -> void
Microsoft.Extensions.DependencyInjection.ComponentServiceCollectionExtensions
Microsoft.Extensions.DependencyInjection.IServerSideBlazorBuilder
Microsoft.Extensions.DependencyInjection.IServerSideBlazorBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection!
Microsoft.Extensions.DependencyInjection.ServerSideBlazorBuilderExtensions
abstract Microsoft.AspNetCore.Components.Server.RevalidatingServerAuthenticationStateProvider.RevalidationInterval.get -> System.TimeSpan
abstract Microsoft.AspNetCore.Components.Server.RevalidatingServerAuthenticationStateProvider.ValidateAuthenticationStateAsync(Microsoft.AspNetCore.Components.Authorization.AuthenticationState! authenticationState, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<bool>!
override Microsoft.AspNetCore.Components.Server.ServerAuthenticationStateProvider.GetAuthenticationStateAsync() -> System.Threading.Tasks.Task<Microsoft.AspNetCore.Components.Authorization.AuthenticationState!>!
static Microsoft.AspNetCore.Builder.ComponentEndpointRouteBuilderExtensions.MapBlazorHub(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints) -> Microsoft.AspNetCore.Builder.ComponentEndpointConventionBuilder!
static Microsoft.AspNetCore.Builder.ComponentEndpointRouteBuilderExtensions.MapBlazorHub(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, System.Action<Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions!>! configureOptions) -> Microsoft.AspNetCore.Builder.ComponentEndpointConventionBuilder!
static Microsoft.AspNetCore.Builder.ComponentEndpointRouteBuilderExtensions.MapBlazorHub(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, string! path) -> Microsoft.AspNetCore.Builder.ComponentEndpointConventionBuilder!
static Microsoft.AspNetCore.Builder.ComponentEndpointRouteBuilderExtensions.MapBlazorHub(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, string! path, System.Action<Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions!>! configureOptions) -> Microsoft.AspNetCore.Builder.ComponentEndpointConventionBuilder!
static Microsoft.Extensions.DependencyInjection.ComponentServiceCollectionExtensions.AddServerSideBlazor(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action<Microsoft.AspNetCore.Components.Server.CircuitOptions!>? configure = null) -> Microsoft.Extensions.DependencyInjection.IServerSideBlazorBuilder!
static Microsoft.Extensions.DependencyInjection.ServerSideBlazorBuilderExtensions.AddCircuitOptions(this Microsoft.Extensions.DependencyInjection.IServerSideBlazorBuilder! builder, System.Action<Microsoft.AspNetCore.Components.Server.CircuitOptions!>! configure) -> Microsoft.Extensions.DependencyInjection.IServerSideBlazorBuilder!
static Microsoft.Extensions.DependencyInjection.ServerSideBlazorBuilderExtensions.AddHubOptions(this Microsoft.Extensions.DependencyInjection.IServerSideBlazorBuilder! builder, System.Action<Microsoft.AspNetCore.SignalR.HubOptions!>! configure) -> Microsoft.Extensions.DependencyInjection.IServerSideBlazorBuilder!
virtual Microsoft.AspNetCore.Components.Server.Circuits.CircuitHandler.OnCircuitClosedAsync(Microsoft.AspNetCore.Components.Server.Circuits.Circuit! circuit, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
virtual Microsoft.AspNetCore.Components.Server.Circuits.CircuitHandler.OnCircuitOpenedAsync(Microsoft.AspNetCore.Components.Server.Circuits.Circuit! circuit, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
virtual Microsoft.AspNetCore.Components.Server.Circuits.CircuitHandler.OnConnectionDownAsync(Microsoft.AspNetCore.Components.Server.Circuits.Circuit! circuit, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
virtual Microsoft.AspNetCore.Components.Server.Circuits.CircuitHandler.OnConnectionUpAsync(Microsoft.AspNetCore.Components.Server.Circuits.Circuit! circuit, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
virtual Microsoft.AspNetCore.Components.Server.Circuits.CircuitHandler.Order.get -> int
virtual Microsoft.AspNetCore.Components.Server.RevalidatingServerAuthenticationStateProvider.Dispose(bool disposing) -> void

View File

@ -14,7 +14,7 @@ using Microsoft.AspNetCore.WebUtilities;
using Microsoft.JSInterop;
using Xunit;
namespace Microsoft.AspNetCore.Components.ProtectedBrowserStorage
namespace Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
{
public class ProtectedBrowserStorageTest
{

View File

@ -1,28 +0,0 @@
// 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 Microsoft.JSInterop;
namespace Microsoft.AspNetCore.Components.Web.Extensions.Head
{
internal static class HeadManagementJSRuntimeExtensions
{
private const string JsFunctionsPrefix = "_blazorHeadManager";
public static ValueTask SetTitleAsync(this IJSRuntime jsRuntime, string title)
{
return jsRuntime.InvokeVoidAsync($"{JsFunctionsPrefix}.setTitle", title);
}
public static ValueTask AddOrUpdateHeadTagAsync(this IJSRuntime jsRuntime, TagElement tag, string id)
{
return jsRuntime.InvokeVoidAsync($"{JsFunctionsPrefix}.addOrUpdateHeadTag", tag, id);
}
public static ValueTask RemoveHeadTagAsync(this IJSRuntime jsRuntime, string id)
{
return jsRuntime.InvokeVoidAsync($"{JsFunctionsPrefix}.removeHeadTag", id);
}
}
}

View File

@ -1,67 +0,0 @@
// 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.Json;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Components.Rendering;
using Microsoft.JSInterop;
namespace Microsoft.AspNetCore.Components.Web.Extensions.Head
{
/// <summary>
/// Serves as a base for components that represent tags in the HTML head.
/// </summary>
public abstract class HeadTagBase : ComponentBase, IDisposable
{
private readonly string _id = Guid.NewGuid().ToString("N");
private TagElement _tagElement;
private bool _hasRendered;
[Inject]
private IJSRuntime JSRuntime { get; set; } = default!;
/// <summary>
/// Gets or sets a collection of additional attributes that will be applied to the meta element.
/// </summary>
[Parameter(CaptureUnmatchedValues = true)]
public IReadOnlyDictionary<string, object>? Attributes { get; set; }
/// <summary>
/// Gets the name of the tag being represented.
/// </summary>
protected abstract string TagName { get; }
/// <inheritdoc />
protected override void OnParametersSet()
{
_tagElement = new TagElement(TagName, Attributes);
}
/// <inheritdoc />
protected override async Task OnAfterRenderAsync(bool firstRender)
{
_hasRendered = true;
await JSRuntime.AddOrUpdateHeadTagAsync(_tagElement, _id);
}
/// <inheritdoc />
protected override void BuildRenderTree(RenderTreeBuilder builder)
{
builder.AddMarkupContent(0, $"<!--Head:{JsonSerializer.Serialize(_tagElement, JsonSerializerOptionsProvider.Options)}-->");
}
/// <inheritdoc />
public void Dispose()
{
if (_hasRendered)
{
_ = JSRuntime.RemoveHeadTagAsync(_id);
}
}
}
}

View File

@ -1,14 +0,0 @@
// 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.
namespace Microsoft.AspNetCore.Components.Web.Extensions.Head
{
/// <summary>
/// A component that adds a link tag to the HTML head.
/// </summary>
public sealed class Link : HeadTagBase
{
/// <inheritdoc />
protected override string TagName => "link";
}
}

View File

@ -1,14 +0,0 @@
// 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.
namespace Microsoft.AspNetCore.Components.Web.Extensions.Head
{
/// <summary>
/// A component that adds a meta tag to the HTML head.
/// </summary>
public sealed class Meta : HeadTagBase
{
/// <inheritdoc />
protected override string TagName => "meta";
}
}

View File

@ -1,22 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
namespace Microsoft.AspNetCore.Components.Web.Extensions.Head
{
internal readonly struct TagElement
{
public string Type => "tag";
public string TagName { get; }
public IReadOnlyDictionary<string, object>? Attributes { get; }
public TagElement(string tagName, IReadOnlyDictionary<string, object>? attributes)
{
TagName = tagName;
Attributes = attributes;
}
}
}

View File

@ -1,37 +0,0 @@
// 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.Text.Json;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Components.Rendering;
using Microsoft.JSInterop;
namespace Microsoft.AspNetCore.Components.Web.Extensions.Head
{
/// <summary>
/// A component that changes the title of the document.
/// </summary>
public sealed class Title : ComponentBase
{
[Inject]
private IJSRuntime JSRuntime { get; set; } = default!;
/// <summary>
/// Gets or sets the value to use as the document's title.
/// </summary>
[Parameter]
public string Value { get; set; } = string.Empty;
/// <inheritdoc />
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await JSRuntime.SetTitleAsync(Value);
}
/// <inheritdoc />
protected override void BuildRenderTree(RenderTreeBuilder builder)
{
builder.AddMarkupContent(0, $"<!--Head:{JsonSerializer.Serialize(new TitleElement(Value), JsonSerializerOptionsProvider.Options)}-->");
}
}
}

View File

@ -1,17 +0,0 @@
// 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.
namespace Microsoft.AspNetCore.Components.Web.Extensions.Head
{
internal readonly struct TitleElement
{
public string Type => "title";
public string Title { get; }
public TitleElement(string title)
{
Title = title;
}
}
}

View File

@ -1,21 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
<Description>A collection of Blazor components for the web.</Description>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<RootNamespace>Microsoft.AspNetCore.Components</RootNamespace>
<Nullable>enable</Nullable>
<IsShipping>false</IsShipping>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.AspNetCore.Components" />
<Reference Include="Microsoft.JSInterop" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\Shared\src\JsonSerializerOptionsProvider.cs" />
</ItemGroup>
</Project>

View File

@ -1,3 +0,0 @@
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("Microsoft.AspNetCore.Components.Web.Extensions.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")]

View File

@ -1,102 +0,0 @@
(function () {
// Local helpers
const blazorIdAttributeName = '_blazor_id';
const headCommentRegularExpression = /\W*Head:[^{]*(.*)$/;
const prerenderedTags = [];
function createHeadTag({ tagName, attributes }, id) {
const tagElement = document.createElement(tagName);
// The id is undefined during prerendering
if (id) {
tagElement.setAttribute(blazorIdAttributeName, id);
}
if (attributes) {
Object.keys(attributes).forEach(key => {
tagElement.setAttribute(key, attributes[key]);
});
}
document.head.appendChild(tagElement);
return tagElement;
}
function resolvePrerenderedHeadComponents(node) {
node.childNodes.forEach((childNode) => {
const headElement = parseHeadComment(childNode);
if (headElement) {
applyPrerenderedHeadComponent(headElement);
} else {
resolvePrerenderedHeadComponents(childNode);
}
});
}
function applyPrerenderedHeadComponent(headElement) {
switch (headElement.type) {
case 'title':
setTitle(headElement.title);
break;
case 'tag':
const tag = createHeadTag(headElement);
prerenderedTags.push(tag);
break;
default:
throw new Error(`Invalid head element type '${headElement.type}'.`);
}
}
function parseHeadComment(node) {
if (!node || node.nodeType != Node.COMMENT_NODE) {
return;
}
const commentText = node.textContent;
if (!commentText) {
return;
}
const definition = headCommentRegularExpression.exec(commentText);
const json = definition && definition[1];
return json && JSON.parse(json);
}
function removePrerenderedHeadTags() {
prerenderedTags.forEach((tag) => {
tag.remove();
});
prerenderedTags.length = 0;
}
// Exported functions
function setTitle(title) {
document.title = title;
}
function addOrUpdateHeadTag(tag, id) {
removePrerenderedHeadTags();
removeHeadTag(id);
createHeadTag(tag, id);
}
function removeHeadTag(id) {
let tag = document.head.querySelector(`[${blazorIdAttributeName}='${id}']`);
tag && tag.remove();
}
window._blazorHeadManager = {
setTitle,
addOrUpdateHeadTag,
removeHeadTag,
};
resolvePrerenderedHeadComponents(document);
})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -67,7 +67,8 @@ async function boot(userOptions?: Partial<CircuitStartOptions>): Promise<void> {
}
};
window.addEventListener('beforeunload', cleanup, { capture: false, once: true });
window['Blazor'].disconnect = cleanup;
window.addEventListener('unload', cleanup, { capture: false, once: true });
window['Blazor'].reconnect = reconnect;

View File

@ -130,7 +130,16 @@ function invokeJSFromDotNet(callInfo: Pointer, arg0: any, arg1: any, arg2: any):
}
} else {
const func = DotNet.jsCallDispatcher.findJSFunction(functionIdentifier, targetInstanceId);
return func.call(null, arg0, arg1, arg2);
const result = func.call(null, arg0, arg1, arg2);
switch (resultType) {
case DotNet.JSCallResultType.Default:
return result;
case DotNet.JSCallResultType.JSObjectReference:
return DotNet.createJSObjectReference(result).__jsObjectId;
default:
throw new Error(`Invalid JS call result type '${resultType}'.`);
}
}
}

View File

@ -14,7 +14,7 @@ interface BrowserFile {
lastModified: string;
name: string;
size: number;
type: string;
contentType: string;
readPromise: Promise<ArrayBuffer> | undefined;
arrayBuffer: ArrayBuffer | undefined;
}
@ -42,7 +42,7 @@ function init(callbackWrapper: any, elem: InputElement): void {
lastModified: new Date(file.lastModified).toISOString(),
name: file.name,
size: file.size,
type: file.type,
contentType: file.type,
readPromise: undefined,
arrayBuffer: undefined,
};
@ -86,7 +86,7 @@ async function toImageFile(elem: InputElement, fileId: number, format: string, m
lastModified: originalFile.lastModified,
name: originalFile.name,
size: resizedImageBlob?.size || 0,
type: format,
contentType: format,
readPromise: undefined,
arrayBuffer: undefined,
};

View File

@ -26,6 +26,7 @@ export interface BootJsonData {
readonly linkerEnabled: boolean;
readonly cacheBootResources: boolean;
readonly config: string[];
readonly icuDataMode: ICUDataMode;
}
export interface ResourceGroups {
@ -37,3 +38,9 @@ export interface ResourceGroups {
}
export type ResourceList = { [name: string]: string };
export enum ICUDataMode {
Sharded,
All,
Invariant
}

View File

@ -4,10 +4,10 @@ import { showErrorNotification } from '../../BootErrors';
import { WebAssemblyResourceLoader, LoadingResource } from '../WebAssemblyResourceLoader';
import { Platform, System_Array, Pointer, System_Object, System_String, HeapLock } from '../Platform';
import { WebAssemblyBootResourceType } from '../WebAssemblyStartOptions';
import { BootJsonData, ICUDataMode } from '../BootConfig';
let mono_wasm_add_assembly: (name: string, heapAddress: number, length: number) => void;
const appBinDirName = 'appBinDir';
const icuDataResourceName = 'icudt.dat';
const uint64HighOrderShift = Math.pow(2, 32);
const maxSafeNumberHighPart = Math.pow(2, 21) - 1; // The high-order int32 from Number.MAX_SAFE_INTEGER
@ -138,13 +138,13 @@ export const monoPlatform: Platform = {
return ((baseAddress as any as number) + (fieldOffset || 0)) as any as T;
},
beginHeapLock: function() {
beginHeapLock: function () {
assertHeapIsNotLocked();
currentHeapLock = new MonoHeapLock();
return currentHeapLock;
},
invokeWhenHeapUnlocked: function(callback) {
invokeWhenHeapUnlocked: function (callback) {
// This is somewhat like a sync context. If we're not locked, just pass through the call directly.
if (!currentHeapLock) {
callback();
@ -183,7 +183,7 @@ function addScriptTagsToDocument(resourceLoader: WebAssemblyResourceLoader) {
const resourceType: WebAssemblyBootResourceType = 'dotnetjs';
const customSrc = resourceLoader.startOptions.loadBootResource(
resourceType, dotnetJsResourceName, scriptElem.src, dotnetJsContentHash);
if (typeof(customSrc) === 'string') {
if (typeof (customSrc) === 'string') {
scriptElem.src = customSrc;
} else if (customSrc) {
// Since we must load this via a <script> tag, it's only valid to supply a URI (and not a Request, say)
@ -213,7 +213,7 @@ function addGlobalModuleScriptTagsToDocument(callback: () => void) {
function createEmscriptenModuleInstance(resourceLoader: WebAssemblyResourceLoader, onReady: () => void, onError: (reason?: any) => void) {
const resources = resourceLoader.bootConfig.resources;
const module = (window['Module'] || { }) as typeof Module;
const module = (window['Module'] || {}) as typeof Module;
const suppressMessages = ['DEBUGGING ENABLED'];
module.print = line => (suppressMessages.indexOf(line) < 0 && console.log(line));
@ -250,7 +250,9 @@ function createEmscriptenModuleInstance(resourceLoader: WebAssemblyResourceLoade
}
let icuDataResource: LoadingResource | undefined;
if (resourceLoader.bootConfig.resources.runtime.hasOwnProperty(icuDataResourceName)) {
if (resourceLoader.bootConfig.icuDataMode != ICUDataMode.Invariant) {
const applicationCulture = resourceLoader.startOptions.applicationCulture || (navigator.languages && navigator.languages[0]);
const icuDataResourceName = getICUResourceName(resourceLoader.bootConfig, applicationCulture);
icuDataResource = resourceLoader.loadResource(
icuDataResourceName,
`_framework/${icuDataResourceName}`,
@ -287,7 +289,7 @@ function createEmscriptenModuleInstance(resourceLoader: WebAssemblyResourceLoade
loadICUData(icuDataResource);
} else {
// Use invariant culture if the app does not carry icu data.
MONO.mono_wasm_setenv("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT", "1");
MONO.mono_wasm_setenv('DOTNET_SYSTEM_GLOBALIZATION_INVARIANT', '1');
}
// Fetch the assemblies and PDBs in the background, telling Mono to wait until they are loaded
@ -302,16 +304,17 @@ function createEmscriptenModuleInstance(resourceLoader: WebAssemblyResourceLoade
// Wire-up callbacks for satellite assemblies. Blazor will call these as part of the application
// startup sequence to load satellite assemblies for the application's culture.
window['Blazor']._internal.getSatelliteAssemblies = (culturesToLoadDotNetArray: System_Array<System_String>) : System_Object => {
window['Blazor']._internal.getSatelliteAssemblies = (culturesToLoadDotNetArray: System_Array<System_String>): System_Object => {
const culturesToLoad = BINDING.mono_array_to_js_array<System_String, string>(culturesToLoadDotNetArray);
const satelliteResources = resourceLoader.bootConfig.resources.satelliteResources;
const applicationCulture = resourceLoader.startOptions.applicationCulture || (navigator.languages && navigator.languages[0]);
if (satelliteResources) {
const resourcePromises = Promise.all(culturesToLoad
.filter(culture => satelliteResources.hasOwnProperty(culture))
.map(culture => resourceLoader.loadResources(satelliteResources[culture], fileName => `_framework/${fileName}`, 'assembly'))
.reduce((previous, next) => previous.concat(next), new Array<LoadingResource>())
.map(async resource => (await resource.response).arrayBuffer()));
.filter(culture => satelliteResources.hasOwnProperty(culture))
.map(culture => resourceLoader.loadResources(satelliteResources[culture], fileName => `_framework/${fileName}`, 'assembly'))
.reduce((previous, next) => previous.concat(next), new Array<LoadingResource>())
.map(async resource => (await resource.response).arrayBuffer()));
return BINDING.js_to_mono_obj(
resourcePromises.then(resourcesToLoad => {
@ -322,16 +325,16 @@ function createEmscriptenModuleInstance(resourceLoader: WebAssemblyResourceLoade
BINDING.mono_obj_array_set(array, i, BINDING.js_typed_array_to_array(new Uint8Array(resourcesToLoad[i])));
}
return array;
};
}
};
}
return resourcesToLoad.length;
}));
return resourcesToLoad.length;
}));
}
return BINDING.js_to_mono_obj(Promise.resolve(0));
}
window['Blazor']._internal.getLazyAssemblies = (assembliesToLoadDotNetArray: System_Array<System_String>) : System_Object => {
window['Blazor']._internal.getLazyAssemblies = (assembliesToLoadDotNetArray: System_Array<System_String>): System_Object => {
const assembliesToLoad = BINDING.mono_array_to_js_array<System_String, string>(assembliesToLoadDotNetArray);
const lazyAssemblies = resourceLoader.bootConfig.resources.lazyAssembly;
@ -346,25 +349,48 @@ function createEmscriptenModuleInstance(resourceLoader: WebAssemblyResourceLoade
throw new Error(`${notMarked.join()} must be marked with 'BlazorWebAssemblyLazyLoad' item group in your project file to allow lazy-loading.`);
}
const resourcePromises = Promise.all(assembliesMarkedAsLazy
.map(assembly => resourceLoader.loadResource(assembly, `_framework/${assembly}`, lazyAssemblies[assembly], 'assembly'))
.map(async resource => (await resource.response).arrayBuffer()));
let pdbPromises: Promise<(ArrayBuffer | null)[]> | undefined;
if (hasDebuggingEnabled()) {
const pdbs = resourceLoader.bootConfig.resources.pdb;
const pdbsToLoad = assembliesMarkedAsLazy.map(a => changeExtension(a, '.pdb'))
if (pdbs) {
pdbPromises = Promise.all(pdbsToLoad
.map(pdb => lazyAssemblies.hasOwnProperty(pdb) ? resourceLoader.loadResource(pdb, `_framework/${pdb}`, lazyAssemblies[pdb], 'pdb') : null)
.map(async resource => resource ? (await resource.response).arrayBuffer() : null));
}
}
return BINDING.js_to_mono_obj(
resourcePromises.then(resourcesToLoad => {
if (resourcesToLoad.length) {
window['Blazor']._internal.readLazyAssemblies = () => {
const array = BINDING.mono_obj_array_new(resourcesToLoad.length);
for (var i = 0; i < resourcesToLoad.length; i++) {
BINDING.mono_obj_array_set(array, i, BINDING.js_typed_array_to_array(new Uint8Array(resourcesToLoad[i])));
}
return array;
const resourcePromises = Promise.all(assembliesMarkedAsLazy
.map(assembly => resourceLoader.loadResource(assembly, `_framework/${assembly}`, lazyAssemblies[assembly], 'assembly'))
.map(async resource => (await resource.response).arrayBuffer()));
return BINDING.js_to_mono_obj(
Promise.all([resourcePromises, pdbPromises]).then(values => {
const resourcesToLoad = values[0];
const pdbsToLoad = values[1];
if (resourcesToLoad.length) {
window['Blazor']._internal.readLazyAssemblies = () => {
const assemblyBytes = BINDING.mono_obj_array_new(resourcesToLoad.length);
for (let i = 0; i < resourcesToLoad.length; i++) {
const assembly = resourcesToLoad[i] as ArrayBuffer;
BINDING.mono_obj_array_set(assemblyBytes, i, BINDING.js_typed_array_to_array(new Uint8Array(assembly)));
}
return assemblyBytes;
};
window['Blazor']._internal.readLazyPdbs = () => {
const pdbBytes = BINDING.mono_obj_array_new(resourcesToLoad.length);
for (let i = 0; i < resourcesToLoad.length; i++) {
const pdb = pdbsToLoad && pdbsToLoad[i] ? new Uint8Array(pdbsToLoad[i] as ArrayBufferLike) : new Uint8Array();
BINDING.mono_obj_array_set(pdbBytes, i, BINDING.js_typed_array_to_array(pdb));
}
return pdbBytes;
};
}
return resourcesToLoad.length;
}));
}
}
});
module.postRun.push(() => {
@ -373,6 +399,14 @@ function createEmscriptenModuleInstance(resourceLoader: WebAssemblyResourceLoade
}
resourceLoader.purgeUnusedCacheEntriesAsync(); // Don't await - it's fine to run in background
if (resourceLoader.bootConfig.icuDataMode === ICUDataMode.Sharded) {
MONO.mono_wasm_setenv('__BLAZOR_SHARDED_ICU', '1');
if (resourceLoader.startOptions.applicationCulture) {
// If a culture is specified via start options use that to initialize the Emscripten \ .NET culture.
MONO.mono_wasm_setenv('LANG', `${resourceLoader.startOptions.applicationCulture}.UTF-8`);
}
}
MONO.mono_wasm_setenv("MONO_URI_DOTNETRELATIVEORABSOLUTE", "true");
let timeZone = "UTC";
try {
@ -385,7 +419,7 @@ function createEmscriptenModuleInstance(resourceLoader: WebAssemblyResourceLoade
const load_runtime = cwrap('mono_wasm_load_runtime', null, ['string', 'number']);
// -1 enables debugging with logging disabled. 0 disables debugging entirely.
load_runtime(appBinDirName, hasDebuggingEnabled() ? -1 : 0);
MONO.mono_wasm_runtime_ready ();
MONO.mono_wasm_runtime_ready();
attachInteropInvoker();
onReady();
});
@ -408,8 +442,8 @@ function createEmscriptenModuleInstance(resourceLoader: WebAssemblyResourceLoade
mono_wasm_add_assembly(loadAsName, heapAddress, data.length);
MONO.loaded_files.push(toAbsoluteUrl(dependency.url));
} catch (errorInfo) {
onError(errorInfo);
return;
onError(errorInfo);
return;
}
removeRunDependency(runDependencyId);
@ -433,7 +467,7 @@ function bindStaticMethod(assembly: string, typeName: string, method: string) {
}
function attachInteropInvoker(): void {
const dotNetDispatcherInvokeMethodHandle = bindStaticMethod('Microsoft.AspNetCore.Components.WebAssembly', 'Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime', 'InvokeDotNet');
const dotNetDispatcherInvokeMethodHandle = bindStaticMethod('Microsoft.AspNetCore.Components.WebAssembly', 'Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime', 'InvokeDotNet');
const dotNetDispatcherBeginInvokeMethodHandle = bindStaticMethod('Microsoft.AspNetCore.Components.WebAssembly', 'Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime', 'BeginInvokeDotNet');
const dotNetDispatcherEndInvokeJSMethodHandle = bindStaticMethod('Microsoft.AspNetCore.Components.WebAssembly', 'Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime', 'EndInvokeJS');
@ -449,12 +483,12 @@ function attachInteropInvoker(): void {
? dotNetObjectId.toString()
: assemblyName;
dotNetDispatcherBeginInvokeMethodHandle(
callId ? callId.toString() : null,
assemblyNameOrDotNetObjectId,
methodIdentifier,
argsJson,
);
dotNetDispatcherBeginInvokeMethodHandle(
callId ? callId.toString() : null,
assemblyNameOrDotNetObjectId,
methodIdentifier,
argsJson,
);
},
endInvokeJSFromDotNet: (asyncHandle, succeeded, serializedArgs): void => {
dotNetDispatcherEndInvokeJSMethodHandle(
@ -473,7 +507,7 @@ function attachInteropInvoker(): void {
});
}
async function loadTimezone(timeZoneResource: LoadingResource) : Promise<void> {
async function loadTimezone(timeZoneResource: LoadingResource): Promise<void> {
const runDependencyId = `blazor:timezonedata`;
addRunDependency(runDependencyId);
@ -488,7 +522,23 @@ async function loadTimezone(timeZoneResource: LoadingResource) : Promise<void> {
removeRunDependency(runDependencyId);
}
async function loadICUData(icuDataResource: LoadingResource) : Promise<void> {
function getICUResourceName(bootConfig: BootJsonData, culture: string | undefined): string {
const combinedICUResourceName = 'icudt.dat';
if (!culture || bootConfig.icuDataMode === ICUDataMode.All) {
return combinedICUResourceName;
}
const prefix = culture.split('-')[0];
if (['en', 'fr', 'it', 'de', 'es'].includes(prefix)) {
return 'icudt_EFIGS.dat';
} else if (['zh', 'ko', 'ja'].includes(prefix)) {
return 'icudt_CJK.dat';
} else {
return 'icudt_no_CJK.dat';
}
}
async function loadICUData(icuDataResource: LoadingResource): Promise<void> {
const runDependencyId = `blazor:icudata`;
addRunDependency(runDependencyId);
@ -496,8 +546,7 @@ async function loadICUData(icuDataResource: LoadingResource) : Promise<void> {
const array = new Uint8Array(await request.arrayBuffer());
const offset = MONO.mono_wasm_load_bytes_into_heap(array);
if (!MONO.mono_wasm_load_icu_data(offset))
{
if (!MONO.mono_wasm_load_icu_data(offset)) {
throw new Error("Error loading ICU asset.");
}
removeRunDependency(runDependencyId);

View File

@ -165,9 +165,9 @@ async function getCacheToUseIfEnabled(bootConfig: BootJsonData): Promise<Cache |
return null;
}
// cache integrity is compromised if the first request has been served over http
// cache integrity is compromised if the first request has been served over http (except localhost)
// in this case, we want to disable caching and integrity validation
if (document.location.protocol !== 'https:') {
if (window.isSecureContext === false) {
return null;
}

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