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

View File

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

View File

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

View File

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

View File

@ -1391,10 +1391,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ServerComparison.Functional
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Testing.Tests", "src\Testing\test\Microsoft.AspNetCore.Testing.Tests.csproj", "{1542DC58-1836-4191-A9C5-51D1716D2543}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Testing.Tests", "src\Testing\test\Microsoft.AspNetCore.Testing.Tests.csproj", "{1542DC58-1836-4191-A9C5-51D1716D2543}"
EndProject 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}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sdk", "Sdk", "{FED4267E-E5E4-49C5-98DB-8B3F203596EE}"
EndProject 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}" 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 EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.JSInterop.Tests", "src\JSInterop\Microsoft.JSInterop\test\Microsoft.JSInterop.Tests.csproj", "{DAAB6B35-CBD2-4573-B633-CDD42F583A0E}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.JSInterop.Tests", "src\JSInterop\Microsoft.JSInterop\test\Microsoft.JSInterop.Tests.csproj", "{DAAB6B35-CBD2-4573-B633-CDD42F583A0E}"
EndProject 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}" 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 EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Configuration.KeyPerFile", "Configuration.KeyPerFile", "{AEB1933E-9369-4305-B20E-F186F888158F}" 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 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}" 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 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 Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU 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|x64.Build.0 = Release|Any CPU
{1542DC58-1836-4191-A9C5-51D1716D2543}.Release|x86.ActiveCfg = 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 {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.ActiveCfg = Debug|Any CPU
{6B2734BF-C61D-4889-ABBF-456A4075D59B}.Debug|Any CPU.Build.0 = 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 {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|x64.Build.0 = Release|Any CPU
{DAAB6B35-CBD2-4573-B633-CDD42F583A0E}.Release|x86.ActiveCfg = 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 {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.ActiveCfg = Debug|Any CPU
{498A4F54-F11A-46C5-A58D-09DE56C6A034}.Debug|Any CPU.Build.0 = 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 {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|x64.Build.0 = Release|Any CPU
{B06ADD57-E855-4D8C-85DC-B323509AE540}.Release|x86.ActiveCfg = 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 {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 EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@ -7887,8 +8064,6 @@ Global
{3CBC4802-E9B8-48B7-BC8C-B0AFB9EEC643} = {0ACCEDA7-339C-4B4D-8DD4-1AC271F31C04} {3CBC4802-E9B8-48B7-BC8C-B0AFB9EEC643} = {0ACCEDA7-339C-4B4D-8DD4-1AC271F31C04}
{48E64014-B249-4644-8AEB-CDEE8ABA0DC2} = {3CBC4802-E9B8-48B7-BC8C-B0AFB9EEC643} {48E64014-B249-4644-8AEB-CDEE8ABA0DC2} = {3CBC4802-E9B8-48B7-BC8C-B0AFB9EEC643}
{1542DC58-1836-4191-A9C5-51D1716D2543} = {05A169C7-4F20-4516-B10A-B13C5649D346} {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} {FED4267E-E5E4-49C5-98DB-8B3F203596EE} = {562D5067-8CD8-4F19-BCBB-873204932C61}
{6B2734BF-C61D-4889-ABBF-456A4075D59B} = {FED4267E-E5E4-49C5-98DB-8B3F203596EE} {6B2734BF-C61D-4889-ABBF-456A4075D59B} = {FED4267E-E5E4-49C5-98DB-8B3F203596EE}
{83371889-9A3E-4D16-AE77-EB4F83BC6374} = {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} {55CACC1F-FE96-47C8-8073-91F4CAA55C75} = {2A91479A-4ABE-4BB7-9A5E-CA3B9CCFC69E}
{7509AA1E-3093-4BEE-984F-E11579E98A11} = {7CB09412-C9B0-47E8-A8C3-311AA4CFDE04} {7509AA1E-3093-4BEE-984F-E11579E98A11} = {7CB09412-C9B0-47E8-A8C3-311AA4CFDE04}
{DAAB6B35-CBD2-4573-B633-CDD42F583A0E} = {16898702-3E33-41C1-B8D8-4CE3F1D46BD9} {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} {498A4F54-F11A-46C5-A58D-09DE56C6A034} = {AEB1933E-9369-4305-B20E-F186F888158F}
{AEB1933E-9369-4305-B20E-F186F888158F} = {017429CC-C5FB-48B4-9C46-034E29EE2F06} {AEB1933E-9369-4305-B20E-F186F888158F} = {017429CC-C5FB-48B4-9C46-034E29EE2F06}
{B9D37BCF-80D1-489D-9FC6-55191FDBB033} = {AEB1933E-9369-4305-B20E-F186F888158F} {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} {37329855-01B8-4B03-9765-1A941B06E43C} = {8C15FD04-7F90-43FC-B488-023432FE3CE1}
{D3246226-BC1A-47F1-8E3E-C3380A8F13FB} = {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} {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 EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3E8720B3-DBDD-498C-B383-2CC32A054E8F} 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> <IsBenchmarkProject Condition="$(MSBuildProjectName.EndsWith('.Performance')) OR $(RepoRelativeProjectDir.Contains('perf')) OR $(RepoRelativeProjectDir.Contains('benchmarkapps'))">true</IsBenchmarkProject>
<IsSpecificationTestProject Condition="$(MSBuildProjectName.EndsWith('.Specification.Tests'))">true</IsSpecificationTestProject> <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> <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> <IsTestAssetProject Condition="$(RepoRelativeProjectDir.Contains('testassets'))">true</IsTestAssetProject>
<IsSampleProject Condition="$(RepoRelativeProjectDir.Contains('sample'))">true</IsSampleProject> <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\CSharp.Common.props" Condition="'$(MSBuildProjectExtension)' == '.csproj'" />
<Import Project="eng\targets\Wix.Common.props" Condition="'$(MSBuildProjectExtension)' == '.wixproj'" /> <Import Project="eng\targets\Wix.Common.props" Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
<Import Project="eng\targets\Npm.Common.props" Condition="'$(MSBuildProjectExtension)' == '.npmproj'" /> <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'" /> <Import Project="eng\targets\Helix.props" Condition="'$(IsTestProject)' == 'true'" />
</Project> </Project>

View File

@ -36,13 +36,15 @@
<SiteExtensionPackageVersion Condition=" '$(VersionSuffix)' != '' ">$(VersionPrefix)-$(VersionSuffix.Replace('.','-'))</SiteExtensionPackageVersion> <SiteExtensionPackageVersion Condition=" '$(VersionSuffix)' != '' ">$(VersionPrefix)-$(VersionSuffix.Replace('.','-'))</SiteExtensionPackageVersion>
<PackageVersion Condition=" '$(PackageVersion)' == '' ">$(Version)</PackageVersion> <PackageVersion Condition=" '$(PackageVersion)' == '' ">$(Version)</PackageVersion>
<PackageVersion Condition=" '$(NoSemVer20)' == 'true' ">$(SiteExtensionPackageVersion)</PackageVersion>
<SharedFxVersion>$(PackageVersion)</SharedFxVersion> <SharedFxVersion>$(PackageVersion)</SharedFxVersion>
<SharedFxVersion Condition=" '$(StabilizePackageVersion)' == 'true' ">$(VersionPrefix)</SharedFxVersion>
<SharedFxProductName>$(Product) $(SharedFxVersion) Shared Framework</SharedFxProductName>
<TargetingPackVersion>$(TargetingPackVersionPrefix)</TargetingPackVersion> <TargetingPackVersion>$(SharedFxVersion)</TargetingPackVersion>
<TargetingPackVersion Condition=" '$(VersionSuffix)' != '' ">$(TargetingPackVersionPrefix)-$(VersionSuffix)</TargetingPackVersion> <TargetingPackVersion Condition=" ! $(IsTargetingPackBuilding) ">$(TargetingPackVersionPrefix)</TargetingPackVersion>
<SharedFxProductName>$(Product) $(PackageVersion) Shared Framework</SharedFxProductName> <PackageVersion Condition=" '$(NoSemVer20)' == 'true' ">$(SiteExtensionPackageVersion)</PackageVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
@ -130,8 +132,14 @@
<None Include="$(PackageThirdPartyNoticesFile)" Pack="true" PackagePath="." /> <None Include="$(PackageThirdPartyNoticesFile)" Pack="true" PackagePath="." />
</ItemGroup> </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>
<PropertyGroup> <PropertyGroup>
@ -156,7 +164,7 @@
<KnownFrameworkReference Condition="'$(UseAspNetCoreSharedRuntime)' == 'true' AND '$(DoNotApplyWorkaroundsToMicrosoftAspNetCoreApp)' != 'true'" Update="Microsoft.AspNetCore.App"> <KnownFrameworkReference Condition="'$(UseAspNetCoreSharedRuntime)' == 'true' AND '$(DoNotApplyWorkaroundsToMicrosoftAspNetCoreApp)' != 'true'" Update="Microsoft.AspNetCore.App">
<LatestRuntimeFrameworkVersion>$(SharedFxVersion)</LatestRuntimeFrameworkVersion> <LatestRuntimeFrameworkVersion>$(SharedFxVersion)</LatestRuntimeFrameworkVersion>
<DefaultRuntimeFrameworkVersion Condition="'$(IsServicingBuild)' != 'true'">$(SharedFxVersion)</DefaultRuntimeFrameworkVersion> <DefaultRuntimeFrameworkVersion Condition="'$(IsServicingBuild)' != 'true'">$(SharedFxVersion)</DefaultRuntimeFrameworkVersion>
<TargetingPackVersion Condition="'$(IsServicingBuild)' != 'true'">$(SharedFxVersion)</TargetingPackVersion> <TargetingPackVersion Condition="'$(IsServicingBuild)' != 'true'">$(TargetingPackVersion)</TargetingPackVersion>
</KnownFrameworkReference> </KnownFrameworkReference>
<!-- Track compiler separately from Arcade.--> <!-- Track compiler separately from Arcade.-->
@ -186,6 +194,7 @@
<Import Project="eng\targets\FSharp.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.fsproj'" /> <Import Project="eng\targets\FSharp.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.fsproj'" />
<Import Project="eng\targets\Wix.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.wixproj'" /> <Import Project="eng\targets\Wix.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
<Import Project="eng\targets\Npm.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.npmproj'" /> <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\Helix.targets" Condition="'$(IsTestProject)' == 'true'" />
<Import Project="eng\targets\FunctionalTestAsset.targets" Condition="'$(IsTestAssetProject)' == 'true'" /> <Import Project="eng\targets\FunctionalTestAsset.targets" Condition="'$(IsTestAssetProject)' == 'true'" />
<Import Project="eng\targets\FunctionalTestWithAssets.targets" Condition="'$(ContainsFunctionalTestAssets)' == '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, 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 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. 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 # 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 # "-Projects ... -NoBuildJava -NoBuildManaged -NoBuildNodeJS". An empty `./build.ps1` command will build both
# managed and native projects. # managed and native projects.
$performDesktopBuild = ($BuildInstallers -or $BuildNative) -and ` $performDesktopBuild = ($BuildInstallers -and $Architecture -ne "arm") -or `
-not $Architecture.StartsWith("arm", [System.StringComparison]::OrdinalIgnoreCase) ($BuildNative -and -not $Architecture.StartsWith("arm", [System.StringComparison]::OrdinalIgnoreCase))
$performDotnetBuild = $BuildJava -or $BuildManaged -or $BuildNodeJS -or ` $performDotnetBuild = $BuildJava -or $BuildManaged -or $BuildNodeJS -or `
($All -and -not ($NoBuildJava -and $NoBuildManaged -and $NoBuildNodeJS)) -or ` ($All -and -not ($NoBuildJava -and $NoBuildManaged -and $NoBuildNodeJS)) -or `
($Projects -and -not ($BuildInstallers -or $specifiedBuildNative)) ($Projects -and -not ($BuildInstallers -or $specifiedBuildNative))
$foundJdk = $false $foundJdk = $false
$javac = Get-Command javac -ErrorAction Ignore -CommandType Application $javac = Get-Command javac -ErrorAction Ignore -CommandType Application
$localJdkPath = "$PSScriptRoot\.tools\jdk\win-x64\" $localJdkPath = "$PSScriptRoot\.tools\jdk\win-x64\"

View File

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

View File

@ -1,9 +1,7 @@
<Project> <Project>
<PropertyGroup Condition="'$(GenerateChecksums)' == 'true'"> <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) is not defined. Root Directory.Build.props is not imported. -->
<InstallersOutputPath>$(ArtifactsDir)\installers\</InstallersOutputPath> <InstallersOutputPath>$(ArtifactsDir)installers\</InstallersOutputPath>
<_SuppressSdkImports>false</_SuppressSdkImports> <_SuppressSdkImports>false</_SuppressSdkImports>
</PropertyGroup> </PropertyGroup>

View File

@ -25,7 +25,7 @@
$(RepoRoot)src\Installers\**\*.*proj; $(RepoRoot)src\Installers\**\*.*proj;
$(RepoRoot)src\SignalR\clients\ts\**\node_modules\**\*.*proj; $(RepoRoot)src\SignalR\clients\ts\**\node_modules\**\*.*proj;
$(RepoRoot)src\Components\Web.JS\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\**\*.csproj;
$(RepoRoot)src\ProjectTemplates\Web.ProjectTemplates\content\**\*.fsproj; $(RepoRoot)src\ProjectTemplates\Web.ProjectTemplates\content\**\*.fsproj;
$(RepoRoot)src\ProjectTemplates\Web.Spa.ProjectTemplates\content\**\*.csproj; $(RepoRoot)src\ProjectTemplates\Web.Spa.ProjectTemplates\content\**\*.csproj;
@ -50,7 +50,7 @@
</ItemGroup> </ItemGroup>
</When> </When>
<Otherwise> <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 --> <!-- 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=x64" />
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\AspNetCoreModule-Setup\CustomAction\aspnetcoreCA.vcxproj" AdditionalProperties="Platform=Win32" /> <ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\AspNetCoreModule-Setup\CustomAction\aspnetcoreCA.vcxproj" AdditionalProperties="Platform=Win32" />
@ -64,6 +64,10 @@
<!-- Build the targeting pack installers --> <!-- 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=x64" />
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\TargetingPack\TargetingPack.wixproj" AdditionalProperties="Platform=x86" /> <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 --> <!-- Build the SharedFramework installers -->
<ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\SharedFrameworkBundle\SharedFrameworkBundle.wixproj" AdditionalProperties="Platform=x64" /> <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" /> <ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\WindowsHostingBundle\WindowsHostingBundle.wixproj" AdditionalProperties="Platform=x86" />
</ItemGroup> </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'"> <ItemGroup Condition="'$(BuildInstallers)' == 'true' AND '$(TargetRuntimeIdentifier)' == 'linux-x64'">
<ProjectToBuild Condition=" '$(LinuxInstallerType)' == 'deb' " <ProjectToBuild Condition=" '$(LinuxInstallerType)' == 'deb' "
Include="$(RepoRoot)src\Installers\Debian\**\*.*proj" /> 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.Reflection.Metadata" />
<LatestPackageReference Include="System.Runtime.CompilerServices.Unsafe" /> <LatestPackageReference Include="System.Runtime.CompilerServices.Unsafe" />
<LatestPackageReference Include="System.Runtime.InteropServices.RuntimeInformation" /> <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.Cng" />
<LatestPackageReference Include="System.Security.Cryptography.Pkcs" /> <LatestPackageReference Include="System.Security.Cryptography.Pkcs" />
<LatestPackageReference Include="System.Security.Cryptography.Xml" /> <LatestPackageReference Include="System.Security.Cryptography.Xml" />
@ -167,11 +165,11 @@ and are generated based on the last package release.
<LatestPackageReference Include="MessagePack" /> <LatestPackageReference Include="MessagePack" />
<LatestPackageReference Include="MessagePackAnalyzer" /> <LatestPackageReference Include="MessagePackAnalyzer" />
<LatestPackageReference Include="Microsoft.Data.SqlClient" /> <LatestPackageReference Include="Microsoft.Data.SqlClient" />
<LatestPackageReference Include="Microsoft.Identity.Web.UI" />
<LatestPackageReference Include="Mono.Cecil" /> <LatestPackageReference Include="Mono.Cecil" />
<LatestPackageReference Include="Moq" /> <LatestPackageReference Include="Moq" />
<LatestPackageReference Include="Newtonsoft.Json.Bson" /> <LatestPackageReference Include="Newtonsoft.Json.Bson" />
<LatestPackageReference Include="NSwag.ApiDescription.Client" /> <LatestPackageReference Include="NSwag.ApiDescription.Client" />
<LatestPackageReference Include="NuGet.Versioning" />
<LatestPackageReference Include="Selenium.Support" /> <LatestPackageReference Include="Selenium.Support" />
<LatestPackageReference Include="Selenium.WebDriver" /> <LatestPackageReference Include="Selenium.WebDriver" />
<LatestPackageReference Include="Selenium.WebDriver.ChromeDriver" /> <LatestPackageReference Include="Selenium.WebDriver.ChromeDriver" />
@ -196,11 +194,6 @@ and are generated based on the last package release.
<!-- Get versions. --> <!-- Get versions. -->
<LatestPackageReference Update="@(LatestPackageReference)"> <LatestPackageReference Update="@(LatestPackageReference)">
<Version>$(%(VersionName)PackageVersion)</Version> <Version>$(%(VersionName)PackageVersion)</Version>
<RTMVersion>$(%(VersionName)V0PackageVersion)</RTMVersion>
<!-- Remove excess metadata. -->
<RTMVersion Condition=" '%(Version)' == '%(RTMVersion)' " />
<VersionName />
</LatestPackageReference> </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" 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="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="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.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.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.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" /> <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> <Project>
<PropertyGroup> <PropertyGroup>
<!-- The one use of ArtifactsDir in Publish.proj adds an additional slash, confusing itself. --> <PublishingVersion>3</PublishingVersion>
<ArtifactsDir Condition=" HasTrailingSlash('$(ArtifactsDir)') ">$(ArtifactsDir.Substring(0, $([MSBuild]::Subtract($(ArtifactsDir.Length), 1))))</ArtifactsDir> </PropertyGroup>
<PropertyGroup>
<PublishDependsOnTargets>$(PublishDependsOnTargets);_PublishInstallersAndChecksums</PublishDependsOnTargets> <PublishDependsOnTargets>$(PublishDependsOnTargets);_PublishInstallersAndChecksums</PublishDependsOnTargets>
<_UploadPathRoot>aspnetcore</_UploadPathRoot> <_UploadPathRoot>aspnetcore</_UploadPathRoot>
@ -11,23 +12,23 @@
<!-- $(InstallersOutputPath), $(SymbolsOutputPath), and $(ChecksumExtensions) are not defined. Root Directory.Build.props is not imported. --> <!-- $(InstallersOutputPath), $(SymbolsOutputPath), and $(ChecksumExtensions) are not defined. Root Directory.Build.props is not imported. -->
<ItemGroup> <ItemGroup>
<!-- Include our "loose" PDBs when publishing symbols. --> <!-- Include our "loose" PDBs when publishing symbols. -->
<FilesToPublishToSymbolServer Include="$(ArtifactsDir)\symbols\**\*.pdb" /> <FilesToPublishToSymbolServer Include="$(ArtifactsDir)symbols\**\*.pdb" />
<!-- Prepare for _PublishInstallersAndChecksums target. --> <!-- Prepare for _PublishInstallersAndChecksums target. -->
<_InstallersToPublish Remove="@(_InstallersToPublish)" /> <_InstallersToPublish Remove="@(_InstallersToPublish)" />
<_InstallersToPublish Include="$(ArtifactsDir)\packages\**\*.jar" UploadPathSegment="jar" /> <_InstallersToPublish Include="$(ArtifactsDir)packages\**\*.jar" UploadPathSegment="jar" />
<_InstallersToPublish Include="$(ArtifactsDir)\packages\**\*.pom" UploadPathSegment="jar" /> <_InstallersToPublish Include="$(ArtifactsDir)packages\**\*.pom" UploadPathSegment="jar" />
<_InstallersToPublish Include="$(ArtifactsDir)\packages\**\*.tgz" UploadPathSegment="npm" /> <_InstallersToPublish Include="$(ArtifactsDir)packages\**\*.tgz" UploadPathSegment="npm" />
<_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.deb" UploadPathSegment="Runtime" /> <_InstallersToPublish Include="$(ArtifactsDir)installers\**\*.deb" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.exe" UploadPathSegment="Runtime" /> <_InstallersToPublish Include="$(ArtifactsDir)installers\**\*.exe" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.msi" UploadPathSegment="Runtime" /> <_InstallersToPublish Include="$(ArtifactsDir)installers\**\*.msi" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.rpm" UploadPathSegment="Runtime" /> <_InstallersToPublish Include="$(ArtifactsDir)installers\**\*.rpm" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.tar.gz" UploadPathSegment="Runtime" /> <_InstallersToPublish Include="$(ArtifactsDir)installers\**\*.tar.gz" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.version" UploadPathSegment="Runtime" <_InstallersToPublish Include="$(ArtifactsDir)installers\**\*.version" UploadPathSegment="Runtime"
Condition=" '$(PublishInstallerBaseVersion)' == 'true' " /> Condition=" '$(PublishInstallerBaseVersion)' == 'true' " />
<_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.wixlib" UploadPathSegment="Runtime" /> <_InstallersToPublish Include="$(ArtifactsDir)installers\**\*.wixlib" UploadPathSegment="Runtime" />
<_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.zip" UploadPathSegment="Runtime" /> <_InstallersToPublish Include="$(ArtifactsDir)installers\**\*.zip" UploadPathSegment="Runtime" />
<_ChecksumsToPublish Include="$(ArtifactsDir)\**\*.sha512" /> <_ChecksumsToPublish Include="$(ArtifactsDir)**\*.sha512" />
</ItemGroup> </ItemGroup>
<Target Name="_PublishInstallersAndChecksums"> <Target Name="_PublishInstallersAndChecksums">
@ -63,6 +64,10 @@
<PublishFlatContainer>true</PublishFlatContainer> <PublishFlatContainer>true</PublishFlatContainer>
<RelativeBlobPath>$(_UploadPathRoot)/%(_InstallersToPublish.UploadPathSegment)/$(_PackageVersion)/%(Filename)%(Extension)</RelativeBlobPath> <RelativeBlobPath>$(_UploadPathRoot)/%(_InstallersToPublish.UploadPathSegment)/$(_PackageVersion)/%(Filename)%(Extension)</RelativeBlobPath>
</ItemsToPushToBlobFeed> </ItemsToPushToBlobFeed>
<!-- Set up ItemsToSign for the push task to pick up. -->
<ItemsToSign Remove="@(ItemsToSign)" />
<ItemsToSign Include="@(ItemsToSignPostBuild)" />
</ItemGroup> </ItemGroup>
</Target> </Target>
</Project> </Project>

View File

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

View File

@ -9,12 +9,43 @@
<FileExtensionSignInfo Remove="@(FileExtensionSignInfo)" /> <FileExtensionSignInfo Remove="@(FileExtensionSignInfo)" />
</ItemGroup> </ItemGroup>
<ItemGroup Label="Signing config"> <!-- Files that should be always be signed between in-build and post-build signing -->
<ItemsToSign Include="$(ArtifactsPackagesDir)**\*.nupkg" Exclude="$(ArtifactsPackagesDir)**\*symbols.nupkg" /> <ItemGroup Label="Common Files to Sign">
<ItemsToSign Include="$(VisualStudioSetupOutputPath)**\*.vsix" /> <CommonFilesToSign Include="$(ArtifactsPackagesDir)**\*.nupkg" />
<ItemsToSign Include="$(ArtifactsPackagesDir)**\*.jar" /> <CommonFilesToSign Include="$(VisualStudioSetupOutputPath)**\*.vsix" />
<ItemsToSign Include="$(ArtifactsDir)installers\$(Configuration)\**\*.zip" /> <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. Map file extensions to a code-sign cert.
"None" means don't sign the file itself, but still scan the contents for signable files. "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. 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. 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. 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-x64\shared\Microsoft.NETCore.App\**\*.dll" CertificateName="None" />
<_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-x86\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-arm\host\**\*.dll" CertificateName="None" />
<_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-arm64\host\**\*.dll" CertificateName="None" /> <_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-arm64\host\**\*.dll" CertificateName="None" />
<_DotNetFilesToExclude Include="$(RedistNetCorePath)dotnet.exe" 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'. We include the Microsoft.Build.Locator.dll assembly in our global tool 'Microsoft.dotnet-openapi'.

View File

@ -9,329 +9,320 @@
--> -->
<Dependencies> <Dependencies>
<ProductDependencies> <ProductDependencies>
<Dependency Name="Microsoft.AspNetCore.Components.WebAssembly.Runtime" Version="3.2.0"> <Dependency Name="dotnet-ef" Version="5.0.0-rc.2.20474.5">
<Uri>https://github.com/dotnet/blazor</Uri>
<Sha>cc449601d638ffaab58ae9487f0fd010bb178a12</Sha>
</Dependency>
<Dependency Name="dotnet-ef" Version="5.0.0-rc.1.20451.13">
<Uri>https://github.com/dotnet/efcore</Uri> <Uri>https://github.com/dotnet/efcore</Uri>
<Sha>422fcb2a51c7616b0e2bbeb28c10309ed1b3b365</Sha> <Sha>8fe5baf8178b5eee033abe0a4d1f73d23ff7d01e</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/efcore</Uri>
<Sha>422fcb2a51c7616b0e2bbeb28c10309ed1b3b365</Sha> <Sha>8fe5baf8178b5eee033abe0a4d1f73d23ff7d01e</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/efcore</Uri>
<Sha>422fcb2a51c7616b0e2bbeb28c10309ed1b3b365</Sha> <Sha>8fe5baf8178b5eee033abe0a4d1f73d23ff7d01e</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/efcore</Uri>
<Sha>422fcb2a51c7616b0e2bbeb28c10309ed1b3b365</Sha> <Sha>8fe5baf8178b5eee033abe0a4d1f73d23ff7d01e</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/efcore</Uri>
<Sha>422fcb2a51c7616b0e2bbeb28c10309ed1b3b365</Sha> <Sha>8fe5baf8178b5eee033abe0a4d1f73d23ff7d01e</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/efcore</Uri>
<Sha>422fcb2a51c7616b0e2bbeb28c10309ed1b3b365</Sha> <Sha>8fe5baf8178b5eee033abe0a4d1f73d23ff7d01e</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/efcore</Uri>
<Sha>422fcb2a51c7616b0e2bbeb28c10309ed1b3b365</Sha> <Sha>8fe5baf8178b5eee033abe0a4d1f73d23ff7d01e</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/efcore</Uri>
<Sha>422fcb2a51c7616b0e2bbeb28c10309ed1b3b365</Sha> <Sha>8fe5baf8178b5eee033abe0a4d1f73d23ff7d01e</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </Dependency>
<!-- System.Security.AccessControl should only be referenced in Dependencies.props and RTMVersions.csproj. --> <Dependency Name="System.Security.Cryptography.Cng" Version="5.0.0-rc.2.20474.8">
<Dependency Name="System.Security.AccessControl" Version="5.0.0-rc.1.20451.14">
<Uri>https://github.com/dotnet/runtime</Uri> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</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>
</Dependency> </Dependency>
<!-- <!--
Win-x64 is used here because we have picked an arbitrary runtime identifier to flow the version of the latest NETCore.App runtime. 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. 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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </Dependency>
</ProductDependencies> </ProductDependencies>
<ToolsetDependencies> <ToolsetDependencies>
<!-- Listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 --> <!-- 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> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>38017c3935de95d0335bac04f4901ddfc2718656</Sha> <Sha>e9ac240eaa36fa0b324ff4432e45d1fbc1e5b290</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/arcade</Uri>
<Sha>4be47e467013f8a07a1ed7b6e49e39c8150bde54</Sha> <Sha>b63ea25b8dc50bb3dfcef128d415254bd5ca4dc8</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/arcade</Uri>
<Sha>4be47e467013f8a07a1ed7b6e49e39c8150bde54</Sha> <Sha>b63ea25b8dc50bb3dfcef128d415254bd5ca4dc8</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/arcade</Uri>
<Sha>4be47e467013f8a07a1ed7b6e49e39c8150bde54</Sha> <Sha>b63ea25b8dc50bb3dfcef128d415254bd5ca4dc8</Sha>
</Dependency> </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> <Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>dba2fa57432b4bd9cc7880e2c6fe3acdd01bba3c</Sha> <Sha>b446afd34759150c2ea3b86ab794104e12e64db1</Sha>
</Dependency> </Dependency>
</ToolsetDependencies> </ToolsetDependencies>
</Dependencies> </Dependencies>

View File

@ -9,7 +9,7 @@
<AspNetCoreMajorVersion>5</AspNetCoreMajorVersion> <AspNetCoreMajorVersion>5</AspNetCoreMajorVersion>
<AspNetCoreMinorVersion>0</AspNetCoreMinorVersion> <AspNetCoreMinorVersion>0</AspNetCoreMinorVersion>
<AspNetCorePatchVersion>0</AspNetCorePatchVersion> <AspNetCorePatchVersion>0</AspNetCorePatchVersion>
<PreReleaseVersionIteration>1</PreReleaseVersionIteration> <PreReleaseVersionIteration>2</PreReleaseVersionIteration>
<!-- <!--
When StabilizePackageVersion is set to 'true', this branch will produce stable outputs for 'Shipping' packages When StabilizePackageVersion is set to 'true', this branch will produce stable outputs for 'Shipping' packages
--> -->
@ -20,8 +20,6 @@
<IncludePreReleaseLabelInPackageVersion>true</IncludePreReleaseLabelInPackageVersion> <IncludePreReleaseLabelInPackageVersion>true</IncludePreReleaseLabelInPackageVersion>
<IncludePreReleaseLabelInPackageVersion Condition=" '$(DotNetFinalVersionKind)' == 'release' ">false</IncludePreReleaseLabelInPackageVersion> <IncludePreReleaseLabelInPackageVersion Condition=" '$(DotNetFinalVersionKind)' == 'release' ">false</IncludePreReleaseLabelInPackageVersion>
<AspNetCoreMajorMinorVersion>$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion)</AspNetCoreMajorMinorVersion> <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 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. 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"> <PropertyGroup Label="Automated">
<!-- Packages from dotnet/roslyn --> <!-- Packages from dotnet/roslyn -->
<MicrosoftNetCompilersToolsetPackageVersion>3.8.0-2.20407.3</MicrosoftNetCompilersToolsetPackageVersion> <MicrosoftNetCompilersToolsetPackageVersion>3.8.0-3.20458.6</MicrosoftNetCompilersToolsetPackageVersion>
<!-- Packages from dotnet/runtime --> <!-- Packages from dotnet/runtime -->
<MicrosoftExtensionsDependencyModelPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsDependencyModelPackageVersion> <MicrosoftExtensionsDependencyModelPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsDependencyModelPackageVersion>
<MicrosoftNETCoreAppInternalPackageVersion>5.0.0-rc.1.20451.14</MicrosoftNETCoreAppInternalPackageVersion> <MicrosoftNETCoreAppInternalPackageVersion>5.0.0-rc.2.20474.8</MicrosoftNETCoreAppInternalPackageVersion>
<MicrosoftNETCoreAppRefPackageVersion>5.0.0-rc.1.20451.14</MicrosoftNETCoreAppRefPackageVersion> <MicrosoftNETCoreAppRefPackageVersion>5.0.0-rc.2.20474.8</MicrosoftNETCoreAppRefPackageVersion>
<MicrosoftNETCoreAppRuntimewinx64PackageVersion>5.0.0-rc.1.20451.14</MicrosoftNETCoreAppRuntimewinx64PackageVersion> <MicrosoftNETCoreAppRuntimewinx64PackageVersion>5.0.0-rc.2.20474.8</MicrosoftNETCoreAppRuntimewinx64PackageVersion>
<MicrosoftNETCoreBrowserDebugHostTransportPackageVersion>5.0.0-rc.1.20451.14</MicrosoftNETCoreBrowserDebugHostTransportPackageVersion> <MicrosoftNETCoreBrowserDebugHostTransportPackageVersion>5.0.0-rc.2.20474.8</MicrosoftNETCoreBrowserDebugHostTransportPackageVersion>
<MicrosoftWin32RegistryPackageVersion>5.0.0-rc.1.20451.14</MicrosoftWin32RegistryPackageVersion> <MicrosoftWin32RegistryPackageVersion>5.0.0-rc.2.20474.8</MicrosoftWin32RegistryPackageVersion>
<MicrosoftWin32SystemEventsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftWin32SystemEventsPackageVersion> <MicrosoftWin32SystemEventsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftWin32SystemEventsPackageVersion>
<MicrosoftExtensionsCachingAbstractionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsCachingAbstractionsPackageVersion> <MicrosoftExtensionsCachingAbstractionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsCachingAbstractionsPackageVersion>
<MicrosoftExtensionsCachingMemoryPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsCachingMemoryPackageVersion> <MicrosoftExtensionsCachingMemoryPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsCachingMemoryPackageVersion>
<MicrosoftExtensionsConfigurationAbstractionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationAbstractionsPackageVersion> <MicrosoftExtensionsConfigurationAbstractionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationAbstractionsPackageVersion>
<MicrosoftExtensionsConfigurationBinderPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationBinderPackageVersion> <MicrosoftExtensionsConfigurationBinderPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationBinderPackageVersion>
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationCommandLinePackageVersion> <MicrosoftExtensionsConfigurationCommandLinePackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion> <MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
<MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion> <MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>
<MicrosoftExtensionsConfigurationIniPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationIniPackageVersion> <MicrosoftExtensionsConfigurationIniPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationIniPackageVersion>
<MicrosoftExtensionsConfigurationJsonPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationJsonPackageVersion> <MicrosoftExtensionsConfigurationJsonPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationJsonPackageVersion>
<MicrosoftExtensionsConfigurationPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationPackageVersion> <MicrosoftExtensionsConfigurationPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationPackageVersion>
<MicrosoftExtensionsConfigurationUserSecretsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationUserSecretsPackageVersion> <MicrosoftExtensionsConfigurationUserSecretsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
<MicrosoftExtensionsConfigurationXmlPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsConfigurationXmlPackageVersion> <MicrosoftExtensionsConfigurationXmlPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsConfigurationXmlPackageVersion>
<MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion> <MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>
<MicrosoftExtensionsDependencyInjectionPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsDependencyInjectionPackageVersion> <MicrosoftExtensionsDependencyInjectionPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsDependencyInjectionPackageVersion>
<MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion> <MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>
<MicrosoftExtensionsFileProvidersCompositePackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsFileProvidersCompositePackageVersion> <MicrosoftExtensionsFileProvidersCompositePackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsFileProvidersCompositePackageVersion>
<MicrosoftExtensionsFileProvidersPhysicalPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsFileProvidersPhysicalPackageVersion> <MicrosoftExtensionsFileProvidersPhysicalPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsFileProvidersPhysicalPackageVersion>
<MicrosoftExtensionsFileSystemGlobbingPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsFileSystemGlobbingPackageVersion> <MicrosoftExtensionsFileSystemGlobbingPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsFileSystemGlobbingPackageVersion>
<MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion> <MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>
<MicrosoftExtensionsHostingAbstractionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsHostingAbstractionsPackageVersion> <MicrosoftExtensionsHostingAbstractionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsHostingAbstractionsPackageVersion>
<MicrosoftExtensionsHostingPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsHostingPackageVersion> <MicrosoftExtensionsHostingPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsHostingPackageVersion>
<MicrosoftExtensionsHttpPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsHttpPackageVersion> <MicrosoftExtensionsHttpPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsHttpPackageVersion>
<MicrosoftExtensionsLoggingAbstractionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsLoggingAbstractionsPackageVersion> <MicrosoftExtensionsLoggingAbstractionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsLoggingAbstractionsPackageVersion>
<MicrosoftExtensionsLoggingConfigurationPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsLoggingConfigurationPackageVersion> <MicrosoftExtensionsLoggingConfigurationPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsLoggingConfigurationPackageVersion>
<MicrosoftExtensionsLoggingConsolePackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsLoggingConsolePackageVersion> <MicrosoftExtensionsLoggingConsolePackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsLoggingConsolePackageVersion>
<MicrosoftExtensionsLoggingDebugPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsLoggingDebugPackageVersion> <MicrosoftExtensionsLoggingDebugPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsLoggingDebugPackageVersion>
<MicrosoftExtensionsLoggingEventSourcePackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsLoggingEventSourcePackageVersion> <MicrosoftExtensionsLoggingEventSourcePackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsLoggingEventSourcePackageVersion>
<MicrosoftExtensionsLoggingEventLogPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsLoggingEventLogPackageVersion> <MicrosoftExtensionsLoggingEventLogPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsLoggingEventLogPackageVersion>
<MicrosoftExtensionsLoggingPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsLoggingPackageVersion> <MicrosoftExtensionsLoggingPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsLoggingPackageVersion>
<MicrosoftExtensionsLoggingTraceSourcePackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsLoggingTraceSourcePackageVersion> <MicrosoftExtensionsLoggingTraceSourcePackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsLoggingTraceSourcePackageVersion>
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion> <MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
<MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsOptionsDataAnnotationsPackageVersion> <MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>
<MicrosoftExtensionsOptionsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsOptionsPackageVersion> <MicrosoftExtensionsOptionsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsOptionsPackageVersion>
<MicrosoftExtensionsPrimitivesPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsPrimitivesPackageVersion> <MicrosoftExtensionsPrimitivesPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsPrimitivesPackageVersion>
<MicrosoftExtensionsInternalTransportPackageVersion>5.0.0-rc.1.20451.14</MicrosoftExtensionsInternalTransportPackageVersion> <MicrosoftExtensionsInternalTransportPackageVersion>5.0.0-rc.2.20474.8</MicrosoftExtensionsInternalTransportPackageVersion>
<SystemComponentModelAnnotationsPackageVersion>5.0.0-rc.1.20451.14</SystemComponentModelAnnotationsPackageVersion> <SystemComponentModelAnnotationsPackageVersion>5.0.0-rc.2.20474.8</SystemComponentModelAnnotationsPackageVersion>
<SystemDiagnosticsDiagnosticSourcePackageVersion>5.0.0-rc.1.20451.14</SystemDiagnosticsDiagnosticSourcePackageVersion> <SystemDiagnosticsDiagnosticSourcePackageVersion>5.0.0-rc.2.20474.8</SystemDiagnosticsDiagnosticSourcePackageVersion>
<SystemDiagnosticsEventLogPackageVersion>5.0.0-rc.1.20451.14</SystemDiagnosticsEventLogPackageVersion> <SystemDiagnosticsEventLogPackageVersion>5.0.0-rc.2.20474.8</SystemDiagnosticsEventLogPackageVersion>
<SystemDirectoryServicesProtocolsPackageVersion>5.0.0-rc.1.20451.14</SystemDirectoryServicesProtocolsPackageVersion> <SystemDirectoryServicesProtocolsPackageVersion>5.0.0-rc.2.20474.8</SystemDirectoryServicesProtocolsPackageVersion>
<SystemDrawingCommonPackageVersion>5.0.0-rc.1.20451.14</SystemDrawingCommonPackageVersion> <SystemDrawingCommonPackageVersion>5.0.0-rc.2.20474.8</SystemDrawingCommonPackageVersion>
<SystemIOPipelinesPackageVersion>5.0.0-rc.1.20451.14</SystemIOPipelinesPackageVersion> <SystemIOPipelinesPackageVersion>5.0.0-rc.2.20474.8</SystemIOPipelinesPackageVersion>
<SystemNetHttpJsonPackageVersion>5.0.0-rc.1.20451.14</SystemNetHttpJsonPackageVersion> <SystemNetHttpJsonPackageVersion>5.0.0-rc.2.20474.8</SystemNetHttpJsonPackageVersion>
<SystemNetHttpWinHttpHandlerPackageVersion>5.0.0-rc.1.20451.14</SystemNetHttpWinHttpHandlerPackageVersion> <SystemNetHttpWinHttpHandlerPackageVersion>5.0.0-rc.2.20474.8</SystemNetHttpWinHttpHandlerPackageVersion>
<SystemNetWebSocketsWebSocketProtocolPackageVersion>5.0.0-rc.1.20451.14</SystemNetWebSocketsWebSocketProtocolPackageVersion> <SystemNetWebSocketsWebSocketProtocolPackageVersion>5.0.0-rc.2.20474.8</SystemNetWebSocketsWebSocketProtocolPackageVersion>
<SystemReflectionMetadataPackageVersion>5.0.0-rc.1.20451.14</SystemReflectionMetadataPackageVersion> <SystemReflectionMetadataPackageVersion>5.0.0-rc.2.20474.8</SystemReflectionMetadataPackageVersion>
<SystemResourcesExtensionsPackageVersion>5.0.0-rc.1.20451.14</SystemResourcesExtensionsPackageVersion> <SystemResourcesExtensionsPackageVersion>5.0.0-rc.2.20474.8</SystemResourcesExtensionsPackageVersion>
<SystemRuntimeCompilerServicesUnsafePackageVersion>5.0.0-rc.1.20451.14</SystemRuntimeCompilerServicesUnsafePackageVersion> <SystemRuntimeCompilerServicesUnsafePackageVersion>5.0.0-rc.2.20474.8</SystemRuntimeCompilerServicesUnsafePackageVersion>
<!-- System.Security.AccessControl should only be referenced in Dependencies.props and RTMVersions.csproj. --> <SystemSecurityCryptographyCngPackageVersion>5.0.0-rc.2.20474.8</SystemSecurityCryptographyCngPackageVersion>
<SystemSecurityAccessControlPackageVersion>5.0.0-rc.1.20451.14</SystemSecurityAccessControlPackageVersion> <SystemSecurityCryptographyPkcsPackageVersion>5.0.0-rc.2.20474.8</SystemSecurityCryptographyPkcsPackageVersion>
<SystemSecurityCryptographyCngPackageVersion>5.0.0-rc.1.20451.14</SystemSecurityCryptographyCngPackageVersion> <SystemSecurityCryptographyXmlPackageVersion>5.0.0-rc.2.20474.8</SystemSecurityCryptographyXmlPackageVersion>
<SystemSecurityCryptographyPkcsPackageVersion>5.0.0-rc.1.20451.14</SystemSecurityCryptographyPkcsPackageVersion> <SystemSecurityPermissionsPackageVersion>5.0.0-rc.2.20474.8</SystemSecurityPermissionsPackageVersion>
<SystemSecurityCryptographyXmlPackageVersion>5.0.0-rc.1.20451.14</SystemSecurityCryptographyXmlPackageVersion> <SystemSecurityPrincipalWindowsPackageVersion>5.0.0-rc.2.20474.8</SystemSecurityPrincipalWindowsPackageVersion>
<SystemSecurityPermissionsPackageVersion>5.0.0-rc.1.20451.14</SystemSecurityPermissionsPackageVersion> <SystemServiceProcessServiceControllerPackageVersion>5.0.0-rc.2.20474.8</SystemServiceProcessServiceControllerPackageVersion>
<SystemSecurityPrincipalWindowsPackageVersion>5.0.0-rc.1.20451.14</SystemSecurityPrincipalWindowsPackageVersion> <SystemTextEncodingsWebPackageVersion>5.0.0-rc.2.20474.8</SystemTextEncodingsWebPackageVersion>
<SystemServiceProcessServiceControllerPackageVersion>5.0.0-rc.1.20451.14</SystemServiceProcessServiceControllerPackageVersion> <SystemTextJsonPackageVersion>5.0.0-rc.2.20474.8</SystemTextJsonPackageVersion>
<SystemTextEncodingsWebPackageVersion>5.0.0-rc.1.20451.14</SystemTextEncodingsWebPackageVersion> <SystemThreadingChannelsPackageVersion>5.0.0-rc.2.20474.8</SystemThreadingChannelsPackageVersion>
<SystemTextJsonPackageVersion>5.0.0-rc.1.20451.14</SystemTextJsonPackageVersion> <SystemWindowsExtensionsPackageVersion>5.0.0-rc.2.20474.8</SystemWindowsExtensionsPackageVersion>
<SystemThreadingChannelsPackageVersion>5.0.0-rc.1.20451.14</SystemThreadingChannelsPackageVersion>
<SystemWindowsExtensionsPackageVersion>5.0.0-rc.1.20451.14</SystemWindowsExtensionsPackageVersion>
<!-- Only listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 --> <!-- Only listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 -->
<MicrosoftNETCorePlatformsPackageVersion>5.0.0-rc.1.20451.14</MicrosoftNETCorePlatformsPackageVersion> <MicrosoftNETCorePlatformsPackageVersion>5.0.0-rc.2.20474.8</MicrosoftNETCorePlatformsPackageVersion>
<!-- Packages from dotnet/blazor -->
<MicrosoftAspNetCoreComponentsWebAssemblyRuntimePackageVersion>3.2.0</MicrosoftAspNetCoreComponentsWebAssemblyRuntimePackageVersion>
<!-- Packages from dotnet/efcore --> <!-- Packages from dotnet/efcore -->
<dotnetefPackageVersion>5.0.0-rc.1.20451.13</dotnetefPackageVersion> <dotnetefPackageVersion>5.0.0-rc.2.20474.5</dotnetefPackageVersion>
<MicrosoftEntityFrameworkCoreInMemoryPackageVersion>5.0.0-rc.1.20451.13</MicrosoftEntityFrameworkCoreInMemoryPackageVersion> <MicrosoftEntityFrameworkCoreInMemoryPackageVersion>5.0.0-rc.2.20474.5</MicrosoftEntityFrameworkCoreInMemoryPackageVersion>
<MicrosoftEntityFrameworkCoreRelationalPackageVersion>5.0.0-rc.1.20451.13</MicrosoftEntityFrameworkCoreRelationalPackageVersion> <MicrosoftEntityFrameworkCoreRelationalPackageVersion>5.0.0-rc.2.20474.5</MicrosoftEntityFrameworkCoreRelationalPackageVersion>
<MicrosoftEntityFrameworkCoreSqlitePackageVersion>5.0.0-rc.1.20451.13</MicrosoftEntityFrameworkCoreSqlitePackageVersion> <MicrosoftEntityFrameworkCoreSqlitePackageVersion>5.0.0-rc.2.20474.5</MicrosoftEntityFrameworkCoreSqlitePackageVersion>
<MicrosoftEntityFrameworkCoreSqlServerPackageVersion>5.0.0-rc.1.20451.13</MicrosoftEntityFrameworkCoreSqlServerPackageVersion> <MicrosoftEntityFrameworkCoreSqlServerPackageVersion>5.0.0-rc.2.20474.5</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
<MicrosoftEntityFrameworkCoreToolsPackageVersion>5.0.0-rc.1.20451.13</MicrosoftEntityFrameworkCoreToolsPackageVersion> <MicrosoftEntityFrameworkCoreToolsPackageVersion>5.0.0-rc.2.20474.5</MicrosoftEntityFrameworkCoreToolsPackageVersion>
<MicrosoftEntityFrameworkCorePackageVersion>5.0.0-rc.1.20451.13</MicrosoftEntityFrameworkCorePackageVersion> <MicrosoftEntityFrameworkCorePackageVersion>5.0.0-rc.2.20474.5</MicrosoftEntityFrameworkCorePackageVersion>
<MicrosoftEntityFrameworkCoreDesignPackageVersion>5.0.0-rc.1.20451.13</MicrosoftEntityFrameworkCoreDesignPackageVersion> <MicrosoftEntityFrameworkCoreDesignPackageVersion>5.0.0-rc.2.20474.5</MicrosoftEntityFrameworkCoreDesignPackageVersion>
<!-- Packages from dotnet/arcade --> <!-- Packages from dotnet/arcade -->
<MicrosoftDotNetBuildTasksInstallersPackageVersion>5.0.0-beta.20431.1</MicrosoftDotNetBuildTasksInstallersPackageVersion> <MicrosoftDotNetBuildTasksInstallersPackageVersion>5.0.0-beta.20467.6</MicrosoftDotNetBuildTasksInstallersPackageVersion>
</PropertyGroup> </PropertyGroup>
<!-- <!--
@ -162,36 +156,6 @@
--> -->
<MicrosoftNETCoreAppRuntimeVersion>$(MicrosoftNETCoreAppRuntimewinx64PackageVersion)</MicrosoftNETCoreAppRuntimeVersion> <MicrosoftNETCoreAppRuntimeVersion>$(MicrosoftNETCoreAppRuntimewinx64PackageVersion)</MicrosoftNETCoreAppRuntimeVersion>
</PropertyGroup> </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"> <PropertyGroup Label="Manual">
<!-- DiagnosticAdapter package pinned temporarily until migrated/deprecated --> <!-- DiagnosticAdapter package pinned temporarily until migrated/deprecated -->
<MicrosoftExtensionsDiagnosticAdapterPackageVersion>5.0.0-preview.4.20180.4</MicrosoftExtensionsDiagnosticAdapterPackageVersion> <MicrosoftExtensionsDiagnosticAdapterPackageVersion>5.0.0-preview.4.20180.4</MicrosoftExtensionsDiagnosticAdapterPackageVersion>
@ -225,7 +189,7 @@
<MicrosoftCodeAnalysisCommonPackageVersion>3.7.0</MicrosoftCodeAnalysisCommonPackageVersion> <MicrosoftCodeAnalysisCommonPackageVersion>3.7.0</MicrosoftCodeAnalysisCommonPackageVersion>
<MicrosoftCodeAnalysisCSharpPackageVersion>3.7.0</MicrosoftCodeAnalysisCSharpPackageVersion> <MicrosoftCodeAnalysisCSharpPackageVersion>3.7.0</MicrosoftCodeAnalysisCSharpPackageVersion>
<MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>3.7.0</MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion> <MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>3.7.0</MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>
<MicrosoftCodeAnalysisPublicApiAnalyzersPackageVersion>3.3.0-beta2.final</MicrosoftCodeAnalysisPublicApiAnalyzersPackageVersion> <MicrosoftCodeAnalysisPublicApiAnalyzersPackageVersion>3.3.0</MicrosoftCodeAnalysisPublicApiAnalyzersPackageVersion>
<MicrosoftCodeAnalysisFxCopAnalyzersPackageVersion>3.0.0</MicrosoftCodeAnalysisFxCopAnalyzersPackageVersion> <MicrosoftCodeAnalysisFxCopAnalyzersPackageVersion>3.0.0</MicrosoftCodeAnalysisFxCopAnalyzersPackageVersion>
<MicrosoftCssParserPackageVersion>1.0.0-20200708.1</MicrosoftCssParserPackageVersion> <MicrosoftCssParserPackageVersion>1.0.0-20200708.1</MicrosoftCssParserPackageVersion>
<MicrosoftIdentityModelClientsActiveDirectoryPackageVersion>3.19.8</MicrosoftIdentityModelClientsActiveDirectoryPackageVersion> <MicrosoftIdentityModelClientsActiveDirectoryPackageVersion>3.19.8</MicrosoftIdentityModelClientsActiveDirectoryPackageVersion>
@ -239,10 +203,11 @@
<MicrosoftWebAdministrationPackageVersion>11.1.0</MicrosoftWebAdministrationPackageVersion> <MicrosoftWebAdministrationPackageVersion>11.1.0</MicrosoftWebAdministrationPackageVersion>
<MicrosoftWebXdtPackageVersion>1.4.0</MicrosoftWebXdtPackageVersion> <MicrosoftWebXdtPackageVersion>1.4.0</MicrosoftWebXdtPackageVersion>
<SystemIdentityModelTokensJwtPackageVersion>6.7.1</SystemIdentityModelTokensJwtPackageVersion> <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. --> <!-- Packages from 2.1, 2.2, and 3.1 branches used for site extension build. -->
<MicrosoftAspNetCoreAzureAppServicesSiteExtension21PackageVersion>2.1.1</MicrosoftAspNetCoreAzureAppServicesSiteExtension21PackageVersion> <MicrosoftAspNetCoreAzureAppServicesSiteExtension21PackageVersion>2.1.1</MicrosoftAspNetCoreAzureAppServicesSiteExtension21PackageVersion>
<MicrosoftAspNetCoreAzureAppServicesSiteExtension22PackageVersion>2.2.0</MicrosoftAspNetCoreAzureAppServicesSiteExtension22PackageVersion> <MicrosoftAspNetCoreAzureAppServicesSiteExtension22PackageVersion>2.2.0</MicrosoftAspNetCoreAzureAppServicesSiteExtension22PackageVersion>
<MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion>3.1.7-servicing-20372-13</MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion> <MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion>3.1.8-servicing-20421-6</MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion>
<MicrosoftAspNetCoreAzureAppServicesSiteExtension31x64PackageVersion>$(MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion)</MicrosoftAspNetCoreAzureAppServicesSiteExtension31x64PackageVersion> <MicrosoftAspNetCoreAzureAppServicesSiteExtension31x64PackageVersion>$(MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion)</MicrosoftAspNetCoreAzureAppServicesSiteExtension31x64PackageVersion>
<MicrosoftAspNetCoreAzureAppServicesSiteExtension31x86PackageVersion>$(MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion)</MicrosoftAspNetCoreAzureAppServicesSiteExtension31x86PackageVersion> <MicrosoftAspNetCoreAzureAppServicesSiteExtension31x86PackageVersion>$(MicrosoftAspNetCoreAzureAppServicesSiteExtension31PackageVersion)</MicrosoftAspNetCoreAzureAppServicesSiteExtension31x86PackageVersion>
<!-- 3rd party dependencies --> <!-- 3rd party dependencies -->
@ -251,29 +216,30 @@
<CastleCorePackageVersion>4.2.1</CastleCorePackageVersion> <CastleCorePackageVersion>4.2.1</CastleCorePackageVersion>
<CommandLineParserPackageVersion>2.3.0</CommandLineParserPackageVersion> <CommandLineParserPackageVersion>2.3.0</CommandLineParserPackageVersion>
<FSharpCorePackageVersion>4.2.1</FSharpCorePackageVersion> <FSharpCorePackageVersion>4.2.1</FSharpCorePackageVersion>
<GoogleProtobufPackageVersion>3.10.0</GoogleProtobufPackageVersion> <GoogleProtobufPackageVersion>3.13.0</GoogleProtobufPackageVersion>
<GrpcAspNetCorePackageVersion>2.27.0</GrpcAspNetCorePackageVersion> <GrpcAspNetCorePackageVersion>2.32.0-pre1</GrpcAspNetCorePackageVersion>
<GrpcAuthPackageVersion>2.27.0</GrpcAuthPackageVersion> <GrpcAuthPackageVersion>2.32.0-pre1</GrpcAuthPackageVersion>
<GrpcNetClientPackageVersion>2.27.0</GrpcNetClientPackageVersion> <GrpcNetClientPackageVersion>2.32.0-pre1</GrpcNetClientPackageVersion>
<GrpcToolsPackageVersion>2.27.0</GrpcToolsPackageVersion> <GrpcToolsPackageVersion>2.32.0-pre1</GrpcToolsPackageVersion>
<IdentityServer4AspNetIdentityPackageVersion>4.0.4</IdentityServer4AspNetIdentityPackageVersion> <IdentityServer4AspNetIdentityPackageVersion>4.0.4</IdentityServer4AspNetIdentityPackageVersion>
<IdentityServer4EntityFrameworkPackageVersion>4.0.4</IdentityServer4EntityFrameworkPackageVersion> <IdentityServer4EntityFrameworkPackageVersion>4.0.4</IdentityServer4EntityFrameworkPackageVersion>
<IdentityServer4PackageVersion>4.0.4</IdentityServer4PackageVersion> <IdentityServer4PackageVersion>4.0.4</IdentityServer4PackageVersion>
<IdentityServer4StoragePackageVersion>4.0.4</IdentityServer4StoragePackageVersion> <IdentityServer4StoragePackageVersion>4.0.4</IdentityServer4StoragePackageVersion>
<IdentityServer4EntityFrameworkStoragePackageVersion>4.0.4</IdentityServer4EntityFrameworkStoragePackageVersion> <IdentityServer4EntityFrameworkStoragePackageVersion>4.0.4</IdentityServer4EntityFrameworkStoragePackageVersion>
<MessagePackPackageVersion>2.1.90</MessagePackPackageVersion> <MessagePackPackageVersion>2.1.90</MessagePackPackageVersion>
<MicrosoftIdentityWebPackageVersion>0.3.1-preview</MicrosoftIdentityWebPackageVersion> <MicrosoftIdentityWebPackageVersion>0.4.0-preview</MicrosoftIdentityWebPackageVersion>
<MicrosoftIdentityWebUIPackageVersion>0.3.1-preview</MicrosoftIdentityWebUIPackageVersion> <MicrosoftIdentityWebMicrosoftGraphPackageVersion>0.4.0-preview</MicrosoftIdentityWebMicrosoftGraphPackageVersion>
<MicrosoftIdentityWebUIPackageVersion>0.4.0-preview</MicrosoftIdentityWebUIPackageVersion>
<MessagePackAnalyzerPackageVersion>$(MessagePackPackageVersion)</MessagePackAnalyzerPackageVersion> <MessagePackAnalyzerPackageVersion>$(MessagePackPackageVersion)</MessagePackAnalyzerPackageVersion>
<MoqPackageVersion>4.10.0</MoqPackageVersion> <MoqPackageVersion>4.10.0</MoqPackageVersion>
<MonoCecilPackageVersion>0.11.2</MonoCecilPackageVersion> <MonoCecilPackageVersion>0.11.2</MonoCecilPackageVersion>
<NewtonsoftJsonBsonPackageVersion>1.0.2</NewtonsoftJsonBsonPackageVersion> <NewtonsoftJsonBsonPackageVersion>1.0.2</NewtonsoftJsonBsonPackageVersion>
<NewtonsoftJsonPackageVersion>12.0.2</NewtonsoftJsonPackageVersion> <NewtonsoftJsonPackageVersion>12.0.2</NewtonsoftJsonPackageVersion>
<NSwagApiDescriptionClientPackageVersion>13.0.4</NSwagApiDescriptionClientPackageVersion> <NSwagApiDescriptionClientPackageVersion>13.0.4</NSwagApiDescriptionClientPackageVersion>
<SeleniumSupportPackageVersion>3.12.1</SeleniumSupportPackageVersion> <SeleniumSupportPackageVersion>4.0.0-alpha05</SeleniumSupportPackageVersion>
<SeleniumWebDriverMicrosoftDriverPackageVersion>17.17134.0</SeleniumWebDriverMicrosoftDriverPackageVersion> <SeleniumWebDriverMicrosoftDriverPackageVersion>17.17134.0</SeleniumWebDriverMicrosoftDriverPackageVersion>
<SeleniumWebDriverChromeDriverPackageVersion>2.43.0</SeleniumWebDriverChromeDriverPackageVersion> <SeleniumWebDriverChromeDriverPackageVersion>85.0.4183.8300</SeleniumWebDriverChromeDriverPackageVersion>
<SeleniumWebDriverPackageVersion>3.12.1</SeleniumWebDriverPackageVersion> <SeleniumWebDriverPackageVersion>4.0.0-alpha05</SeleniumWebDriverPackageVersion>
<SerilogExtensionsLoggingPackageVersion>1.4.0</SerilogExtensionsLoggingPackageVersion> <SerilogExtensionsLoggingPackageVersion>1.4.0</SerilogExtensionsLoggingPackageVersion>
<SerilogSinksFilePackageVersion>4.0.0</SerilogSinksFilePackageVersion> <SerilogSinksFilePackageVersion>4.0.0</SerilogSinksFilePackageVersion>
<StackExchangeRedisPackageVersion>2.0.593</StackExchangeRedisPackageVersion> <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> <Project>
<Import Project="Sdk.props" Sdk="Microsoft.DotNet.Arcade.Sdk" /> <Import Project="Sdk.props" Sdk="Microsoft.DotNet.Arcade.Sdk" />
</Project> </Project>

View File

@ -8,7 +8,7 @@ param(
[Parameter(Mandatory=$false)][string] $EnableSourceLinkValidation, [Parameter(Mandatory=$false)][string] $EnableSourceLinkValidation,
[Parameter(Mandatory=$false)][string] $EnableSigningValidation, [Parameter(Mandatory=$false)][string] $EnableSigningValidation,
[Parameter(Mandatory=$false)][string] $EnableNugetValidation, [Parameter(Mandatory=$false)][string] $EnableNugetValidation,
[Parameter(Mandatory=$true)][string] $PublishInstallersAndChecksums, [Parameter(Mandatory=$false)][string] $PublishInstallersAndChecksums,
[Parameter(Mandatory=$false)][string] $ArtifactsPublishingAdditionalParameters, [Parameter(Mandatory=$false)][string] $ArtifactsPublishingAdditionalParameters,
[Parameter(Mandatory=$false)][string] $SigningValidationAdditionalParameters [Parameter(Mandatory=$false)][string] $SigningValidationAdditionalParameters
) )
@ -16,7 +16,7 @@ param(
try { try {
. $PSScriptRoot\post-build-utils.ps1 . $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 # 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() $optionalParams = [System.Collections.ArrayList]::new()
@ -29,7 +29,7 @@ try {
$optionalParams.Add("--no-wait") | Out-Null $optionalParams.Add("--no-wait") | Out-Null
} }
if ("true" -eq $PublishInstallersAndChecksums) { if ("false" -ne $PublishInstallersAndChecksums) {
$optionalParams.Add("--publish-installers-and-checksums") | Out-Null $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 ` --id $buildId `
--publishing-infra-version $PublishingInfraVersion ` --publishing-infra-version $PublishingInfraVersion `
--default-channels ` --default-channels `

View File

@ -144,11 +144,27 @@ $ValidatePackage = {
if ($FailedFiles -eq 0) { if ($FailedFiles -eq 0) {
Write-Host 'Passed.' Write-Host 'Passed.'
return 0 return [pscustomobject]@{
result = 0
packagePath = $PackagePath
}
} }
else { else {
Write-PipelineTelemetryError -Category 'SourceLink' -Message "$PackagePath has broken SourceLink links." 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')) { foreach ($Job in @(Get-Job -State 'Completed')) {
$jobResult = Receive-Job -Id $Job.Id $jobResult = Wait-Job -Id $Job.Id | Receive-Job
if ($jobResult -ne '0') { CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures)
$ValidationFailures++
}
Remove-Job -Id $Job.Id Remove-Job -Id $Job.Id
} }
} }

View File

@ -141,11 +141,6 @@ $CountMissingSymbols = {
if ($using:Clean) { if ($using:Clean) {
Remove-Item $ExtractPath -Recurse -Force 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 Pop-Location
@ -165,6 +160,7 @@ function CheckJobResult(
$DupedSymbols.Value++ $DupedSymbols.Value++
} }
elseif ($jobResult.result -ne '0') { elseif ($jobResult.result -ne '0') {
Write-PipelineTelemetryError -Category 'CheckSymbols' -Message "Missing symbols for $result modules in the package $packagePath"
$TotalFailures.Value++ $TotalFailures.Value++
} }
} }
@ -201,7 +197,6 @@ function CheckSymbolsAvailable {
Start-Job -ScriptBlock $CountMissingSymbols -ArgumentList $FullName | Out-Null Start-Job -ScriptBlock $CountMissingSymbols -ArgumentList $FullName | Out-Null
$NumJobs = @(Get-Job -State 'Running').Count $NumJobs = @(Get-Job -State 'Running').Count
Write-Host $NumJobs
while ($NumJobs -ge $MaxParallelJobs) { while ($NumJobs -ge $MaxParallelJobs) {
Write-Host "There are $NumJobs validation jobs running right now. Waiting $SecondsBetweenLoadChecks seconds to check again." 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 $GlobalJson.tools | Add-Member -Name "vs" -Value (ConvertFrom-Json "{ `"version`": `"16.5`" }") -MemberType NoteProperty
} }
if( -not ($GlobalJson.tools.PSObject.Properties.Name -match "xcopy-msbuild" )) { 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") { if ($GlobalJson.tools."xcopy-msbuild".Trim() -ine "none") {
$xcopyMSBuildToolsFolder = InitializeXCopyMSBuild $GlobalJson.tools."xcopy-msbuild" -install $true $xcopyMSBuildToolsFolder = InitializeXCopyMSBuild $GlobalJson.tools."xcopy-msbuild" -install $true

View File

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

View File

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

View File

@ -19,7 +19,7 @@ parameters:
enableSigningValidation: true enableSigningValidation: true
enableSymbolValidation: false enableSymbolValidation: false
enableNugetValidation: true enableNugetValidation: true
publishInstallersAndChecksums: false publishInstallersAndChecksums: true
SDLValidationParameters: SDLValidationParameters:
enable: false enable: false
continueOnError: 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 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() 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 continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false
osGroup: '' # required -- operating system for the job
steps: 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 - template: /eng/pipelines/common/templates/runtimes/send-to-helix-inner-step.yml
displayName: ${{ parameters.DisplayNamePrefix }} (Windows) parameters:
env: 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) BuildConfig: $(_BuildConfig)
HelixSource: ${{ parameters.HelixSource }} HelixSource: ${{ parameters.HelixSource }}
HelixType: ${{ parameters.HelixType }} HelixType: ${{ parameters.HelixType }}
@ -42,27 +48,3 @@ steps:
WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }}
Creator: ${{ parameters.Creator }} Creator: ${{ parameters.Creator }}
SYSTEM_ACCESSTOKEN: $(System.AccessToken) 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: '' JobLabel: ''
steps: steps:
- task: CopyFiles@2 - task: Powershell@2
displayName: Copy Logs to $(Build.StagingDirectory)\BuildLogs displayName: Prepare Binlogs to Upload
inputs: inputs:
SourceFolder: $(Build.SourcesDirectory)\artifacts targetType: inline
Contents: | script: |
**/*.log New-Item -ItemType Directory $(Build.SourcesDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
**/*.binlog Move-Item -Path $(Build.SourcesDirectory)/artifacts/log/Debug/* $(Build.SourcesDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
TargetFolder: '$(Build.StagingDirectory)\BuildLogs'
continueOnError: true continueOnError: true
condition: succeededOrFailed() condition: always()
- task: PublishPipelineArtifact@1 - task: PublishBuildArtifacts@1
displayName: Publish BuildLogs displayName: Publish Logs
inputs: inputs:
targetPath: '$(Build.StagingDirectory)\BuildLogs' PathtoPublish: '$(Build.SourcesDirectory)/PostBuildLogs'
artifactName: ${{ parameters.JobLabel }} PublishLocation: Container
condition: succeededOrFailed() ArtifactName: PostBuildLogs
continueOnError: true
condition: always()

View File

@ -240,8 +240,8 @@ function GetDotNetInstallScript([string] $dotnetRoot) {
return $installScript return $installScript
} }
function InstallDotNetSdk([string] $dotnetRoot, [string] $version, [string] $architecture = '') { function InstallDotNetSdk([string] $dotnetRoot, [string] $version, [string] $architecture = '', [switch] $noPath) {
InstallDotNet $dotnetRoot $version $architecture '' $false $runtimeSourceFeed $runtimeSourceFeedKey InstallDotNet $dotnetRoot $version $architecture '' $false $runtimeSourceFeed $runtimeSourceFeedKey -noPath:$noPath
} }
function InstallDotNet([string] $dotnetRoot, function InstallDotNet([string] $dotnetRoot,
@ -250,7 +250,8 @@ function InstallDotNet([string] $dotnetRoot,
[string] $runtime = '', [string] $runtime = '',
[bool] $skipNonVersionedFiles = $false, [bool] $skipNonVersionedFiles = $false,
[string] $runtimeSourceFeed = '', [string] $runtimeSourceFeed = '',
[string] $runtimeSourceFeedKey = '') { [string] $runtimeSourceFeedKey = '',
[switch] $noPath) {
$installScript = GetDotNetInstallScript $dotnetRoot $installScript = GetDotNetInstallScript $dotnetRoot
$installParameters = @{ $installParameters = @{
@ -261,6 +262,7 @@ function InstallDotNet([string] $dotnetRoot,
if ($architecture) { $installParameters.Architecture = $architecture } if ($architecture) { $installParameters.Architecture = $architecture }
if ($runtime) { $installParameters.Runtime = $runtime } if ($runtime) { $installParameters.Runtime = $runtime }
if ($skipNonVersionedFiles) { $installParameters.SkipNonVersionedFiles = $skipNonVersionedFiles } if ($skipNonVersionedFiles) { $installParameters.SkipNonVersionedFiles = $skipNonVersionedFiles }
if ($noPath) { $installParameters.NoPath = $True }
try { try {
& $installScript @installParameters & $installScript @installParameters
@ -310,9 +312,15 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements =
return $global:_MSBuildExe return $global:_MSBuildExe
} }
$vsMinVersionReqdStr = '16.5' # Minimum VS version to require.
$vsMinVersionReqdStr = '16.8'
$vsMinVersionReqd = [Version]::new($vsMinVersionReqdStr) $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 } if (!$vsRequirements) { $vsRequirements = $GlobalJson.tools.vs }
$vsMinVersionStr = if ($vsRequirements.version) { $vsRequirements.version } else { $vsMinVersionReqdStr } $vsMinVersionStr = if ($vsRequirements.version) { $vsRequirements.version } else { $vsMinVersionReqdStr }
$vsMinVersion = [Version]::new($vsMinVersionStr) $vsMinVersion = [Version]::new($vsMinVersionStr)
@ -347,23 +355,28 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements =
$xcopyMSBuildVersion = $GlobalJson.tools.'xcopy-msbuild' $xcopyMSBuildVersion = $GlobalJson.tools.'xcopy-msbuild'
$vsMajorVersion = $xcopyMSBuildVersion.Split('.')[0] $vsMajorVersion = $xcopyMSBuildVersion.Split('.')[0]
} else { } 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){ 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" Write-Host "Using xcopy-msbuild version of $defaultXCopyMSBuildVersion since VS version $vsMinVersionStr provided in global.json is not compatible"
$vsMajorVersion = $vsMinVersionReqd.Major $xcopyMSBuildVersion = $defaultXCopyMSBuildVersion
$vsMinorVersion = $vsMinVersionReqd.Minor
} }
else{ 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 $vsMajorVersion = $vsMinVersion.Major
$vsMinorVersion = $vsMinVersion.Minor $vsMinorVersion = $vsMinVersion.Minor
$xcopyMSBuildVersion = "$vsMajorVersion.$vsMinorVersion.0"
} }
$xcopyMSBuildVersion = "$vsMajorVersion.$vsMinorVersion.0-alpha"
} }
$vsInstallDir = $null $vsInstallDir = $null
if ($xcopyMSBuildVersion.Trim() -ine "none") { if ($xcopyMSBuildVersion.Trim() -ine "none") {
$vsInstallDir = InitializeXCopyMSBuild $xcopyMSBuildVersion $install $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) { if ($vsInstallDir -eq $null) {
throw 'Unable to find Visual Studio that has required version and components installed' 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 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 . $PSScriptRoot\pipeline-logging-functions.ps1
$RepoRoot = Resolve-Path (Join-Path $PSScriptRoot '..\..') $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") description: "The version of the EF tool to use")
{ Argument = new Argument<string>(), Required = true }, { 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( new Option(
aliases: new string[] { "--helixTimeout" }, aliases: new string[] { "--helixTimeout" },
description: "The timeout duration of the Helix job") description: "The timeout duration of the Helix job")
@ -63,34 +53,41 @@ namespace RunTests
}; };
var parseResult = command.Parse(args); var parseResult = command.Parse(args);
var options = new RunTestsOptions(); var sharedFxVersion = parseResult.ValueForOption<string>("--runtime");
options.Target = parseResult.ValueForOption<string>("--target"); var options = new RunTestsOptions
options.RuntimeVersion = parseResult.ValueForOption<string>("--runtime"); {
options.HelixQueue = parseResult.ValueForOption<string>("--queue"); Architecture = parseResult.ValueForOption<string>("--arch"),
options.Architecture = parseResult.ValueForOption<string>("--arch"); EfVersion = parseResult.ValueForOption<string>("--ef"),
options.Quarantined = parseResult.ValueForOption<bool>("--quarantined"); HelixQueue = parseResult.ValueForOption<string>("--queue"),
options.EfVersion = parseResult.ValueForOption<string>("--ef"); Quarantined = parseResult.ValueForOption<bool>("--quarantined"),
options.AspNetRuntime = parseResult.ValueForOption<string>("--aspnetruntime"); RuntimeVersion = sharedFxVersion,
options.AspNetRef = parseResult.ValueForOption<string>("--aspnetref"); Target = parseResult.ValueForOption<string>("--target"),
options.Timeout = TimeSpan.Parse(parseResult.ValueForOption<string>("--helixTimeout")); Timeout = TimeSpan.Parse(parseResult.ValueForOption<string>("--helixTimeout")),
options.HELIX_WORKITEM_ROOT = Environment.GetEnvironmentVariable("HELIX_WORKITEM_ROOT");
options.Path = Environment.GetEnvironmentVariable("PATH"); // When targeting pack builds, it has exactly the same version as the shared framework.
options.DotnetRoot = Environment.GetEnvironmentVariable("DOTNET_ROOT"); 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; return options;
} }
public string Target { get; set;} public string Architecture { get; private set; }
public string SdkVersion { get; set;} public string EfVersion { get; private set; }
public string RuntimeVersion { get; set;} public string HelixQueue { get; private set; }
public string AspNetRuntime { get; set;} public bool Quarantined { get; private set; }
public string AspNetRef { get; set;} public string RuntimeVersion { get; private set; }
public string HelixQueue { get; set;} public string Target { get; private set; }
public string Architecture { get; set;} public TimeSpan Timeout { get; private set; }
public bool Quarantined { get; set;}
public string EfVersion { get; set;} public string AspNetRef { get; private set; }
public string HELIX_WORKITEM_ROOT { get; set;} public string AspNetRuntime { get; private set; }
public string DotnetRoot { get; set; } public string HELIX_WORKITEM_ROOT { get; private set; }
public string DotnetRoot { get; private set; }
public string Path { get; 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("PATH", Options.Path);
EnvironmentVariables.Add("DOTNET_ROOT", Options.DotnetRoot);
EnvironmentVariables.Add("helix", Options.HelixQueue); EnvironmentVariables.Add("helix", Options.HelixQueue);
Console.WriteLine($"Current Directory: {Options.HELIX_WORKITEM_ROOT}"); Console.WriteLine($"Current Directory: {Options.HELIX_WORKITEM_ROOT}");
@ -126,14 +125,6 @@ namespace RunTests
throwOnError: false, throwOnError: false,
cancellationToken: new CancellationTokenSource(TimeSpan.FromMinutes(2)).Token); 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 // Write nuget sources to console, useful for debugging purposes
await ProcessUtil.RunAsync($"{Options.DotnetRoot}/dotnet", await ProcessUtil.RunAsync($"{Options.DotnetRoot}/dotnet",
"nuget list source", "nuget list source",
@ -175,9 +166,9 @@ namespace RunTests
{ {
if (File.Exists(Options.AspNetRef)) 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}"); Console.WriteLine($"Found AspNetRef: {Options.AspNetRef}, extracting to {refPath}");
ZipFile.ExtractToDirectory(Options.AspNetRef, "Microsoft.AspNetCore.App.Ref"); ZipFile.ExtractToDirectory(Options.AspNetRef, refPath);
DisplayContents(refPath); DisplayContents(refPath);
} }
@ -199,8 +190,7 @@ namespace RunTests
try try
{ {
await ProcessUtil.RunAsync($"{Options.DotnetRoot}/dotnet", await ProcessUtil.RunAsync($"{Options.DotnetRoot}/dotnet",
$"tool install dotnet-dump --tool-path {Options.HELIX_WORKITEM_ROOT} " + $"tool install dotnet-dump --tool-path {Options.HELIX_WORKITEM_ROOT} --version 5.0.0-*",
"--version 5.0.0-* --add-source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json",
environmentVariables: EnvironmentVariables, environmentVariables: EnvironmentVariables,
outputDataReceived: Console.WriteLine, outputDataReceived: Console.WriteLine,
errorDataReceived: Console.Error.WriteLine, errorDataReceived: Console.Error.WriteLine,
@ -247,7 +237,7 @@ namespace RunTests
{ {
// Timeout test run 5 minutes before the Helix job would timeout // Timeout test run 5 minutes before the Helix job would timeout
var cts = new CancellationTokenSource(Options.Timeout.Subtract(TimeSpan.FromMinutes(5))); 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) if (Options.Quarantined)
{ {
Console.WriteLine("Running quarantined tests."); Console.WriteLine("Running quarantined tests.");
@ -346,7 +336,7 @@ namespace RunTests
else else
{ {
Console.WriteLine("No dmps found in TestResults"); Console.WriteLine("No dmps found in TestResults");
} }
} }
} }
} }

View File

@ -1,6 +1,5 @@
@echo off @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
setlocal enabledelayedexpansion
REM Use '$' as a variable name prefix to avoid MSBuild variable collisions with these variables REM Use '$' as a variable name prefix to avoid MSBuild variable collisions with these variables
set $target=%1 set $target=%1
@ -11,30 +10,41 @@ set $queue=%5
set $arch=%6 set $arch=%6
set $quarantined=%7 set $quarantined=%7
set $ef=%8 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 REM Batch only supports up to 9 arguments using the %# syntax, need to shift to get more
shift shift
set $aspnetref=%9 set $feedCred=%9
shift
set $helixTimeout=%9
set DOTNET_HOME=%HELIX_CORRELATION_PAYLOAD%\sdk set DOTNET_HOME=%CD%\sdk%random%
set DOTNET_ROOT=%DOTNET_HOME%\%$arch% set DOTNET_ROOT=%DOTNET_HOME%\%$arch%
set DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 set DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
set DOTNET_MULTILEVEL_LOOKUP=0 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 set "PATH=%DOTNET_ROOT%;%PATH%;%HELIX_CORRELATION_PAYLOAD%\node\bin"
echo Set path to: %PATH% echo Set path to: "%PATH%"
echo "Invoking InstallDotNet.ps1 %$arch% %$sdkVersion% %$runtimeVersion% %DOTNET_ROOT%" echo.
powershell.exe -NoProfile -ExecutionPolicy unrestricted -file InstallDotNet.ps1 %$arch% %$sdkVersion% %$runtimeVersion% %DOTNET_ROOT%
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 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%..." echo "Restore: dotnet restore RunTests\RunTests.csproj --ignore-failed-sources"
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 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 ( if errorlevel neq 0 (
set exit_code=%errorlevel% set exit_code=%errorlevel%
) )

View File

@ -30,50 +30,31 @@ RED="\033[0;31m"
YELLOW="\033[0;33m" YELLOW="\033[0;33m"
MAGENTA="\033[0;95m" MAGENTA="\033[0;95m"
curl -o dotnet-install.sh -sSL https://dot.net/v1/dotnet-install.sh . eng/common/tools.sh
if [ $? -ne 0 ]; then echo "InstallDotNet $DOTNET_ROOT $dotnet_sdk_version '' '' true"
download_retries=3 InstallDotNet $DOTNET_ROOT $dotnet_sdk_version "" "" true || {
while [ $download_retries -gt 0 ]; do exit_code=$?
curl -o dotnet-install.sh -sSL https://dot.net/v1/dotnet-install.sh Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "dotnet-install.sh failed (exit code '$exit_code')." >&2
if [ $? -ne 0 ]; then ExitWithExitCode $exit_code
let download_retries=download_retries-1 }
echo -e "${YELLOW}Failed to download dotnet-install.sh. Retries left: $download_retries.${RESET}" echo
else
download_retries=0
fi
done
fi
# Call "sync" between "chmod" and execution to prevent "text file busy" error in Docker (aufs) if [[ -z "${10:-}" ]]; then
chmod +x "dotnet-install.sh"; sync echo "InstallDotNet $DOTNET_ROOT $dotnet_runtime_version '' dotnet true"
InstallDotNet $DOTNET_ROOT $dotnet_runtime_version "" dotnet true || {
./dotnet-install.sh --version $dotnet_sdk_version --install-dir "$DOTNET_ROOT" exit_code=$?
if [ $? -ne 0 ]; then Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "dotnet-install.sh failed (exit code '$exit_code')." >&2
sdk_retries=3 ExitWithExitCode $exit_code
while [ $sdk_retries -gt 0 ]; do }
./dotnet-install.sh --version $dotnet_sdk_version --install-dir "$DOTNET_ROOT" else
if [ $? -ne 0 ]; then echo "InstallDotNet $DOTNET_ROOT $dotnet_runtime_version '' dotnet true https://dotnetclimsrc.blob.core.windows.net/dotnet ..."
let sdk_retries=sdk_retries-1 InstallDotNet $DOTNET_ROOT $dotnet_runtime_version "" dotnet true https://dotnetclimsrc.blob.core.windows.net/dotnet ${10} || {
echo -e "${YELLOW}Failed to install .NET Core SDK $version. Retries left: $sdk_retries.${RESET}" exit_code=$?
else Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "dotnet-install.sh failed (exit code '$exit_code')." >&2
sdk_retries=0 ExitWithExitCode $exit_code
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
fi fi
echo
if [ -e /proc/self/coredump_filter ]; then if [ -e /proc/self/coredump_filter ]; then
# Include memory in private and shared file-backed mappings in the dump. # 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 echo -n 0x3F > /proc/self/coredump_filter
fi 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 sync
exit_code=0 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 "Restore: $DOTNET_ROOT/dotnet restore RunTests/RunTests.csproj --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 restore RunTests/RunTests.csproj --ignore-failed-sources
$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 "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=$? exit_code=$?
echo "Finished tests...exit_code=$exit_code" echo "Finished tests...exit_code=$exit_code"

View File

@ -11,7 +11,8 @@
<Import Project="..\targets\Helix.Common.props" /> <Import Project="..\targets\Helix.Common.props" />
<Import Project="..\Build.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)" />
<HelixTargetQueue Condition="'$(_UseHelixOpenQueues)' != 'true'" Include="@(HelixAvailableTargetQueue->'%(Identity)'->Replace('.Open',''))" /> <HelixTargetQueue Condition="'$(_UseHelixOpenQueues)' != 'true'" Include="@(HelixAvailableTargetQueue->'%(Identity)'->Replace('.Open',''))" />
</ItemGroup> </ItemGroup>

View File

@ -6,7 +6,7 @@
.PARAMETER Project .PARAMETER Project
The test project to publish and send to Helix. The test project to publish and send to Helix.
.PARAMETER HelixQueues .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: Some supported queues:
Ubuntu.1604.Amd64.Open Ubuntu.1604.Amd64.Open
Ubuntu.1804.Amd64.Open Ubuntu.1804.Amd64.Open

View File

@ -33,10 +33,76 @@ reporoot="$(dirname "$(dirname "$scriptroot")")"
# mv "$reporoot/global.bak.json" "$reporoot/global.json" # mv "$reporoot/global.bak.json" "$reporoot/global.json"
#}" EXIT #}" 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 # 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' export DotNetBuildFromSource='true'
# Build projects # 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" /> <PackageReference Include="MicroBuild.Core" Version="0.3.0" PrivateAssets="All" AllowExplicitReference="true" ExcludeAssets="All" />
</ItemGroup> </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 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 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" /> UndefineProperties="TargetFramework;TargetFrameworks" />
</ItemGroup> </ItemGroup>
<ImportGroup Condition="'$(UsingMicrosoftNETSdkWeb)' == 'true' OR '$(UsingMicrosoftNETSdkBlazorWebAssembly)' == 'true' OR '$(RazorSdkCurrentVersionProps)' != ''"> <ImportGroup Condition="'$(_ReferenceLocalRazorSDK)' == 'true'">
<Import Project="$(RepoRoot)eng\targets\GetRazorSDKDirectory.props" /> <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" /> <Import Project="$(RepoRoot)src\Razor\Microsoft.NET.Sdk.Razor\src\build\netstandard2.0\Microsoft.NET.Sdk.Razor.props" />
</ImportGroup> </ImportGroup>

View File

@ -13,22 +13,25 @@
<!-- Public members should not use oblivious types. Not done with all nullable annotations. --> <!-- Public members should not use oblivious types. Not done with all nullable annotations. -->
<NoWarn>$(NoWarn);RS0041</NoWarn> <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> </PropertyGroup>
<ItemGroup Condition=" '$(IsImplementationProject)' == 'true' AND
<ItemGroup Condition=" Exists('$(MSBuildProjectDirectory)\PublicAPI.*.txt') AND
'$(IsImplementationProject)' == 'true' AND
'$(DotNetBuildFromSource)' != 'true' AND '$(DotNetBuildFromSource)' != 'true' AND
! $(RepoRelativeProjectDir.Contains('Tools')) "> ! $(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" /> <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> </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" <Target Name="GetCustomAssemblyAttributes"
BeforeTargets="GetAssemblyAttributes" BeforeTargets="GetAssemblyAttributes"

View File

@ -29,9 +29,9 @@
<ItemGroup Condition="'$(IsWindowsOnlyTest)' != 'true' AND '$(TargetArchitecture)' == 'x64' AND '$(IsHelixDaily)' == 'true'"> <ItemGroup Condition="'$(IsWindowsOnlyTest)' != 'true' AND '$(TargetArchitecture)' == 'x64' AND '$(IsHelixDaily)' == 'true'">
<HelixAvailableTargetQueue Include="Windows.7.Amd64.Open" Platform="Windows" /> <HelixAvailableTargetQueue Include="Windows.7.Amd64.Open" Platform="Windows" />
<HelixAvailableTargetQueue Include="Windows.81.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.1804.Amd64.Open" Platform="Linux" />
<HelixAvailableTargetQueue Include="Ubuntu.2004.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="Debian.9.Amd64.Open" Platform="Linux" />
<HelixAvailableTargetQueue Include="Redhat.7.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" /> <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" /> <HelixPreCommand Include="call RunPowershell.cmd InstallNode.ps1 $(NodeVersion) %25HELIX_CORRELATION_PAYLOAD%25\node\bin || exit /b 1" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition="'$(IsHelixJob)' == 'true' AND '$(TestDependsOnAspNetRuntime)' == 'true'"> <ItemGroup Condition=" '$(TestDependsOnAspNetRuntime)' == 'true' ">
<HelixContent Include="$(RepoRoot)artifacts\packages\Release\Shipping\*-ci.nupkg" /> <!-- Grab all shipping packages. -->
<HelixContent Include="$(RepoRoot)artifacts\packages\$(Configuration)\Shipping\*$(SharedFxVersion).nupkg" />
</ItemGroup> </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)"> <ItemGroup Condition="$(BuildHelixPayload)">
<Content Include="@(HelixContent)" /> <Content Include="@(HelixContent)" />
<Content Include="$(RepoRoot)eng\scripts\Download.ps1" /> <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> </ItemGroup>
<!-- <!--
This target is meant to be used when invoking helix tests on one project at a time.
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
-->
Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj
-->
<Target Name="Helix"> <Target Name="Helix">
<MSBuild Projects="$(MSBuildThisFileDirectory)..\helix\helix.proj" <MSBuild Projects="$(MSBuildThisFileDirectory)..\helix\helix.proj"
Properties="ProjectToBuild=$(MSBuildProjectFullPath)" /> Properties="ProjectToBuild=$(MSBuildProjectFullPath)" />
@ -87,25 +107,6 @@ Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj
</Target> </Target>
<Target Name="_CreateHelixWorkItem" Condition="$(BuildHelixPayload)"> <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> <PropertyGroup>
<!-- Extract the effective queue name from this format "(name)host@dockerimage". This is sometimes used in test code to skip tests. --> <!-- Extract the effective queue name from this format "(name)host@dockerimage". This is sometimes used in test code to skip tests. -->
<_HelixFriendlyNameTargetQueue>$(HelixTargetQueue)</_HelixFriendlyNameTargetQueue> <_HelixFriendlyNameTargetQueue>$(HelixTargetQueue)</_HelixFriendlyNameTargetQueue>
@ -125,8 +126,12 @@ Usage: dotnet msbuild /t:Helix src/MyTestProject.csproj
<TestAssembly>$(TargetFileName)</TestAssembly> <TestAssembly>$(TargetFileName)</TestAssembly>
<PreCommands>@(HelixPreCommand)</PreCommands> <PreCommands>@(HelixPreCommand)</PreCommands>
<PostCommands>@(HelixPostCommand)</PostCommands> <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> <Command Condition="$(HelixCommand) != ''">$(HelixCommand)</Command>
<Timeout>$(HelixTimeout)</Timeout> <Timeout>$(HelixTimeout)</Timeout>
</HelixWorkItem> </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> <Project>
<Target Name="EnsureBaselineIsUpdated" <Target Name="EnsureBaselineIsUpdated"
Condition="'$(IsServicingBuild)' == 'true' AND '$(AspNetCoreBaselineVersion)' != '$(PreviousAspNetCoreReleaseVersion)'" Condition=" '$(IsServicingBuild)' == 'true' AND
'$(AspNetCoreBaselineVersion)' != '$(PreviousAspNetCoreReleaseVersion)' AND
'$(MSBuildProjectName)' != 'BaselineGenerator' AND
'$(MSBuildProjectName)' != 'RepoTasks' "
BeforeTargets="BeforeBuild"> BeforeTargets="BeforeBuild">
<Error Text="The package baseline ($(AspNetCoreBaselineVersion)) is out of date with the latest release of this repo ($(PreviousAspNetCoreReleaseVersion)). <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." /> 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: 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 * LatestPackageReference = a list of the latest versions of packages
* Reference = a list of the references which are needed for compilation or runtime * 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 * ProjectReferenceProvider = a list which maps of assembly names to the project file that produces it
--> -->
<Project> <Project>
<PropertyGroup> <PropertyGroup>
@ -29,36 +30,29 @@
<PropertyGroup> <PropertyGroup>
<!-- <!--
Projects should only use the latest package references when: Projects should use the latest package references when:
* preparing a new major or minor release (i.e. a non-servicing builds) * preparing a new major or minor release i.e. a non-servicing builds
* when a project is a test or sample project * 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) * 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 <UseLatestPackageReferences
Condition=" '$(UseLatestPackageReferences)' == '' AND '$(IsServicingBuild)' != 'true' ">true</UseLatestPackageReferences> Condition=" '$(UseLatestPackageReferences)' == '' AND '$(IsServicingBuild)' != 'true' ">true</UseLatestPackageReferences>
<UseLatestPackageReferences <UseLatestPackageReferences
Condition=" '$(UseLatestPackageReferences)' == '' AND '$(IsImplementationProject)' != 'true' ">true</UseLatestPackageReferences> Condition=" '$(UseLatestPackageReferences)' == '' AND '$(IsPackableInNonServicingBuild)' != 'true' ">true</UseLatestPackageReferences>
<UseLatestPackageReferences <UseLatestPackageReferences
Condition=" '$(UseLatestPackageReferences)' == '' AND '$(IsImplementationProject)' == 'true' AND '$(IsPackable)' == 'true' ">true</UseLatestPackageReferences> Condition=" '$(UseLatestPackageReferences)' == '' AND '$(IsPackageInThisPatch)' == 'true' ">true</UseLatestPackageReferences>
<UseLatestPackageReferences <UseLatestPackageReferences Condition=" '$(UseLatestPackageReferences)' == '' ">false</UseLatestPackageReferences>
Condition=" '$(UseLatestPackageReferences)' == '' ">false</UseLatestPackageReferences>
<!-- <!-- Projects should use project references (instead of baseline packages) in almost all cases. -->
Projects should only use the project references instead of baseline package references when: <UseProjectReferences Condition=" '$(UseProjectReferences)' == '' ">true</UseProjectReferences>
* 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>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup> <ItemDefinitionGroup>
<Reference> <Reference>
<IsSharedSource></IsSharedSource> <IsSharedSource />
</Reference> </Reference>
</ItemDefinitionGroup> </ItemDefinitionGroup>
@ -73,20 +67,21 @@
<!-- Capture a list of references which were set explicitly in the project. --> <!-- Capture a list of references which were set explicitly in the project. -->
<_AllowedExplicitPackageReference Include="@(PackageReference->WithMetadataValue('AllowExplicitReference', 'true'))" /> <_AllowedExplicitPackageReference Include="@(PackageReference->WithMetadataValue('AllowExplicitReference', 'true'))" />
<_AllowedExplicitPackageReference Include="FSharp.Core" Condition="'$(MSBuildProjectExtension)' == '.fsproj'" /> <_AllowedExplicitPackageReference Include="FSharp.Core" Condition="'$(MSBuildProjectExtension)' == '.fsproj'" />
<_ExplicitPackageReference Include="@(PackageReference)" Exclude="@(_ImplicitPackageReference);@(_AllowedExplicitPackageReference)" /> <_ExplicitPackageReference Include="@(PackageReference)"
Exclude="@(_ImplicitPackageReference);@(_AllowedExplicitPackageReference)" />
<_CompilationOnlyReference Condition="'$(TargetFramework)' == 'netstandard2.0'" <_CompilationOnlyReference Include="@(Reference->WithMetadataValue('NuGetPackageId','NETStandard.Library'))"
Include="@(Reference->WithMetadataValue('NuGetPackageId','NETStandard.Library'))" /> Condition="'$(TargetFramework)' == 'netstandard2.0'" />
<_InvalidReferenceToNonSharedFxAssembly Condition="'$(IsAspNetCoreApp)' == 'true'" <_InvalidReferenceToNonSharedFxAssembly Condition="'$(IsAspNetCoreApp)' == 'true'"
Include="@(Reference)" Include="@(Reference)"
Exclude=" Exclude="
@(AspNetCoreAppReference); @(AspNetCoreAppReference);
@(AspNetCoreAppReferenceAndPackage); @(AspNetCoreAppReferenceAndPackage);
@(ExternalAspNetCoreAppReference); @(ExternalAspNetCoreAppReference);
@(_CompilationOnlyReference); @(_CompilationOnlyReference);
@(Reference->WithMetadataValue('IsSharedSource', 'true')); @(Reference->WithMetadataValue('IsSharedSource', 'true'));
@(Reference->WithMetadataValue('PrivateAssets', 'All'))" /> @(Reference->WithMetadataValue('PrivateAssets', 'All'))" />
<_OriginalReferences Include="@(Reference)" /> <_OriginalReferences Include="@(Reference)" />
</ItemGroup> </ItemGroup>
@ -134,7 +129,7 @@
</ItemGroup> </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. 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. 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." /> 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> </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> <PropertyGroup>
<_CompileTfmUsingReferenceAssemblies>false</_CompileTfmUsingReferenceAssemblies> <_CompileTfmUsingReferenceAssemblies>false</_CompileTfmUsingReferenceAssemblies>
<_CompileTfmUsingReferenceAssemblies <_CompileTfmUsingReferenceAssemblies
@ -348,9 +304,12 @@
<!-- This is used by the eng/scripts/AddAllProjectRefsToSolution.ps1 script to traverse the ProjectRef graph --> <!-- This is used by the eng/scripts/AddAllProjectRefsToSolution.ps1 script to traverse the ProjectRef graph -->
<PropertyGroup> <PropertyGroup>
<_CustomCollectProjectReferenceDependsOn Condition="'$(TargetFramework)' != ''">ResolveProjectReferences</_CustomCollectProjectReferenceDependsOn> <_CustomCollectProjectReferenceDependsOn
Condition="'$(TargetFramework)' != ''">ResolveProjectReferences</_CustomCollectProjectReferenceDependsOn>
</PropertyGroup> </PropertyGroup>
<Target Name="_CustomCollectProjectReference" DependsOnTargets="$(_CustomCollectProjectReferenceDependsOn)" Returns="$(MSBuildProjectFullPath);@(_MSBuildProjectReferenceExistent)"> <Target Name="_CustomCollectProjectReference"
DependsOnTargets="$(_CustomCollectProjectReferenceDependsOn)"
Returns="$(MSBuildProjectFullPath);@(_MSBuildProjectReferenceExistent)">
<ItemGroup> <ItemGroup>
<_TargetFrameworks Include="$(TargetFrameworks)" /> <_TargetFrameworks Include="$(TargetFrameworks)" />
</ItemGroup> </ItemGroup>

View File

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

View File

@ -36,15 +36,5 @@
<Reference Include="Microsoft.Deployment.WindowsInstaller.Package"> <Reference Include="Microsoft.Deployment.WindowsInstaller.Package">
<HintPath>$(WiXSdkPath)\Microsoft.Deployment.WindowsInstaller.Package.dll</HintPath> <HintPath>$(WiXSdkPath)\Microsoft.Deployment.WindowsInstaller.Package.dll</HintPath>
</Reference> </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> </ItemGroup>
</Project> </Project>

View File

@ -1,9 +1,9 @@
{ {
"sdk": { "sdk": {
"version": "5.0.100-rc.1.20379.10" "version": "5.0.100-rc.1.20452.10"
}, },
"tools": { "tools": {
"dotnet": "5.0.100-rc.1.20379.10", "dotnet": "5.0.100-rc.1.20452.10",
"runtimes": { "runtimes": {
"dotnet/x64": [ "dotnet/x64": [
"2.1.18", "2.1.18",
@ -30,7 +30,7 @@
}, },
"msbuild-sdks": { "msbuild-sdks": {
"Yarn.MSBuild": "1.15.2", "Yarn.MSBuild": "1.15.2",
"Microsoft.DotNet.Arcade.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.20431.1" "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\\src\\Ignitor.csproj",
"src\\Components\\Ignitor\\test\\Ignitor.Test.csproj", "src\\Components\\Ignitor\\test\\Ignitor.Test.csproj",
"src\\Components\\test\\testassets\\ComponentsApp.Server\\ComponentsApp.Server.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\\Driver\\Wasm.Performance.Driver.csproj",
"src\\Components\\benchmarkapps\\Wasm.Performance\\TestApp\\Wasm.Performance.TestApp.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\\Server\\test\\Microsoft.AspNetCore.Components.WebAssembly.Server.Tests.csproj",
"src\\Components\\WebAssembly\\Authentication.Msal\\src\\Microsoft.Authentication.WebAssembly.Msal.csproj", "src\\Components\\WebAssembly\\Authentication.Msal\\src\\Microsoft.Authentication.WebAssembly.Msal.csproj",
"src\\Components\\WebAssembly\\JSInterop\\src\\Microsoft.JSInterop.WebAssembly.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\\src\\Microsoft.NET.Sdk.BlazorWebAssembly.csproj",
"src\\Components\\WebAssembly\\Sdk\\test\\Microsoft.NET.Sdk.BlazorWebAssembly.Tests.csproj", "src\\Components\\WebAssembly\\Sdk\\test\\Microsoft.NET.Sdk.BlazorWebAssembly.Tests.csproj",
"src\\Components\\WebAssembly\\Sdk\\integrationtests\\Microsoft.NET.Sdk.BlazorWebAssembly.IntegrationTests.csproj", "src\\Components\\WebAssembly\\Sdk\\integrationtests\\Microsoft.NET.Sdk.BlazorWebAssembly.IntegrationTests.csproj",
"src\\JSInterop\\Microsoft.JSInterop\\src\\Microsoft.JSInterop.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"
] ]
} }
} }

View File

@ -4,6 +4,7 @@
using System; using System;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.ComponentModel; using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Globalization; using System.Globalization;
using System.Reflection; using System.Reflection;
@ -22,10 +23,9 @@ namespace Microsoft.AspNetCore.Components
private static readonly object BoxedFalse = false; private static readonly object BoxedFalse = false;
private delegate object? BindFormatter<T>(T value, CultureInfo? culture); 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 BindParser<T>(object? obj, CultureInfo? culture, [MaybeNullWhen(false)] out T value);
internal delegate bool BindParserWithFormat<T>(object? obj, CultureInfo? culture, string? format, out T value); internal delegate bool BindParserWithFormat<T>(object? obj, CultureInfo? culture, string? format, [MaybeNullWhen(false)] out T value);
/// <summary> /// <summary>
/// Formats the provided <paramref name="value"/> as a <see cref="System.String"/>. /// 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); public static string? FormatValue(string? value, CultureInfo? culture = null) => FormatStringValueCore(value, culture);
private static string? FormatStringValueCore(string? value, CultureInfo? 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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) 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 // 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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) 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 // 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); public static string? FormatValue(int value, CultureInfo? culture = null) => FormatIntValueCore(value, culture);
private static string? FormatIntValueCore(int value, CultureInfo? 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); public static string? FormatValue(int? value, CultureInfo? culture = null) => FormatNullableIntValueCore(value, culture);
private static string? FormatNullableIntValueCore(int? value, CultureInfo? 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); public static string FormatValue(long value, CultureInfo? culture = null) => FormatLongValueCore(value, culture);
private static string FormatLongValueCore(long value, CultureInfo? 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); public static string? FormatValue(long? value, CultureInfo? culture = null) => FormatNullableLongValueCore(value, culture);
private static string? FormatNullableLongValueCore(long? value, CultureInfo? 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); public static string FormatValue(short value, CultureInfo? culture = null) => FormatShortValueCore(value, culture);
private static string FormatShortValueCore(short value, CultureInfo? 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); public static string? FormatValue(short? value, CultureInfo? culture = null) => FormatNullableShortValueCore(value, culture);
private static string? FormatNullableShortValueCore(short? value, CultureInfo? 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); public static string FormatValue(float value, CultureInfo? culture = null) => FormatFloatValueCore(value, culture);
private static string FormatFloatValueCore(float value, CultureInfo? 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); public static string? FormatValue(float? value, CultureInfo? culture = null) => FormatNullableFloatValueCore(value, culture);
private static string? FormatNullableFloatValueCore(float? value, CultureInfo? 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); public static string? FormatValue(double value, CultureInfo? culture = null) => FormatDoubleValueCore(value, culture);
private static string FormatDoubleValueCore(double value, CultureInfo? 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); public static string? FormatValue(double? value, CultureInfo? culture = null) => FormatNullableDoubleValueCore(value, culture);
private static string? FormatNullableDoubleValueCore(double? value, CultureInfo? 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); public static string FormatValue(decimal value, CultureInfo? culture = null) => FormatDecimalValueCore(value, culture);
private static string FormatDecimalValueCore(decimal value, CultureInfo? 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); public static string? FormatValue(decimal? value, CultureInfo? culture = null) => FormatNullableDecimalValueCore(value, culture);
private static string? FormatNullableDecimalValueCore(decimal? value, CultureInfo? 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); public static string FormatValue(DateTime value, CultureInfo? culture = null) => FormatDateTimeValueCore(value, format: null, culture);
/// <summary> /// <summary>
@ -317,6 +333,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); 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) 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); public static string? FormatValue(DateTime? value, CultureInfo? culture = null) => FormatNullableDateTimeValueCore(value, format: null, culture);
/// <summary> /// <summary>
@ -353,6 +371,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); 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) 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); 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) 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); public static string? FormatValue(DateTimeOffset? value, CultureInfo? culture = null) => FormatNullableDateTimeOffsetValueCore(value, format: null, culture);
/// <summary> /// <summary>
@ -436,6 +458,7 @@ namespace Microsoft.AspNetCore.Components
/// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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); 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) 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"/>. /// The <see cref="CultureInfo"/> to use while formatting. Defaults to <see cref="CultureInfo.CurrentCulture"/>.
/// </param> /// </param>
/// <returns>The formatted value.</returns> /// <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) public static object? FormatValue<T>(T value, CultureInfo? culture = null)
{ {
var formatter = FormatterDelegateCache.Get<T>(); 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="culture">The <see cref="CultureInfo"/> to use for conversion.</param>
/// <param name="value">The converted value.</param> /// <param name="value">The converted value.</param>
/// <returns><c>true</c> if conversion is successful, otherwise <c>false</c>.</returns> /// <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>(); var converter = ParserDelegateCache.Get<T>();
return converter(obj, culture, out value); return converter(obj, culture, out value);

View File

@ -51,11 +51,11 @@ namespace Microsoft.AspNetCore.Components
/// </summary> /// </summary>
/// <param name="arg">The argument.</param> /// <param name="arg">The argument.</param>
/// <returns>A <see cref="Task"/> which completes asynchronously once event processing has completed.</returns> /// <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) if (Receiver == null)
{ {
return EventCallbackWorkItem.InvokeAsync<object>(Delegate, arg); return EventCallbackWorkItem.InvokeAsync<object?>(Delegate, arg);
} }
return Receiver.HandleEventAsync(new EventCallbackWorkItem(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. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System; using System;
using System.Diagnostics.CodeAnalysis;
using System.Globalization; using System.Globalization;
using static Microsoft.AspNetCore.Components.BindConverter; using static Microsoft.AspNetCore.Components.BindConverter;
@ -31,6 +32,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -50,6 +52,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -69,6 +72,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -88,6 +92,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -107,6 +112,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -126,6 +132,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -145,6 +152,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -164,6 +172,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -183,6 +192,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -202,6 +212,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -221,6 +232,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -240,6 +252,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -259,6 +272,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -278,6 +292,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -297,6 +312,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -316,6 +332,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -336,6 +353,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="format"></param> /// <param name="format"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -356,6 +374,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -376,6 +395,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="format"></param> /// <param name="format"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -396,6 +416,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -416,6 +437,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="format"></param> /// <param name="format"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -436,6 +458,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -456,6 +479,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="format"></param> /// <param name="format"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <returns></returns>
[SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Required to maintain compatibility")]
public static EventCallback<ChangeEventArgs> CreateBinder( public static EventCallback<ChangeEventArgs> CreateBinder(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,
@ -477,6 +501,7 @@ namespace Microsoft.AspNetCore.Components
/// <param name="existingValue"></param> /// <param name="existingValue"></param>
/// <param name="culture"></param> /// <param name="culture"></param>
/// <returns></returns> /// <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>( public static EventCallback<ChangeEventArgs> CreateBinder<T>(
this EventCallbackFactory factory, this EventCallbackFactory factory,
object receiver, object receiver,

View File

@ -46,11 +46,11 @@ namespace Microsoft.AspNetCore.Components
/// </summary> /// </summary>
/// <param name="arg">The argument.</param> /// <param name="arg">The argument.</param>
/// <returns>A <see cref="Task"/> which completes asynchronously once event processing has completed.</returns> /// <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) if (Receiver == null)
{ {
return EventCallbackWorkItem.InvokeAsync<TValue>(Delegate, arg); return EventCallbackWorkItem.InvokeAsync<TValue?>(Delegate, arg);
} }
return Receiver.HandleEventAsync(new EventCallbackWorkItem(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> /// <typeparam name="TValue">The type of the value.</typeparam>
/// <param name="parameterName">The name of the parameter.</param> /// <param name="parameterName">The name of the parameter.</param>
/// <returns>The parameter value if found; otherwise the default value for the specified type.</returns> /// <returns>The parameter value if found; otherwise the default value for the specified type.</returns>
[return: MaybeNull] public TValue? GetValueOrDefault<TValue>(string parameterName)
public TValue GetValueOrDefault<TValue>(string parameterName) => GetValueOrDefault<TValue?>(parameterName, default);
=> GetValueOrDefault<TValue>(parameterName, default!);
/// <summary> /// <summary>
/// Gets the value of the parameter with the specified name, or a specified default value /// 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 // 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 // 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 // Replicate the same attribute omission logic as used elsewhere
if ((attributeValue == null) || (attributeValue is bool boolValue && !boolValue)) if ((attributeValue == null) || (attributeValue is bool boolValue && !boolValue))
{ {
return; return false;
} }
_entries.InsertExpensive(insertAtIndex, RenderTreeFrame.Attribute(sequence, attributeName, attributeValue)); _entries.InsertExpensive(insertAtIndex, RenderTreeFrame.Attribute(sequence, attributeName, attributeValue));
return true;
} }
/// <summary> /// <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 // 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; 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 framesArray = renderTreeBuilder.GetFrames().Array; // Refresh in case it mutated due to the expansion
// Update subtree length for this and all ancestor containers // 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)); 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] [Fact]
public void ExpandsAllAncestorsWhenAddingAttribute() public void ExpandsAllAncestorsWhenAddingAttribute()
{ {

View File

@ -16,7 +16,6 @@
"src\\Components\\Samples\\BlazorServerApp\\BlazorServerApp.csproj", "src\\Components\\Samples\\BlazorServerApp\\BlazorServerApp.csproj",
"src\\Components\\Server\\src\\Microsoft.AspNetCore.Components.Server.csproj", "src\\Components\\Server\\src\\Microsoft.AspNetCore.Components.Server.csproj",
"src\\Components\\Server\\test\\Microsoft.AspNetCore.Components.Server.Tests.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\\Authentication.Msal\\src\\Microsoft.Authentication.WebAssembly.Msal.csproj",
"src\\Components\\WebAssembly\\DevServer\\src\\Microsoft.AspNetCore.Components.WebAssembly.DevServer.csproj", "src\\Components\\WebAssembly\\DevServer\\src\\Microsoft.AspNetCore.Components.WebAssembly.DevServer.csproj",
"src\\Components\\WebAssembly\\JSInterop\\src\\Microsoft.JSInterop.WebAssembly.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\\E2ETest\\Microsoft.AspNetCore.Components.E2ETests.csproj",
"src\\Components\\test\\testassets\\BasicTestApp\\BasicTestApp.csproj", "src\\Components\\test\\testassets\\BasicTestApp\\BasicTestApp.csproj",
"src\\Components\\test\\testassets\\ComponentsApp.Server\\ComponentsApp.Server.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\\TestContentPackage\\TestContentPackage.csproj",
"src\\Components\\test\\testassets\\TestServer\\Components.TestServer.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"
] ]
} }
} }

View File

@ -3,7 +3,7 @@
<BlazorWebAssemblyJSPath>$(RepoRoot)src\Components\Web.JS\dist\$(Configuration)\blazor.webassembly.js</BlazorWebAssemblyJSPath> <BlazorWebAssemblyJSPath>$(RepoRoot)src\Components\Web.JS\dist\$(Configuration)\blazor.webassembly.js</BlazorWebAssemblyJSPath>
<BlazorWebAssemblyJSMapPath>$(BlazorWebAssemblyJSPath).map</BlazorWebAssemblyJSMapPath> <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> <RunCommand>dotnet</RunCommand>
<RunArguments>exec &quot;$(_BlazorDevServerPath)&quot; serve --applicationpath &quot;$(TargetPath)&quot; $(AdditionalRunArguments)</RunArguments> <RunArguments>exec &quot;$(_BlazorDevServerPath)&quot; serve --applicationpath &quot;$(TargetPath)&quot; $(AdditionalRunArguments)</RunArguments>
</PropertyGroup> </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; Timeout = timeout;
Completion = new TaskCompletionSource<TResult>(TaskContinuationOptions.RunContinuationsAsynchronously); Completion = new TaskCompletionSource<TResult>(TaskCreationOptions.RunContinuationsAsynchronously);
Completion.Task.ContinueWith( Completion.Task.ContinueWith(
(task, state) => (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. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System; using System;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Security.Cryptography; using System.Security.Cryptography;
@ -29,7 +28,7 @@ namespace Microsoft.AspNetCore.Components.Server.Circuits
public string Secret { get; } 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. // 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, // 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;
using Microsoft.AspNetCore.Components.Server.BlazorPack; using Microsoft.AspNetCore.Components.Server.BlazorPack;
using Microsoft.AspNetCore.Components.Server.Circuits; using Microsoft.AspNetCore.Components.Server.Circuits;
using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage;
using Microsoft.AspNetCore.SignalR.Protocol; using Microsoft.AspNetCore.SignalR.Protocol;
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
@ -33,6 +34,9 @@ namespace Microsoft.Extensions.DependencyInjection
services.AddDataProtection(); services.AddDataProtection();
services.TryAddScoped<ProtectedLocalStorage>();
services.TryAddScoped<ProtectedSessionStorage>();
// This call INTENTIONALLY uses the AddHubOptions on the SignalR builder, because it will merge // 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 // the global HubOptions before running the configure callback. We want to ensure that happens
// once. Our AddHubOptions method doesn't do this. // once. Our AddHubOptions method doesn't do this.

View File

@ -4,19 +4,17 @@
using System; using System;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Text.Json; using System.Text.Json;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.DataProtection; using Microsoft.AspNetCore.DataProtection;
using Microsoft.JSInterop; using Microsoft.JSInterop;
namespace Microsoft.AspNetCore.Components.ProtectedBrowserStorage namespace Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
{ {
/// <summary> /// <summary>
/// Provides mechanisms for storing and retrieving data in the browser storage. /// Provides mechanisms for storing and retrieving data in the browser storage.
/// </summary> /// </summary>
[UnsupportedOSPlatform("browser")]
public abstract class ProtectedBrowserStorage public abstract class ProtectedBrowserStorage
{ {
private readonly string _storeName; 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="storeName">The name of the store in which the data should be stored.</param>
/// <param name="jsRuntime">The <see cref="IJSRuntime"/>.</param> /// <param name="jsRuntime">The <see cref="IJSRuntime"/>.</param>
/// <param name="dataProtectionProvider">The <see cref="IDataProtectionProvider"/>.</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. // 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"))) if (RuntimeInformation.IsOSPlatform(OSPlatform.Create("BROWSER")))
@ -155,8 +153,8 @@ namespace Microsoft.AspNetCore.Components.ProtectedBrowserStorage
private ValueTask SetProtectedJsonAsync(string key, string protectedJson) private ValueTask SetProtectedJsonAsync(string key, string protectedJson)
=> _jsRuntime.InvokeVoidAsync($"{_storeName}.setItem", key, protectedJson); => _jsRuntime.InvokeVoidAsync($"{_storeName}.setItem", key, protectedJson);
private ValueTask<string> GetProtectedJsonAsync(string key) private ValueTask<string?> GetProtectedJsonAsync(string key)
=> _jsRuntime.InvokeAsync<string>($"{_storeName}.getItem", key); => _jsRuntime.InvokeAsync<string?>($"{_storeName}.getItem", key);
// IDataProtect isn't disposable, so we're fine holding these indefinitely. // 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 // 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. // 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. // 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.Server.ProtectedBrowserStorage
namespace Microsoft.AspNetCore.Components.ProtectedBrowserStorage
{ {
/// <summary> /// <summary>
/// Contains the result of a protected browser storage operation. /// Contains the result of a protected browser storage operation.
/// </summary> /// </summary>
public readonly struct ProtectedBrowserStorageResult<T> public readonly struct ProtectedBrowserStorageResult<TValue>
{ {
/// <summary> /// <summary>
/// Gets whether the operation succeeded. /// Gets whether the operation succeeded.
@ -18,11 +16,9 @@ namespace Microsoft.AspNetCore.Components.ProtectedBrowserStorage
/// <summary> /// <summary>
/// Gets the result value of the operation. /// Gets the result value of the operation.
/// </summary> /// </summary>
[MaybeNull] public TValue? Value { get; }
[AllowNull]
public T Value { get; }
internal ProtectedBrowserStorageResult(bool success, [AllowNull] T value) internal ProtectedBrowserStorageResult(bool success, TValue? value)
{ {
Success = success; Success = success;
Value = value; Value = value;

View File

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

View File

@ -1,11 +1,10 @@
// Copyright (c) .NET Foundation. All rights reserved. // Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // 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.AspNetCore.DataProtection;
using Microsoft.JSInterop; using Microsoft.JSInterop;
namespace Microsoft.AspNetCore.Components.ProtectedBrowserStorage namespace Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
{ {
/// <summary> /// <summary>
/// Provides mechanisms for storing and retrieving data in the browser's /// 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 /// See: https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage
/// </summary> /// </summary>
[UnsupportedOSPlatform("browser")] public sealed class ProtectedSessionStorage : ProtectedBrowserStorage
public class ProtectedSessionStorage : ProtectedBrowserStorage
{ {
/// <summary> /// <summary>
/// Constructs an instance of <see cref="ProtectedSessionStorage"/>. /// 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 Microsoft.JSInterop;
using Xunit; using Xunit;
namespace Microsoft.AspNetCore.Components.ProtectedBrowserStorage namespace Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
{ {
public class ProtectedBrowserStorageTest 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.addEventListener('unload', cleanup, { capture: false, once: true });
window['Blazor'].reconnect = reconnect; window['Blazor'].reconnect = reconnect;

View File

@ -130,7 +130,16 @@ function invokeJSFromDotNet(callInfo: Pointer, arg0: any, arg1: any, arg2: any):
} }
} else { } else {
const func = DotNet.jsCallDispatcher.findJSFunction(functionIdentifier, targetInstanceId); 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; lastModified: string;
name: string; name: string;
size: number; size: number;
type: string; contentType: string;
readPromise: Promise<ArrayBuffer> | undefined; readPromise: Promise<ArrayBuffer> | undefined;
arrayBuffer: ArrayBuffer | undefined; arrayBuffer: ArrayBuffer | undefined;
} }
@ -42,7 +42,7 @@ function init(callbackWrapper: any, elem: InputElement): void {
lastModified: new Date(file.lastModified).toISOString(), lastModified: new Date(file.lastModified).toISOString(),
name: file.name, name: file.name,
size: file.size, size: file.size,
type: file.type, contentType: file.type,
readPromise: undefined, readPromise: undefined,
arrayBuffer: undefined, arrayBuffer: undefined,
}; };
@ -86,7 +86,7 @@ async function toImageFile(elem: InputElement, fileId: number, format: string, m
lastModified: originalFile.lastModified, lastModified: originalFile.lastModified,
name: originalFile.name, name: originalFile.name,
size: resizedImageBlob?.size || 0, size: resizedImageBlob?.size || 0,
type: format, contentType: format,
readPromise: undefined, readPromise: undefined,
arrayBuffer: undefined, arrayBuffer: undefined,
}; };

View File

@ -26,6 +26,7 @@ export interface BootJsonData {
readonly linkerEnabled: boolean; readonly linkerEnabled: boolean;
readonly cacheBootResources: boolean; readonly cacheBootResources: boolean;
readonly config: string[]; readonly config: string[];
readonly icuDataMode: ICUDataMode;
} }
export interface ResourceGroups { export interface ResourceGroups {
@ -37,3 +38,9 @@ export interface ResourceGroups {
} }
export type ResourceList = { [name: string]: string }; 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 { WebAssemblyResourceLoader, LoadingResource } from '../WebAssemblyResourceLoader';
import { Platform, System_Array, Pointer, System_Object, System_String, HeapLock } from '../Platform'; import { Platform, System_Array, Pointer, System_Object, System_String, HeapLock } from '../Platform';
import { WebAssemblyBootResourceType } from '../WebAssemblyStartOptions'; import { WebAssemblyBootResourceType } from '../WebAssemblyStartOptions';
import { BootJsonData, ICUDataMode } from '../BootConfig';
let mono_wasm_add_assembly: (name: string, heapAddress: number, length: number) => void; let mono_wasm_add_assembly: (name: string, heapAddress: number, length: number) => void;
const appBinDirName = 'appBinDir'; const appBinDirName = 'appBinDir';
const icuDataResourceName = 'icudt.dat';
const uint64HighOrderShift = Math.pow(2, 32); const uint64HighOrderShift = Math.pow(2, 32);
const maxSafeNumberHighPart = Math.pow(2, 21) - 1; // The high-order int32 from Number.MAX_SAFE_INTEGER 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; return ((baseAddress as any as number) + (fieldOffset || 0)) as any as T;
}, },
beginHeapLock: function() { beginHeapLock: function () {
assertHeapIsNotLocked(); assertHeapIsNotLocked();
currentHeapLock = new MonoHeapLock(); currentHeapLock = new MonoHeapLock();
return currentHeapLock; 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. // This is somewhat like a sync context. If we're not locked, just pass through the call directly.
if (!currentHeapLock) { if (!currentHeapLock) {
callback(); callback();
@ -183,7 +183,7 @@ function addScriptTagsToDocument(resourceLoader: WebAssemblyResourceLoader) {
const resourceType: WebAssemblyBootResourceType = 'dotnetjs'; const resourceType: WebAssemblyBootResourceType = 'dotnetjs';
const customSrc = resourceLoader.startOptions.loadBootResource( const customSrc = resourceLoader.startOptions.loadBootResource(
resourceType, dotnetJsResourceName, scriptElem.src, dotnetJsContentHash); resourceType, dotnetJsResourceName, scriptElem.src, dotnetJsContentHash);
if (typeof(customSrc) === 'string') { if (typeof (customSrc) === 'string') {
scriptElem.src = customSrc; scriptElem.src = customSrc;
} else if (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) // 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) { function createEmscriptenModuleInstance(resourceLoader: WebAssemblyResourceLoader, onReady: () => void, onError: (reason?: any) => void) {
const resources = resourceLoader.bootConfig.resources; const resources = resourceLoader.bootConfig.resources;
const module = (window['Module'] || { }) as typeof Module; const module = (window['Module'] || {}) as typeof Module;
const suppressMessages = ['DEBUGGING ENABLED']; const suppressMessages = ['DEBUGGING ENABLED'];
module.print = line => (suppressMessages.indexOf(line) < 0 && console.log(line)); module.print = line => (suppressMessages.indexOf(line) < 0 && console.log(line));
@ -250,7 +250,9 @@ function createEmscriptenModuleInstance(resourceLoader: WebAssemblyResourceLoade
} }
let icuDataResource: LoadingResource | undefined; 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( icuDataResource = resourceLoader.loadResource(
icuDataResourceName, icuDataResourceName,
`_framework/${icuDataResourceName}`, `_framework/${icuDataResourceName}`,
@ -287,7 +289,7 @@ function createEmscriptenModuleInstance(resourceLoader: WebAssemblyResourceLoade
loadICUData(icuDataResource); loadICUData(icuDataResource);
} else { } else {
// Use invariant culture if the app does not carry icu data. // 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 // 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 // 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. // 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 culturesToLoad = BINDING.mono_array_to_js_array<System_String, string>(culturesToLoadDotNetArray);
const satelliteResources = resourceLoader.bootConfig.resources.satelliteResources; const satelliteResources = resourceLoader.bootConfig.resources.satelliteResources;
const applicationCulture = resourceLoader.startOptions.applicationCulture || (navigator.languages && navigator.languages[0]);
if (satelliteResources) { if (satelliteResources) {
const resourcePromises = Promise.all(culturesToLoad const resourcePromises = Promise.all(culturesToLoad
.filter(culture => satelliteResources.hasOwnProperty(culture)) .filter(culture => satelliteResources.hasOwnProperty(culture))
.map(culture => resourceLoader.loadResources(satelliteResources[culture], fileName => `_framework/${fileName}`, 'assembly')) .map(culture => resourceLoader.loadResources(satelliteResources[culture], fileName => `_framework/${fileName}`, 'assembly'))
.reduce((previous, next) => previous.concat(next), new Array<LoadingResource>()) .reduce((previous, next) => previous.concat(next), new Array<LoadingResource>())
.map(async resource => (await resource.response).arrayBuffer())); .map(async resource => (await resource.response).arrayBuffer()));
return BINDING.js_to_mono_obj( return BINDING.js_to_mono_obj(
resourcePromises.then(resourcesToLoad => { 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]))); BINDING.mono_obj_array_set(array, i, BINDING.js_typed_array_to_array(new Uint8Array(resourcesToLoad[i])));
} }
return array; return array;
}; };
} }
return resourcesToLoad.length; return resourcesToLoad.length;
})); }));
} }
return BINDING.js_to_mono_obj(Promise.resolve(0)); 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 assembliesToLoad = BINDING.mono_array_to_js_array<System_String, string>(assembliesToLoadDotNetArray);
const lazyAssemblies = resourceLoader.bootConfig.resources.lazyAssembly; 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.`); 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 let pdbPromises: Promise<(ArrayBuffer | null)[]> | undefined;
.map(assembly => resourceLoader.loadResource(assembly, `_framework/${assembly}`, lazyAssemblies[assembly], 'assembly')) if (hasDebuggingEnabled()) {
.map(async resource => (await resource.response).arrayBuffer())); 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( const resourcePromises = Promise.all(assembliesMarkedAsLazy
resourcePromises.then(resourcesToLoad => { .map(assembly => resourceLoader.loadResource(assembly, `_framework/${assembly}`, lazyAssemblies[assembly], 'assembly'))
if (resourcesToLoad.length) { .map(async resource => (await resource.response).arrayBuffer()));
window['Blazor']._internal.readLazyAssemblies = () => {
const array = BINDING.mono_obj_array_new(resourcesToLoad.length); return BINDING.js_to_mono_obj(
for (var i = 0; i < resourcesToLoad.length; i++) { Promise.all([resourcePromises, pdbPromises]).then(values => {
BINDING.mono_obj_array_set(array, i, BINDING.js_typed_array_to_array(new Uint8Array(resourcesToLoad[i]))); const resourcesToLoad = values[0];
} const pdbsToLoad = values[1];
return array; 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; return resourcesToLoad.length;
})); }));
} }
}); });
module.postRun.push(() => { module.postRun.push(() => {
@ -373,6 +399,14 @@ function createEmscriptenModuleInstance(resourceLoader: WebAssemblyResourceLoade
} }
resourceLoader.purgeUnusedCacheEntriesAsync(); // Don't await - it's fine to run in background 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"); MONO.mono_wasm_setenv("MONO_URI_DOTNETRELATIVEORABSOLUTE", "true");
let timeZone = "UTC"; let timeZone = "UTC";
try { try {
@ -385,7 +419,7 @@ function createEmscriptenModuleInstance(resourceLoader: WebAssemblyResourceLoade
const load_runtime = cwrap('mono_wasm_load_runtime', null, ['string', 'number']); const load_runtime = cwrap('mono_wasm_load_runtime', null, ['string', 'number']);
// -1 enables debugging with logging disabled. 0 disables debugging entirely. // -1 enables debugging with logging disabled. 0 disables debugging entirely.
load_runtime(appBinDirName, hasDebuggingEnabled() ? -1 : 0); load_runtime(appBinDirName, hasDebuggingEnabled() ? -1 : 0);
MONO.mono_wasm_runtime_ready (); MONO.mono_wasm_runtime_ready();
attachInteropInvoker(); attachInteropInvoker();
onReady(); onReady();
}); });
@ -408,8 +442,8 @@ function createEmscriptenModuleInstance(resourceLoader: WebAssemblyResourceLoade
mono_wasm_add_assembly(loadAsName, heapAddress, data.length); mono_wasm_add_assembly(loadAsName, heapAddress, data.length);
MONO.loaded_files.push(toAbsoluteUrl(dependency.url)); MONO.loaded_files.push(toAbsoluteUrl(dependency.url));
} catch (errorInfo) { } catch (errorInfo) {
onError(errorInfo); onError(errorInfo);
return; return;
} }
removeRunDependency(runDependencyId); removeRunDependency(runDependencyId);
@ -433,7 +467,7 @@ function bindStaticMethod(assembly: string, typeName: string, method: string) {
} }
function attachInteropInvoker(): void { 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 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'); const dotNetDispatcherEndInvokeJSMethodHandle = bindStaticMethod('Microsoft.AspNetCore.Components.WebAssembly', 'Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime', 'EndInvokeJS');
@ -449,12 +483,12 @@ function attachInteropInvoker(): void {
? dotNetObjectId.toString() ? dotNetObjectId.toString()
: assemblyName; : assemblyName;
dotNetDispatcherBeginInvokeMethodHandle( dotNetDispatcherBeginInvokeMethodHandle(
callId ? callId.toString() : null, callId ? callId.toString() : null,
assemblyNameOrDotNetObjectId, assemblyNameOrDotNetObjectId,
methodIdentifier, methodIdentifier,
argsJson, argsJson,
); );
}, },
endInvokeJSFromDotNet: (asyncHandle, succeeded, serializedArgs): void => { endInvokeJSFromDotNet: (asyncHandle, succeeded, serializedArgs): void => {
dotNetDispatcherEndInvokeJSMethodHandle( 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`; const runDependencyId = `blazor:timezonedata`;
addRunDependency(runDependencyId); addRunDependency(runDependencyId);
@ -488,7 +522,23 @@ async function loadTimezone(timeZoneResource: LoadingResource) : Promise<void> {
removeRunDependency(runDependencyId); 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`; const runDependencyId = `blazor:icudata`;
addRunDependency(runDependencyId); addRunDependency(runDependencyId);
@ -496,8 +546,7 @@ async function loadICUData(icuDataResource: LoadingResource) : Promise<void> {
const array = new Uint8Array(await request.arrayBuffer()); const array = new Uint8Array(await request.arrayBuffer());
const offset = MONO.mono_wasm_load_bytes_into_heap(array); 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."); throw new Error("Error loading ICU asset.");
} }
removeRunDependency(runDependencyId); removeRunDependency(runDependencyId);

View File

@ -165,9 +165,9 @@ async function getCacheToUseIfEnabled(bootConfig: BootJsonData): Promise<Cache |
return null; 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 // in this case, we want to disable caching and integrity validation
if (document.location.protocol !== 'https:') { if (window.isSecureContext === false) {
return null; return null;
} }

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