Merge branch 'master' into merge/release/5.0-preview2-to-master
This commit is contained in:
commit
e98e85712c
|
|
@ -254,6 +254,38 @@ stages:
|
||||||
- name: Windows_arm_Packages
|
- name: Windows_arm_Packages
|
||||||
path: artifacts/packages/
|
path: artifacts/packages/
|
||||||
|
|
||||||
|
# Build Windows ARM64
|
||||||
|
- template: jobs/default-build.yml
|
||||||
|
parameters:
|
||||||
|
codeSign: true
|
||||||
|
jobName: Windows_64_build
|
||||||
|
jobDisplayName: "Build: Windows ARM64"
|
||||||
|
agentOs: Windows
|
||||||
|
buildArgs:
|
||||||
|
-arch arm64
|
||||||
|
-sign
|
||||||
|
-pack
|
||||||
|
-noBuildNodeJS
|
||||||
|
-noBuildJava
|
||||||
|
/bl:artifacts/log/build.win-arm64.binlog
|
||||||
|
/p:DotNetSignType=$(_SignType)
|
||||||
|
/p:OnlyPackPlatformSpecificPackages=true
|
||||||
|
/p:AssetManifestFileName=aspnetcore-win-arm64.xml
|
||||||
|
$(_BuildArgs)
|
||||||
|
$(_PublishArgs)
|
||||||
|
$(_InternalRuntimeDownloadArgs)
|
||||||
|
installNodeJs: false
|
||||||
|
installJdk: false
|
||||||
|
artifacts:
|
||||||
|
- name: Windows_arm64_Logs
|
||||||
|
path: artifacts/log/
|
||||||
|
publishOnError: true
|
||||||
|
includeForks: true
|
||||||
|
- name: Windows_arm64_Packages
|
||||||
|
path: artifacts/packages/
|
||||||
|
- name: Windows_arm64_Installers
|
||||||
|
path: artifacts/installers/
|
||||||
|
|
||||||
# Build MacOS
|
# Build MacOS
|
||||||
- template: jobs/default-build.yml
|
- template: jobs/default-build.yml
|
||||||
parameters:
|
parameters:
|
||||||
|
|
|
||||||
|
|
@ -32,10 +32,10 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
# Build the shared framework
|
# Build the shared framework
|
||||||
- script: ./build.cmd -ci -all -pack -arch x64 -buildNative /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log /bl:artifacts/log/helix.build.x64.binlog
|
- script: ./build.cmd -ci -all -pack -arch x64 -buildNative /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log /bl:artifacts/log/helix.build.x64.binlog
|
||||||
displayName: Build shared fx
|
displayName: Build shared fx
|
||||||
- script: .\restore.cmd -ci
|
- script: .\restore.cmd -ci
|
||||||
displayName: Restore
|
displayName: Restore
|
||||||
- script: .\build.cmd -ci -NoRestore -test -projects eng\helix\helix.proj /p:RunQuarantinedTests=true /p:IsRequiredCheck=true /p:IsHelixJob=true /p:BuildAllProjects=true /p:BuildNative=true /p:RunTemplateTests=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log -bl
|
- script: .\build.cmd -ci -NoRestore -test -noBuildJava -projects eng\helix\helix.proj /p:RunQuarantinedTests=true /p:IsRequiredCheck=true /p:IsHelixJob=true /p:BuildAllProjects=true /p:BuildNative=true /p:RunTemplateTests=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log -bl
|
||||||
displayName: Run build.cmd helix target
|
displayName: Run build.cmd helix target
|
||||||
env:
|
env:
|
||||||
HelixApiAccessToken: $(HelixApiAccessToken) # Needed for internal queues
|
HelixApiAccessToken: $(HelixApiAccessToken) # Needed for internal queues
|
||||||
|
|
|
||||||
|
|
@ -123,6 +123,7 @@
|
||||||
win-x64;
|
win-x64;
|
||||||
win-x86;
|
win-x86;
|
||||||
win-arm;
|
win-arm;
|
||||||
|
win-arm64;
|
||||||
osx-x64;
|
osx-x64;
|
||||||
linux-musl-x64;
|
linux-musl-x64;
|
||||||
linux-musl-arm64;
|
linux-musl-arm64;
|
||||||
|
|
|
||||||
|
|
@ -118,7 +118,7 @@ param(
|
||||||
[ValidateSet('Debug', 'Release')]
|
[ValidateSet('Debug', 'Release')]
|
||||||
$Configuration,
|
$Configuration,
|
||||||
|
|
||||||
[ValidateSet('x64', 'x86', 'arm')]
|
[ValidateSet('x64', 'x86', 'arm', 'arm64')]
|
||||||
$Architecture = 'x64',
|
$Architecture = 'x64',
|
||||||
|
|
||||||
# A list of projects which should be built.
|
# A list of projects which should be built.
|
||||||
|
|
@ -157,7 +157,7 @@ param(
|
||||||
|
|
||||||
# Other lifecycle targets
|
# Other lifecycle targets
|
||||||
[switch]$Help, # Show help
|
[switch]$Help, # Show help
|
||||||
|
|
||||||
# Optional arguments that enable downloading an internal
|
# Optional arguments that enable downloading an internal
|
||||||
# runtime or runtime from a non-default location
|
# runtime or runtime from a non-default location
|
||||||
[string]$DotNetRuntimeSourceFeed,
|
[string]$DotNetRuntimeSourceFeed,
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,7 @@ and are generated based on the last package release.
|
||||||
<LatestPackageReference Include="microsoft.netcore.app.runtime.win-x64" Version="$(MicrosoftNETCoreAppRuntimeVersion)" />
|
<LatestPackageReference Include="microsoft.netcore.app.runtime.win-x64" Version="$(MicrosoftNETCoreAppRuntimeVersion)" />
|
||||||
<LatestPackageReference Include="microsoft.netcore.app.runtime.win-x86" Version="$(MicrosoftNETCoreAppRuntimeVersion)" />
|
<LatestPackageReference Include="microsoft.netcore.app.runtime.win-x86" Version="$(MicrosoftNETCoreAppRuntimeVersion)" />
|
||||||
<LatestPackageReference Include="microsoft.netcore.app.runtime.win-arm" Version="$(MicrosoftNETCoreAppRuntimeVersion)" />
|
<LatestPackageReference Include="microsoft.netcore.app.runtime.win-arm" Version="$(MicrosoftNETCoreAppRuntimeVersion)" />
|
||||||
|
<LatestPackageReference Include="microsoft.netcore.app.runtime.win-arm64" Version="$(MicrosoftNETCoreAppRuntimeVersion)" />
|
||||||
<LatestPackageReference Include="microsoft.netcore.app.runtime.osx-x64" Version="$(MicrosoftNETCoreAppRuntimeVersion)" />
|
<LatestPackageReference Include="microsoft.netcore.app.runtime.osx-x64" Version="$(MicrosoftNETCoreAppRuntimeVersion)" />
|
||||||
<LatestPackageReference Include="microsoft.netcore.app.runtime.linux-x64" Version="$(MicrosoftNETCoreAppRuntimeVersion)" />
|
<LatestPackageReference Include="microsoft.netcore.app.runtime.linux-x64" Version="$(MicrosoftNETCoreAppRuntimeVersion)" />
|
||||||
<LatestPackageReference Include="microsoft.netcore.app.runtime.linux-arm" Version="$(MicrosoftNETCoreAppRuntimeVersion)" />
|
<LatestPackageReference Include="microsoft.netcore.app.runtime.linux-arm" Version="$(MicrosoftNETCoreAppRuntimeVersion)" />
|
||||||
|
|
|
||||||
|
|
@ -93,9 +93,11 @@
|
||||||
<_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" />
|
||||||
<_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-arm\shared\Microsoft.NETCore.App\**\*.dll" CertificateName="None" />
|
<_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-arm\shared\Microsoft.NETCore.App\**\*.dll" CertificateName="None" />
|
||||||
|
<_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-arm64\shared\Microsoft.NETCore.App\**\*.dll" CertificateName="None" />
|
||||||
<_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-x64\host\**\*.dll" CertificateName="None" />
|
<_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-x64\host\**\*.dll" CertificateName="None" />
|
||||||
<_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-x86\host\**\*.dll" CertificateName="None" />
|
<_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-x86\host\**\*.dll" CertificateName="None" />
|
||||||
<_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-arm\host\**\*.dll" CertificateName="None" />
|
<_DotNetFilesToExclude Include="$(BaseRedistNetCorePath)win-arm\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" />
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,336 +13,340 @@
|
||||||
<Uri>https://github.com/dotnet/blazor</Uri>
|
<Uri>https://github.com/dotnet/blazor</Uri>
|
||||||
<Sha>dd7fb4d3931d556458f62642c2edfc59f6295bfb</Sha>
|
<Sha>dd7fb4d3931d556458f62642c2edfc59f6295bfb</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.AspNetCore.Razor.Language" Version="5.0.0-preview.2.20160.3">
|
<Dependency Name="Microsoft.AspNetCore.Razor.Language" Version="5.0.0-preview.3.20157.1">
|
||||||
<Uri>https://github.com/dotnet/aspnetcore-tooling</Uri>
|
<Uri>https://github.com/dotnet/aspnetcore-tooling</Uri>
|
||||||
<Sha>5cf08065b968b04aa07664d9291fdae004b413e7</Sha>
|
<Sha>cc921d78edc850e3214917274d117bcc1450884b</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.AspNetCore.Mvc.Razor.Extensions" Version="5.0.0-preview.2.20160.3">
|
<Dependency Name="Microsoft.AspNetCore.Mvc.Razor.Extensions" Version="5.0.0-preview.3.20157.1">
|
||||||
<Uri>https://github.com/dotnet/aspnetcore-tooling</Uri>
|
<Uri>https://github.com/dotnet/aspnetcore-tooling</Uri>
|
||||||
<Sha>5cf08065b968b04aa07664d9291fdae004b413e7</Sha>
|
<Sha>cc921d78edc850e3214917274d117bcc1450884b</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.CodeAnalysis.Razor" Version="5.0.0-preview.2.20160.3">
|
<Dependency Name="Microsoft.CodeAnalysis.Razor" Version="5.0.0-preview.3.20157.1">
|
||||||
<Uri>https://github.com/dotnet/aspnetcore-tooling</Uri>
|
<Uri>https://github.com/dotnet/aspnetcore-tooling</Uri>
|
||||||
<Sha>5cf08065b968b04aa07664d9291fdae004b413e7</Sha>
|
<Sha>cc921d78edc850e3214917274d117bcc1450884b</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.NET.Sdk.Razor" Version="5.0.0-preview.2.20160.3">
|
<Dependency Name="Microsoft.NET.Sdk.Razor" Version="5.0.0-preview.3.20157.1">
|
||||||
<Uri>https://github.com/dotnet/aspnetcore-tooling</Uri>
|
<Uri>https://github.com/dotnet/aspnetcore-tooling</Uri>
|
||||||
<Sha>5cf08065b968b04aa07664d9291fdae004b413e7</Sha>
|
<Sha>cc921d78edc850e3214917274d117bcc1450884b</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="dotnet-ef" Version="5.0.0-preview.2.20159.4">
|
<Dependency Name="dotnet-ef" Version="5.0.0-preview.3.20160.3">
|
||||||
<Uri>https://github.com/dotnet/efcore</Uri>
|
<Uri>https://github.com/dotnet/efcore</Uri>
|
||||||
<Sha>b42460865c9301de83e966987de02686cedbe166</Sha>
|
<Sha>9bad189861bded96caf604294628134de6b250cc</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.EntityFrameworkCore.InMemory" Version="5.0.0-preview.2.20159.4">
|
<Dependency Name="Microsoft.EntityFrameworkCore.InMemory" Version="5.0.0-preview.3.20160.3">
|
||||||
<Uri>https://github.com/dotnet/efcore</Uri>
|
<Uri>https://github.com/dotnet/efcore</Uri>
|
||||||
<Sha>b42460865c9301de83e966987de02686cedbe166</Sha>
|
<Sha>9bad189861bded96caf604294628134de6b250cc</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.EntityFrameworkCore.Relational" Version="5.0.0-preview.2.20159.4">
|
<Dependency Name="Microsoft.EntityFrameworkCore.Relational" Version="5.0.0-preview.3.20160.3">
|
||||||
<Uri>https://github.com/dotnet/efcore</Uri>
|
<Uri>https://github.com/dotnet/efcore</Uri>
|
||||||
<Sha>b42460865c9301de83e966987de02686cedbe166</Sha>
|
<Sha>9bad189861bded96caf604294628134de6b250cc</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.0-preview.2.20159.4">
|
<Dependency Name="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.0-preview.3.20160.3">
|
||||||
<Uri>https://github.com/dotnet/efcore</Uri>
|
<Uri>https://github.com/dotnet/efcore</Uri>
|
||||||
<Sha>b42460865c9301de83e966987de02686cedbe166</Sha>
|
<Sha>9bad189861bded96caf604294628134de6b250cc</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.0-preview.2.20159.4">
|
<Dependency Name="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.0-preview.3.20160.3">
|
||||||
<Uri>https://github.com/dotnet/efcore</Uri>
|
<Uri>https://github.com/dotnet/efcore</Uri>
|
||||||
<Sha>b42460865c9301de83e966987de02686cedbe166</Sha>
|
<Sha>9bad189861bded96caf604294628134de6b250cc</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.EntityFrameworkCore.Tools" Version="5.0.0-preview.2.20159.4">
|
<Dependency Name="Microsoft.EntityFrameworkCore.Tools" Version="5.0.0-preview.3.20160.3">
|
||||||
<Uri>https://github.com/dotnet/efcore</Uri>
|
<Uri>https://github.com/dotnet/efcore</Uri>
|
||||||
<Sha>b42460865c9301de83e966987de02686cedbe166</Sha>
|
<Sha>9bad189861bded96caf604294628134de6b250cc</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.EntityFrameworkCore" Version="5.0.0-preview.2.20159.4">
|
<Dependency Name="Microsoft.EntityFrameworkCore" Version="5.0.0-preview.3.20160.3">
|
||||||
<Uri>https://github.com/dotnet/efcore</Uri>
|
<Uri>https://github.com/dotnet/efcore</Uri>
|
||||||
<Sha>b42460865c9301de83e966987de02686cedbe166</Sha>
|
<Sha>9bad189861bded96caf604294628134de6b250cc</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.AspNetCore.Analyzer.Testing" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.AspNetCore.Analyzer.Testing" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Caching.Abstractions" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Caching.Abstractions" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Caching.Memory" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Caching.Memory" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Caching.SqlServer" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Caching.SqlServer" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Caching.StackExchangeRedis" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Caching.StackExchangeRedis" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Configuration.Abstractions" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Configuration.Abstractions" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Configuration.Binder" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Configuration.AzureKeyVault" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Configuration.CommandLine" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Configuration.Binder" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Configuration.CommandLine" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Configuration.FileExtensions" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Configuration.Ini" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Configuration.FileExtensions" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Configuration.Json" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Configuration.Ini" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Configuration.UserSecrets" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Configuration.Json" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Configuration.Xml" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Configuration.UserSecrets" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Configuration" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Configuration.Xml" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Configuration" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.DependencyInjection" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.DiagnosticAdapter" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.DependencyInjection" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.FileProviders.Abstractions" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.DiagnosticAdapter" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.FileProviders.Composite" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.FileProviders.Abstractions" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.FileProviders.Physical" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.FileProviders.Composite" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.FileSystemGlobbing" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.FileProviders.Physical" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Hosting.Abstractions" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.FileSystemGlobbing" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Hosting" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Hosting.Abstractions" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Http" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Hosting" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Http" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Logging.AzureAppServices" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Logging.Configuration" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Logging.AzureAppServices" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Logging.Console" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Logging.Configuration" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Logging.Debug" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Logging.Console" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Logging.EventSource" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Logging.Debug" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Logging.EventLog" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Logging.EventSource" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Logging.TraceSource" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Logging.EventLog" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Logging.Testing" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Logging.TraceSource" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Logging" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Logging.Testing" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Options.ConfigurationExtensions" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Logging" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Options.DataAnnotations" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Options.ConfigurationExtensions" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Options" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Options.DataAnnotations" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Primitives" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Options" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Internal.Extensions.Refs" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Microsoft.Extensions.Primitives" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Win32.Registry" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="Microsoft.Internal.Extensions.Refs" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
|
</Dependency>
|
||||||
|
<Dependency Name="Microsoft.Win32.Registry" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Win32.SystemEvents" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="Microsoft.Win32.SystemEvents" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.ComponentModel.Annotations" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.ComponentModel.Annotations" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.Diagnostics.EventLog" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.Diagnostics.EventLog" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.Drawing.Common" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.Drawing.Common" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.IO.Pipelines" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.IO.Pipelines" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.Net.Http.WinHttpHandler" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.Net.Http.WinHttpHandler" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.Net.WebSockets.WebSocketProtocol" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.Net.WebSockets.WebSocketProtocol" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.Reflection.Metadata" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.Reflection.Metadata" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.Runtime.CompilerServices.Unsafe" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.Runtime.CompilerServices.Unsafe" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.Security.Cryptography.Cng" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.Security.Cryptography.Cng" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.Security.Cryptography.Pkcs" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.Security.Cryptography.Pkcs" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.Security.Cryptography.Xml" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.Security.Cryptography.Xml" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.Security.Permissions" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.Security.Permissions" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.Security.Principal.Windows" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.Security.Principal.Windows" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.ServiceProcess.ServiceController" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.ServiceProcess.ServiceController" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.Text.Encodings.Web" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.Text.Encodings.Web" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.Text.Json" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.Text.Json" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.Threading.Channels" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.Threading.Channels" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="System.Windows.Extensions" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="System.Windows.Extensions" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.DependencyModel" Version="5.0.0-preview.2-runtime.20160.6" CoherentParentDependency="Microsoft.Extensions.Logging">
|
<Dependency Name="Microsoft.Extensions.DependencyModel" Version="5.0.0-preview.2-runtime.20155.3" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.NETCore.App.Ref" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.Extensions.Logging">
|
<Dependency Name="Microsoft.NETCore.App.Ref" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</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-preview.2.20160.6" CoherentParentDependency="Microsoft.Extensions.Logging">
|
<Dependency Name="Microsoft.NETCore.App.Runtime.win-x64" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.NETCore.App.Internal" Version="5.0.0-preview.2.20160.6" CoherentParentDependency="Microsoft.Extensions.Logging">
|
<Dependency Name="Microsoft.NETCore.App.Internal" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="NETStandard.Library.Ref" Version="2.1.0-preview.2.20160.6" CoherentParentDependency="Microsoft.Extensions.Logging">
|
<Dependency Name="NETStandard.Library.Ref" Version="2.1.0-preview.2.20155.3" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</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-preview.2.20160.6" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
<Dependency Name="Microsoft.NETCore.Platforms" Version="5.0.0-preview.2.20155.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
|
||||||
<Uri>https://github.com/dotnet/runtime</Uri>
|
<Uri>https://github.com/dotnet/runtime</Uri>
|
||||||
<Sha>d12f79a4d1b908636b96005fe30f547e54cea3ee</Sha>
|
<Sha>2f6e072c97738a56eeeb25f1fdb5dcc955649db0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Internal.AspNetCore.Analyzers" Version="5.0.0-preview.2.20160.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
<Dependency Name="Internal.AspNetCore.Analyzers" Version="5.0.0-preview.3.20156.3" CoherentParentDependency="Microsoft.AspNetCore.Razor.Language">
|
||||||
<Uri>https://github.com/dotnet/extensions</Uri>
|
<Uri>https://github.com/dotnet/extensions</Uri>
|
||||||
<Sha>e9e40b4686cce3b7e8248f4f9edd47b004e1b52d</Sha>
|
<Sha>540b4e8f129a132749a60174464b8c8274bfed7d</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.DotNet.GenAPI" Version="5.0.0-beta.20151.1">
|
<Dependency Name="Microsoft.DotNet.GenAPI" Version="5.0.0-beta.20158.2">
|
||||||
<Uri>https://github.com/dotnet/arcade</Uri>
|
<Uri>https://github.com/dotnet/arcade</Uri>
|
||||||
<Sha>8ccad075bbb0db445e03eed0a6073d27bdd4f31a</Sha>
|
<Sha>527179abfbb5cd738035c4ac2d2566c571ce85db</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="5.0.0-beta.20151.1">
|
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="5.0.0-beta.20158.2">
|
||||||
<Uri>https://github.com/dotnet/arcade</Uri>
|
<Uri>https://github.com/dotnet/arcade</Uri>
|
||||||
<Sha>8ccad075bbb0db445e03eed0a6073d27bdd4f31a</Sha>
|
<Sha>527179abfbb5cd738035c4ac2d2566c571ce85db</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.DotNet.Helix.Sdk" Version="5.0.0-beta.20151.1">
|
<Dependency Name="Microsoft.DotNet.Helix.Sdk" Version="5.0.0-beta.20158.2">
|
||||||
<Uri>https://github.com/dotnet/arcade</Uri>
|
<Uri>https://github.com/dotnet/arcade</Uri>
|
||||||
<Sha>8ccad075bbb0db445e03eed0a6073d27bdd4f31a</Sha>
|
<Sha>527179abfbb5cd738035c4ac2d2566c571ce85db</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="3.5.0-beta4-20153-05" CoherentParentDependency="Microsoft.Extensions.Logging">
|
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="3.5.0-beta4-20153-05" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||||
<Uri>https://github.com/dotnet/roslyn</Uri>
|
<Uri>https://github.com/dotnet/roslyn</Uri>
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
<AspNetCoreMajorVersion>5</AspNetCoreMajorVersion>
|
<AspNetCoreMajorVersion>5</AspNetCoreMajorVersion>
|
||||||
<AspNetCoreMinorVersion>0</AspNetCoreMinorVersion>
|
<AspNetCoreMinorVersion>0</AspNetCoreMinorVersion>
|
||||||
<AspNetCorePatchVersion>0</AspNetCorePatchVersion>
|
<AspNetCorePatchVersion>0</AspNetCorePatchVersion>
|
||||||
<PreReleaseVersionIteration>2</PreReleaseVersionIteration>
|
<PreReleaseVersionIteration>3</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
|
||||||
-->
|
-->
|
||||||
|
|
@ -62,95 +62,96 @@
|
||||||
-->
|
-->
|
||||||
<PropertyGroup Label="Automated">
|
<PropertyGroup Label="Automated">
|
||||||
<!-- Packages from dotnet/arcade -->
|
<!-- Packages from dotnet/arcade -->
|
||||||
<MicrosoftDotNetGenAPIPackageVersion>5.0.0-beta.20151.1</MicrosoftDotNetGenAPIPackageVersion>
|
<MicrosoftDotNetGenAPIPackageVersion>5.0.0-beta.20158.2</MicrosoftDotNetGenAPIPackageVersion>
|
||||||
<!-- Packages from dotnet/roslyn -->
|
<!-- Packages from dotnet/roslyn -->
|
||||||
<MicrosoftNetCompilersToolsetPackageVersion>3.5.0-beta4-20153-05</MicrosoftNetCompilersToolsetPackageVersion>
|
<MicrosoftNetCompilersToolsetPackageVersion>3.5.0-beta4-20153-05</MicrosoftNetCompilersToolsetPackageVersion>
|
||||||
<!-- Packages from dotnet/core-setup -->
|
<!-- Packages from dotnet/core-setup -->
|
||||||
<MicrosoftExtensionsDependencyModelPackageVersion>5.0.0-preview.2-runtime.20160.6</MicrosoftExtensionsDependencyModelPackageVersion>
|
<MicrosoftExtensionsDependencyModelPackageVersion>5.0.0-preview.2-runtime.20155.3</MicrosoftExtensionsDependencyModelPackageVersion>
|
||||||
<MicrosoftNETCoreAppInternalPackageVersion>5.0.0-preview.2.20160.6</MicrosoftNETCoreAppInternalPackageVersion>
|
<MicrosoftNETCoreAppInternalPackageVersion>5.0.0-preview.2.20155.3</MicrosoftNETCoreAppInternalPackageVersion>
|
||||||
<MicrosoftNETCoreAppRefPackageVersion>5.0.0-preview.2.20160.6</MicrosoftNETCoreAppRefPackageVersion>
|
<MicrosoftNETCoreAppRefPackageVersion>5.0.0-preview.2.20155.3</MicrosoftNETCoreAppRefPackageVersion>
|
||||||
<MicrosoftNETCoreAppRuntimewinx64PackageVersion>5.0.0-preview.2.20160.6</MicrosoftNETCoreAppRuntimewinx64PackageVersion>
|
<MicrosoftNETCoreAppRuntimewinx64PackageVersion>5.0.0-preview.2.20155.3</MicrosoftNETCoreAppRuntimewinx64PackageVersion>
|
||||||
<NETStandardLibraryRefPackageVersion>2.1.0-preview.2.20160.6</NETStandardLibraryRefPackageVersion>
|
<NETStandardLibraryRefPackageVersion>2.1.0-preview.2.20155.3</NETStandardLibraryRefPackageVersion>
|
||||||
<!-- Packages from dotnet/corefx -->
|
<!-- Packages from dotnet/corefx -->
|
||||||
<MicrosoftWin32RegistryPackageVersion>5.0.0-preview.2.20160.6</MicrosoftWin32RegistryPackageVersion>
|
<MicrosoftWin32RegistryPackageVersion>5.0.0-preview.2.20155.3</MicrosoftWin32RegistryPackageVersion>
|
||||||
<MicrosoftWin32SystemEventsPackageVersion>5.0.0-preview.2.20160.6</MicrosoftWin32SystemEventsPackageVersion>
|
<MicrosoftWin32SystemEventsPackageVersion>5.0.0-preview.2.20155.3</MicrosoftWin32SystemEventsPackageVersion>
|
||||||
<SystemComponentModelAnnotationsPackageVersion>5.0.0-preview.2.20160.6</SystemComponentModelAnnotationsPackageVersion>
|
<SystemComponentModelAnnotationsPackageVersion>5.0.0-preview.2.20155.3</SystemComponentModelAnnotationsPackageVersion>
|
||||||
<SystemDiagnosticsEventLogPackageVersion>5.0.0-preview.2.20160.6</SystemDiagnosticsEventLogPackageVersion>
|
<SystemDiagnosticsEventLogPackageVersion>5.0.0-preview.2.20155.3</SystemDiagnosticsEventLogPackageVersion>
|
||||||
<SystemDrawingCommonPackageVersion>5.0.0-preview.2.20160.6</SystemDrawingCommonPackageVersion>
|
<SystemDrawingCommonPackageVersion>5.0.0-preview.2.20155.3</SystemDrawingCommonPackageVersion>
|
||||||
<SystemIOPipelinesPackageVersion>5.0.0-preview.2.20160.6</SystemIOPipelinesPackageVersion>
|
<SystemIOPipelinesPackageVersion>5.0.0-preview.2.20155.3</SystemIOPipelinesPackageVersion>
|
||||||
<SystemNetHttpWinHttpHandlerPackageVersion>5.0.0-preview.2.20160.6</SystemNetHttpWinHttpHandlerPackageVersion>
|
<SystemNetHttpWinHttpHandlerPackageVersion>5.0.0-preview.2.20155.3</SystemNetHttpWinHttpHandlerPackageVersion>
|
||||||
<SystemNetWebSocketsWebSocketProtocolPackageVersion>5.0.0-preview.2.20160.6</SystemNetWebSocketsWebSocketProtocolPackageVersion>
|
<SystemNetWebSocketsWebSocketProtocolPackageVersion>5.0.0-preview.2.20155.3</SystemNetWebSocketsWebSocketProtocolPackageVersion>
|
||||||
<SystemReflectionMetadataPackageVersion>5.0.0-preview.2.20160.6</SystemReflectionMetadataPackageVersion>
|
<SystemReflectionMetadataPackageVersion>5.0.0-preview.2.20155.3</SystemReflectionMetadataPackageVersion>
|
||||||
<SystemRuntimeCompilerServicesUnsafePackageVersion>5.0.0-preview.2.20160.6</SystemRuntimeCompilerServicesUnsafePackageVersion>
|
<SystemRuntimeCompilerServicesUnsafePackageVersion>5.0.0-preview.2.20155.3</SystemRuntimeCompilerServicesUnsafePackageVersion>
|
||||||
<SystemSecurityCryptographyCngPackageVersion>5.0.0-preview.2.20160.6</SystemSecurityCryptographyCngPackageVersion>
|
<SystemSecurityCryptographyCngPackageVersion>5.0.0-preview.2.20155.3</SystemSecurityCryptographyCngPackageVersion>
|
||||||
<SystemSecurityCryptographyPkcsPackageVersion>5.0.0-preview.2.20160.6</SystemSecurityCryptographyPkcsPackageVersion>
|
<SystemSecurityCryptographyPkcsPackageVersion>5.0.0-preview.2.20155.3</SystemSecurityCryptographyPkcsPackageVersion>
|
||||||
<SystemSecurityCryptographyXmlPackageVersion>5.0.0-preview.2.20160.6</SystemSecurityCryptographyXmlPackageVersion>
|
<SystemSecurityCryptographyXmlPackageVersion>5.0.0-preview.2.20155.3</SystemSecurityCryptographyXmlPackageVersion>
|
||||||
<SystemSecurityPermissionsPackageVersion>5.0.0-preview.2.20160.6</SystemSecurityPermissionsPackageVersion>
|
<SystemSecurityPermissionsPackageVersion>5.0.0-preview.2.20155.3</SystemSecurityPermissionsPackageVersion>
|
||||||
<SystemSecurityPrincipalWindowsPackageVersion>5.0.0-preview.2.20160.6</SystemSecurityPrincipalWindowsPackageVersion>
|
<SystemSecurityPrincipalWindowsPackageVersion>5.0.0-preview.2.20155.3</SystemSecurityPrincipalWindowsPackageVersion>
|
||||||
<SystemServiceProcessServiceControllerPackageVersion>5.0.0-preview.2.20160.6</SystemServiceProcessServiceControllerPackageVersion>
|
<SystemServiceProcessServiceControllerPackageVersion>5.0.0-preview.2.20155.3</SystemServiceProcessServiceControllerPackageVersion>
|
||||||
<SystemTextEncodingsWebPackageVersion>5.0.0-preview.2.20160.6</SystemTextEncodingsWebPackageVersion>
|
<SystemTextEncodingsWebPackageVersion>5.0.0-preview.2.20155.3</SystemTextEncodingsWebPackageVersion>
|
||||||
<SystemTextJsonPackageVersion>5.0.0-preview.2.20160.6</SystemTextJsonPackageVersion>
|
<SystemTextJsonPackageVersion>5.0.0-preview.2.20155.3</SystemTextJsonPackageVersion>
|
||||||
<SystemThreadingChannelsPackageVersion>5.0.0-preview.2.20160.6</SystemThreadingChannelsPackageVersion>
|
<SystemThreadingChannelsPackageVersion>5.0.0-preview.2.20155.3</SystemThreadingChannelsPackageVersion>
|
||||||
<SystemWindowsExtensionsPackageVersion>5.0.0-preview.2.20160.6</SystemWindowsExtensionsPackageVersion>
|
<SystemWindowsExtensionsPackageVersion>5.0.0-preview.2.20155.3</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-preview.2.20160.6</MicrosoftNETCorePlatformsPackageVersion>
|
<MicrosoftNETCorePlatformsPackageVersion>5.0.0-preview.2.20155.3</MicrosoftNETCorePlatformsPackageVersion>
|
||||||
<!-- Packages from dotnet/blazor -->
|
<!-- Packages from dotnet/blazor -->
|
||||||
<MicrosoftAspNetCoreBlazorMonoPackageVersion>3.2.0-preview1.20067.1</MicrosoftAspNetCoreBlazorMonoPackageVersion>
|
<MicrosoftAspNetCoreBlazorMonoPackageVersion>3.2.0-preview1.20067.1</MicrosoftAspNetCoreBlazorMonoPackageVersion>
|
||||||
<!-- Packages from dotnet/extensions -->
|
<!-- Packages from dotnet/extensions -->
|
||||||
<InternalAspNetCoreAnalyzersPackageVersion>5.0.0-preview.2.20160.3</InternalAspNetCoreAnalyzersPackageVersion>
|
<InternalAspNetCoreAnalyzersPackageVersion>5.0.0-preview.3.20156.3</InternalAspNetCoreAnalyzersPackageVersion>
|
||||||
<MicrosoftAspNetCoreAnalyzerTestingPackageVersion>5.0.0-preview.2.20160.3</MicrosoftAspNetCoreAnalyzerTestingPackageVersion>
|
<MicrosoftAspNetCoreAnalyzerTestingPackageVersion>5.0.0-preview.3.20156.3</MicrosoftAspNetCoreAnalyzerTestingPackageVersion>
|
||||||
<MicrosoftExtensionsCachingAbstractionsPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsCachingAbstractionsPackageVersion>
|
<MicrosoftExtensionsCachingAbstractionsPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsCachingAbstractionsPackageVersion>
|
||||||
<MicrosoftExtensionsCachingMemoryPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsCachingMemoryPackageVersion>
|
<MicrosoftExtensionsCachingMemoryPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsCachingMemoryPackageVersion>
|
||||||
<MicrosoftExtensionsCachingSqlServerPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsCachingSqlServerPackageVersion>
|
<MicrosoftExtensionsCachingSqlServerPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsCachingSqlServerPackageVersion>
|
||||||
<MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>
|
<MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>
|
||||||
<MicrosoftExtensionsConfigurationAbstractionsPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsConfigurationAbstractionsPackageVersion>
|
<MicrosoftExtensionsConfigurationAbstractionsPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsConfigurationAbstractionsPackageVersion>
|
||||||
<MicrosoftExtensionsConfigurationBinderPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsConfigurationBinderPackageVersion>
|
<MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>
|
||||||
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
|
<MicrosoftExtensionsConfigurationBinderPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsConfigurationBinderPackageVersion>
|
||||||
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
|
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
|
||||||
<MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>
|
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
|
||||||
<MicrosoftExtensionsConfigurationIniPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsConfigurationIniPackageVersion>
|
<MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>
|
||||||
<MicrosoftExtensionsConfigurationJsonPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsConfigurationJsonPackageVersion>
|
<MicrosoftExtensionsConfigurationIniPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsConfigurationIniPackageVersion>
|
||||||
<MicrosoftExtensionsConfigurationPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsConfigurationPackageVersion>
|
<MicrosoftExtensionsConfigurationJsonPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsConfigurationJsonPackageVersion>
|
||||||
<MicrosoftExtensionsConfigurationUserSecretsPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
|
<MicrosoftExtensionsConfigurationPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsConfigurationPackageVersion>
|
||||||
<MicrosoftExtensionsConfigurationXmlPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsConfigurationXmlPackageVersion>
|
<MicrosoftExtensionsConfigurationUserSecretsPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
|
||||||
<MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>
|
<MicrosoftExtensionsConfigurationXmlPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsConfigurationXmlPackageVersion>
|
||||||
<MicrosoftExtensionsDependencyInjectionPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsDependencyInjectionPackageVersion>
|
<MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>
|
||||||
<MicrosoftExtensionsDiagnosticAdapterPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsDiagnosticAdapterPackageVersion>
|
<MicrosoftExtensionsDependencyInjectionPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsDependencyInjectionPackageVersion>
|
||||||
<MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>
|
<MicrosoftExtensionsDiagnosticAdapterPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsDiagnosticAdapterPackageVersion>
|
||||||
<MicrosoftExtensionsFileProvidersCompositePackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsFileProvidersCompositePackageVersion>
|
<MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>
|
||||||
<MicrosoftExtensionsFileProvidersPhysicalPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsFileProvidersPhysicalPackageVersion>
|
<MicrosoftExtensionsFileProvidersCompositePackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsFileProvidersCompositePackageVersion>
|
||||||
<MicrosoftExtensionsFileSystemGlobbingPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsFileSystemGlobbingPackageVersion>
|
<MicrosoftExtensionsFileProvidersPhysicalPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsFileProvidersPhysicalPackageVersion>
|
||||||
<MicrosoftExtensionsHostingAbstractionsPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsHostingAbstractionsPackageVersion>
|
<MicrosoftExtensionsFileSystemGlobbingPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsFileSystemGlobbingPackageVersion>
|
||||||
<MicrosoftExtensionsHostingPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsHostingPackageVersion>
|
<MicrosoftExtensionsHostingAbstractionsPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsHostingAbstractionsPackageVersion>
|
||||||
<MicrosoftExtensionsHttpPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsHttpPackageVersion>
|
<MicrosoftExtensionsHostingPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsHostingPackageVersion>
|
||||||
<MicrosoftExtensionsLoggingAbstractionsPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsLoggingAbstractionsPackageVersion>
|
<MicrosoftExtensionsHttpPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsHttpPackageVersion>
|
||||||
<MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>
|
<MicrosoftExtensionsLoggingAbstractionsPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsLoggingAbstractionsPackageVersion>
|
||||||
<MicrosoftExtensionsLoggingConfigurationPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsLoggingConfigurationPackageVersion>
|
<MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>
|
||||||
<MicrosoftExtensionsLoggingConsolePackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsLoggingConsolePackageVersion>
|
<MicrosoftExtensionsLoggingConfigurationPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsLoggingConfigurationPackageVersion>
|
||||||
<MicrosoftExtensionsLoggingDebugPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsLoggingDebugPackageVersion>
|
<MicrosoftExtensionsLoggingConsolePackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsLoggingConsolePackageVersion>
|
||||||
<MicrosoftExtensionsLoggingEventSourcePackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsLoggingEventSourcePackageVersion>
|
<MicrosoftExtensionsLoggingDebugPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsLoggingDebugPackageVersion>
|
||||||
<MicrosoftExtensionsLoggingEventLogPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsLoggingEventLogPackageVersion>
|
<MicrosoftExtensionsLoggingEventSourcePackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsLoggingEventSourcePackageVersion>
|
||||||
<MicrosoftExtensionsLoggingPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsLoggingPackageVersion>
|
<MicrosoftExtensionsLoggingEventLogPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsLoggingEventLogPackageVersion>
|
||||||
<MicrosoftExtensionsLoggingTestingPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsLoggingTestingPackageVersion>
|
<MicrosoftExtensionsLoggingPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsLoggingPackageVersion>
|
||||||
<MicrosoftExtensionsLoggingTraceSourcePackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsLoggingTraceSourcePackageVersion>
|
<MicrosoftExtensionsLoggingTestingPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsLoggingTestingPackageVersion>
|
||||||
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
|
<MicrosoftExtensionsLoggingTraceSourcePackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsLoggingTraceSourcePackageVersion>
|
||||||
<MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>
|
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
|
||||||
<MicrosoftExtensionsOptionsPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsOptionsPackageVersion>
|
<MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>
|
||||||
<MicrosoftExtensionsPrimitivesPackageVersion>5.0.0-preview.2.20160.3</MicrosoftExtensionsPrimitivesPackageVersion>
|
<MicrosoftExtensionsOptionsPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsOptionsPackageVersion>
|
||||||
<MicrosoftInternalExtensionsRefsPackageVersion>5.0.0-preview.2.20160.3</MicrosoftInternalExtensionsRefsPackageVersion>
|
<MicrosoftExtensionsPrimitivesPackageVersion>5.0.0-preview.3.20156.3</MicrosoftExtensionsPrimitivesPackageVersion>
|
||||||
|
<MicrosoftInternalExtensionsRefsPackageVersion>5.0.0-preview.3.20156.3</MicrosoftInternalExtensionsRefsPackageVersion>
|
||||||
<!-- Packages from dotnet/efcore -->
|
<!-- Packages from dotnet/efcore -->
|
||||||
<dotnetefPackageVersion>5.0.0-preview.2.20159.4</dotnetefPackageVersion>
|
<dotnetefPackageVersion>5.0.0-preview.3.20160.3</dotnetefPackageVersion>
|
||||||
<MicrosoftEntityFrameworkCoreInMemoryPackageVersion>5.0.0-preview.2.20159.4</MicrosoftEntityFrameworkCoreInMemoryPackageVersion>
|
<MicrosoftEntityFrameworkCoreInMemoryPackageVersion>5.0.0-preview.3.20160.3</MicrosoftEntityFrameworkCoreInMemoryPackageVersion>
|
||||||
<MicrosoftEntityFrameworkCoreRelationalPackageVersion>5.0.0-preview.2.20159.4</MicrosoftEntityFrameworkCoreRelationalPackageVersion>
|
<MicrosoftEntityFrameworkCoreRelationalPackageVersion>5.0.0-preview.3.20160.3</MicrosoftEntityFrameworkCoreRelationalPackageVersion>
|
||||||
<MicrosoftEntityFrameworkCoreSqlitePackageVersion>5.0.0-preview.2.20159.4</MicrosoftEntityFrameworkCoreSqlitePackageVersion>
|
<MicrosoftEntityFrameworkCoreSqlitePackageVersion>5.0.0-preview.3.20160.3</MicrosoftEntityFrameworkCoreSqlitePackageVersion>
|
||||||
<MicrosoftEntityFrameworkCoreSqlServerPackageVersion>5.0.0-preview.2.20159.4</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
|
<MicrosoftEntityFrameworkCoreSqlServerPackageVersion>5.0.0-preview.3.20160.3</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
|
||||||
<MicrosoftEntityFrameworkCoreToolsPackageVersion>5.0.0-preview.2.20159.4</MicrosoftEntityFrameworkCoreToolsPackageVersion>
|
<MicrosoftEntityFrameworkCoreToolsPackageVersion>5.0.0-preview.3.20160.3</MicrosoftEntityFrameworkCoreToolsPackageVersion>
|
||||||
<MicrosoftEntityFrameworkCorePackageVersion>5.0.0-preview.2.20159.4</MicrosoftEntityFrameworkCorePackageVersion>
|
<MicrosoftEntityFrameworkCorePackageVersion>5.0.0-preview.3.20160.3</MicrosoftEntityFrameworkCorePackageVersion>
|
||||||
<!-- Packages from dotnet/aspnetcore-tooling -->
|
<!-- Packages from dotnet/aspnetcore-tooling -->
|
||||||
<MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>5.0.0-preview.2.20160.3</MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>
|
<MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>5.0.0-preview.3.20157.1</MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>
|
||||||
<MicrosoftAspNetCoreRazorLanguagePackageVersion>5.0.0-preview.2.20160.3</MicrosoftAspNetCoreRazorLanguagePackageVersion>
|
<MicrosoftAspNetCoreRazorLanguagePackageVersion>5.0.0-preview.3.20157.1</MicrosoftAspNetCoreRazorLanguagePackageVersion>
|
||||||
<MicrosoftCodeAnalysisRazorPackageVersion>5.0.0-preview.2.20160.3</MicrosoftCodeAnalysisRazorPackageVersion>
|
<MicrosoftCodeAnalysisRazorPackageVersion>5.0.0-preview.3.20157.1</MicrosoftCodeAnalysisRazorPackageVersion>
|
||||||
<MicrosoftNETSdkRazorPackageVersion>5.0.0-preview.2.20160.3</MicrosoftNETSdkRazorPackageVersion>
|
<MicrosoftNETSdkRazorPackageVersion>5.0.0-preview.3.20157.1</MicrosoftNETSdkRazorPackageVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<!--
|
<!--
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,83 +0,0 @@
|
||||||
<!-- 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. -->
|
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
<!--
|
|
||||||
This MSBuild file is intended to be used as the body of the default
|
|
||||||
publishing release pipeline. The release pipeline will use this file
|
|
||||||
to invoke the SignCheck tool to validate that packages about to
|
|
||||||
be published are correctly signed.
|
|
||||||
|
|
||||||
Parameters:
|
|
||||||
|
|
||||||
- PackageBasePath : Directory containing all files that need to be validated.
|
|
||||||
- SignCheckVersion : Version of SignCheck package to be used.
|
|
||||||
- SignValidationExclusionList : ItemGroup containing exclusion list to be forwarded to SignCheck.
|
|
||||||
- EnableJarSigningCheck : Whether .jar files should be validated.
|
|
||||||
- EnableStrongNameCheck : Whether strong name check should be performed.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>netcoreapp2.1</TargetFramework>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
From 'Signing.props' we import $(SignValidationExclusionList)
|
|
||||||
-->
|
|
||||||
<Import Project="$(MSBuildThisFileDirectory)Signing.props" Condition="Exists('$(MSBuildThisFileDirectory)Signing.props')" />
|
|
||||||
|
|
||||||
<Target Name="ValidateSigning">
|
|
||||||
<PropertyGroup>
|
|
||||||
<SignCheckToolPath>$(NuGetPackageRoot)Microsoft.DotNet.SignCheck\$(SignCheckVersion)\tools\Microsoft.DotNet.SignCheck.exe</SignCheckToolPath>
|
|
||||||
|
|
||||||
<SignCheckInputDir>$(PackageBasePath)</SignCheckInputDir>
|
|
||||||
<SignCheckLog>signcheck.log</SignCheckLog>
|
|
||||||
<SignCheckErrorLog>signcheck.errors.log</SignCheckErrorLog>
|
|
||||||
<SignCheckExclusionsFile>signcheck.exclusions.txt</SignCheckExclusionsFile>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<!--
|
|
||||||
Documentation for these arguments is available here:
|
|
||||||
https://github.com/dotnet/arcade/tree/master/src/SignCheck
|
|
||||||
-->
|
|
||||||
<SignCheckArgs Include="--recursive" />
|
|
||||||
<SignCheckArgs Include="--traverse-subfolders" />
|
|
||||||
<SignCheckArgs Include="--file-status AllFiles" />
|
|
||||||
<SignCheckArgs Include="--log-file $(SignCheckLog)" />
|
|
||||||
<SignCheckArgs Include="--error-log-file $(SignCheckErrorLog)" />
|
|
||||||
<SignCheckArgs Include="--input-files $(SignCheckInputDir)" />
|
|
||||||
|
|
||||||
<SignCheckArgs Include="--exclusions-file $(SignCheckExclusionsFile)" Condition="'@(SignValidationExclusionList)' != ''" />
|
|
||||||
<SignCheckArgs Include="--verify-jar" Condition="'$(EnableJarSigningCheck)' == 'true'" />
|
|
||||||
<SignCheckArgs Include="--verify-strongname" Condition="'$(EnableStrongNameCheck)' == 'true'" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<WriteLinesToFile
|
|
||||||
File="$(SignCheckExclusionsFile)"
|
|
||||||
Lines="@(SignValidationExclusionList)"
|
|
||||||
Condition="'@(SignValidationExclusionList)' != ''"
|
|
||||||
Overwrite="true"
|
|
||||||
Encoding="Unicode"/>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
IgnoreExitCode='true' because the tool doesn't return '0' on success.
|
|
||||||
-->
|
|
||||||
<Exec
|
|
||||||
Command=""$(SignCheckToolPath)" @(SignCheckArgs, ' ')"
|
|
||||||
IgnoreExitCode='true'
|
|
||||||
ConsoleToMsBuild="false"
|
|
||||||
StandardErrorImportance="high" />
|
|
||||||
|
|
||||||
<Error
|
|
||||||
Text="Signing validation failed. Check $(SignCheckErrorLog) for more information."
|
|
||||||
Condition="Exists($(SignCheckErrorLog)) and '$([System.IO.File]::ReadAllText($(SignCheckErrorLog)))' != ''" />
|
|
||||||
|
|
||||||
<Message
|
|
||||||
Text="##vso[artifact.upload containerfolder=LogFiles;artifactname=LogFiles]{SignCheckErrorLog}"
|
|
||||||
Condition="Exists($(SignCheckErrorLog)) and '$([System.IO.File]::ReadAllText($(SignCheckErrorLog)))' != ''" />
|
|
||||||
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Microsoft.DotNet.SignCheck" Version="$(SignCheckVersion)" />
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
||||||
|
|
@ -26,6 +26,11 @@ Param(
|
||||||
[Parameter(ValueFromRemainingArguments=$true)][String[]]$properties
|
[Parameter(ValueFromRemainingArguments=$true)][String[]]$properties
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Unset 'Platform' environment variable to avoid unwanted collision in InstallDotNetCore.targets file
|
||||||
|
# some computer has this env var defined (e.g. Some HP)
|
||||||
|
if($env:Platform) {
|
||||||
|
$env:Platform=""
|
||||||
|
}
|
||||||
function Print-Usage() {
|
function Print-Usage() {
|
||||||
Write-Host "Common settings:"
|
Write-Host "Common settings:"
|
||||||
Write-Host " -configuration <value> Build configuration: 'Debug' or 'Release' (short: -c)"
|
Write-Host " -configuration <value> Build configuration: 'Debug' or 'Release' (short: -c)"
|
||||||
|
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
set(CROSS_NDK_TOOLCHAIN $ENV{ROOTFS_DIR}/../)
|
|
||||||
set(CROSS_ROOTFS ${CROSS_NDK_TOOLCHAIN}/sysroot)
|
|
||||||
set(CLR_CMAKE_PLATFORM_ANDROID "Android")
|
|
||||||
|
|
||||||
set(CMAKE_SYSTEM_NAME Linux)
|
|
||||||
set(CMAKE_SYSTEM_VERSION 1)
|
|
||||||
set(CMAKE_SYSTEM_PROCESSOR arm)
|
|
||||||
|
|
||||||
## Specify the toolchain
|
|
||||||
set(TOOLCHAIN "arm-linux-androideabi")
|
|
||||||
set(CMAKE_PREFIX_PATH ${CROSS_NDK_TOOLCHAIN})
|
|
||||||
set(TOOLCHAIN_PREFIX ${TOOLCHAIN}-)
|
|
||||||
|
|
||||||
find_program(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}clang)
|
|
||||||
find_program(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}clang++)
|
|
||||||
find_program(CMAKE_ASM_COMPILER ${TOOLCHAIN_PREFIX}clang)
|
|
||||||
find_program(CMAKE_AR ${TOOLCHAIN_PREFIX}ar)
|
|
||||||
find_program(CMAKE_LD ${TOOLCHAIN_PREFIX}ar)
|
|
||||||
find_program(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy)
|
|
||||||
find_program(CMAKE_OBJDUMP ${TOOLCHAIN_PREFIX}objdump)
|
|
||||||
|
|
||||||
add_compile_options(--sysroot=${CROSS_ROOTFS})
|
|
||||||
add_compile_options(-fPIE)
|
|
||||||
add_compile_options(-mfloat-abi=soft)
|
|
||||||
include_directories(SYSTEM ${CROSS_NDK_TOOLCHAIN}/include/c++/4.9.x/)
|
|
||||||
include_directories(SYSTEM ${CROSS_NDK_TOOLCHAIN}/include/c++/4.9.x/arm-linux-androideabi/)
|
|
||||||
|
|
||||||
set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B ${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}")
|
|
||||||
set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/lib/${TOOLCHAIN}")
|
|
||||||
set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} --sysroot=${CROSS_ROOTFS}")
|
|
||||||
set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -fPIE -pie")
|
|
||||||
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH "${CROSS_ROOTFS}")
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
set(CROSS_NDK_TOOLCHAIN $ENV{ROOTFS_DIR}/../)
|
|
||||||
set(CROSS_ROOTFS ${CROSS_NDK_TOOLCHAIN}/sysroot)
|
|
||||||
set(CLR_CMAKE_PLATFORM_ANDROID "Android")
|
|
||||||
|
|
||||||
set(CMAKE_SYSTEM_NAME Linux)
|
|
||||||
set(CMAKE_SYSTEM_VERSION 1)
|
|
||||||
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
|
||||||
|
|
||||||
## Specify the toolchain
|
|
||||||
set(TOOLCHAIN "aarch64-linux-android")
|
|
||||||
set(CMAKE_PREFIX_PATH ${CROSS_NDK_TOOLCHAIN})
|
|
||||||
set(TOOLCHAIN_PREFIX ${TOOLCHAIN}-)
|
|
||||||
|
|
||||||
find_program(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}clang)
|
|
||||||
find_program(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}clang++)
|
|
||||||
find_program(CMAKE_ASM_COMPILER ${TOOLCHAIN_PREFIX}clang)
|
|
||||||
find_program(CMAKE_AR ${TOOLCHAIN_PREFIX}ar)
|
|
||||||
find_program(CMAKE_LD ${TOOLCHAIN_PREFIX}ar)
|
|
||||||
find_program(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy)
|
|
||||||
find_program(CMAKE_OBJDUMP ${TOOLCHAIN_PREFIX}objdump)
|
|
||||||
|
|
||||||
add_compile_options(--sysroot=${CROSS_ROOTFS})
|
|
||||||
add_compile_options(-fPIE)
|
|
||||||
|
|
||||||
## Needed for Android or bionic specific conditionals
|
|
||||||
add_compile_options(-D__ANDROID__)
|
|
||||||
add_compile_options(-D__BIONIC__)
|
|
||||||
|
|
||||||
set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B ${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}")
|
|
||||||
set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/lib/${TOOLCHAIN}")
|
|
||||||
set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} --sysroot=${CROSS_ROOTFS}")
|
|
||||||
set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -fPIE -pie")
|
|
||||||
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH "${CROSS_ROOTFS}")
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -e
|
set -e
|
||||||
__NDK_Version=r14
|
__NDK_Version=r21
|
||||||
|
|
||||||
usage()
|
usage()
|
||||||
{
|
{
|
||||||
|
|
@ -16,11 +16,11 @@ usage()
|
||||||
echo.
|
echo.
|
||||||
echo "By default, the NDK will be downloaded into the cross/android-rootfs/android-ndk-$__NDK_Version directory. If you already have an NDK installation,"
|
echo "By default, the NDK will be downloaded into the cross/android-rootfs/android-ndk-$__NDK_Version directory. If you already have an NDK installation,"
|
||||||
echo "you can set the NDK_DIR environment variable to have this script use that installation of the NDK."
|
echo "you can set the NDK_DIR environment variable to have this script use that installation of the NDK."
|
||||||
echo "By default, this script will generate a file, android_platform, in the root of the ROOTFS_DIR directory that contains the RID for the supported and tested Android build: android.21-arm64. This file is to replace '/etc/os-release', which is not available for Android."
|
echo "By default, this script will generate a file, android_platform, in the root of the ROOTFS_DIR directory that contains the RID for the supported and tested Android build: android.28-arm64. This file is to replace '/etc/os-release', which is not available for Android."
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
__ApiLevel=21 # The minimum platform for arm64 is API level 21
|
__ApiLevel=28 # The minimum platform for arm64 is API level 21 but the minimum version that support glob(3) is 28. See $ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/glob.h
|
||||||
__BuildArch=arm64
|
__BuildArch=arm64
|
||||||
__AndroidArch=aarch64
|
__AndroidArch=aarch64
|
||||||
__AndroidToolchain=aarch64-linux-android
|
__AndroidToolchain=aarch64-linux-android
|
||||||
|
|
@ -54,12 +54,11 @@ done
|
||||||
|
|
||||||
# Obtain the location of the bash script to figure out where the root of the repo is.
|
# Obtain the location of the bash script to figure out where the root of the repo is.
|
||||||
__CrossDir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
__CrossDir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
__Android_Cross_Dir="$(cd "$__CrossDir/../../../.tools/android-rootfs" && pwd)"
|
||||||
|
|
||||||
__Android_Cross_Dir="$__CrossDir/android-rootfs"
|
|
||||||
__NDK_Dir="$__Android_Cross_Dir/android-ndk-$__NDK_Version"
|
__NDK_Dir="$__Android_Cross_Dir/android-ndk-$__NDK_Version"
|
||||||
__libunwind_Dir="$__Android_Cross_Dir/libunwind"
|
|
||||||
__lldb_Dir="$__Android_Cross_Dir/lldb"
|
__lldb_Dir="$__Android_Cross_Dir/lldb"
|
||||||
__ToolchainDir="$__Android_Cross_Dir/toolchain/$__BuildArch"
|
__ToolchainDir="$__Android_Cross_Dir/android-ndk-$__NDK_Version"
|
||||||
|
|
||||||
if [[ -n "$TOOLCHAIN_DIR" ]]; then
|
if [[ -n "$TOOLCHAIN_DIR" ]]; then
|
||||||
__ToolchainDir=$TOOLCHAIN_DIR
|
__ToolchainDir=$TOOLCHAIN_DIR
|
||||||
|
|
@ -89,49 +88,33 @@ if [ ! -d $__lldb_Dir ]; then
|
||||||
unzip -q $__Android_Cross_Dir/lldb-2.3.3614996-linux-x86_64.zip -d $__lldb_Dir
|
unzip -q $__Android_Cross_Dir/lldb-2.3.3614996-linux-x86_64.zip -d $__lldb_Dir
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create the RootFS for both arm64 as well as aarch
|
echo "Download dependencies..."
|
||||||
rm -rf $__Android_Cross_Dir/toolchain
|
|
||||||
|
|
||||||
echo Generating the $__BuildArch toolchain
|
|
||||||
$__NDK_Dir/build/tools/make_standalone_toolchain.py --arch $__BuildArch --api $__ApiLevel --install-dir $__ToolchainDir
|
|
||||||
|
|
||||||
# Install the required packages into the toolchain
|
|
||||||
# TODO: Add logic to get latest pkg version instead of specific version number
|
|
||||||
rm -rf $__Android_Cross_Dir/deb/
|
|
||||||
rm -rf $__Android_Cross_Dir/tmp
|
|
||||||
|
|
||||||
mkdir -p $__Android_Cross_Dir/deb/
|
|
||||||
mkdir -p $__Android_Cross_Dir/tmp/$arch/
|
mkdir -p $__Android_Cross_Dir/tmp/$arch/
|
||||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libicu_60.2_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libicu_60.2_$__AndroidArch.deb
|
|
||||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libicu-dev_60.2_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libicu-dev_60.2_$__AndroidArch.deb
|
|
||||||
|
|
||||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libandroid-glob-dev_0.4_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libandroid-glob-dev_0.4_$__AndroidArch.deb
|
# combined dependencies for coreclr, installer and libraries
|
||||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libandroid-glob_0.4_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libandroid-glob_0.4_$__AndroidArch.deb
|
__AndroidPackages="libicu"
|
||||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libandroid-support-dev_22_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libandroid-support-dev_22_$__AndroidArch.deb
|
__AndroidPackages+=" libandroid-glob"
|
||||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libandroid-support_22_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libandroid-support_22_$__AndroidArch.deb
|
__AndroidPackages+=" liblzma"
|
||||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/liblzma-dev_5.2.3_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/liblzma-dev_5.2.3_$__AndroidArch.deb
|
__AndroidPackages+=" krb5"
|
||||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/liblzma_5.2.3_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/liblzma_5.2.3_$__AndroidArch.deb
|
__AndroidPackages+=" openssl"
|
||||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libunwind-dev_1.2.20170304_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libunwind-dev_1.2.20170304_$__AndroidArch.deb
|
|
||||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libunwind_1.2.20170304_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libunwind_1.2.20170304_$__AndroidArch.deb
|
|
||||||
|
|
||||||
echo Unpacking Termux packages
|
for path in $(wget -qO- http://termux.net/dists/stable/main/binary-$__AndroidArch/Packages |\
|
||||||
dpkg -x $__Android_Cross_Dir/deb/libicu_60.2_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
grep -A15 "Package: \(${__AndroidPackages// /\\|}\)" | grep -v "static\|tool" | grep Filename); do
|
||||||
dpkg -x $__Android_Cross_Dir/deb/libicu-dev_60.2_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
|
||||||
dpkg -x $__Android_Cross_Dir/deb/libandroid-glob-dev_0.4_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
if [[ "$path" != "Filename:" ]]; then
|
||||||
dpkg -x $__Android_Cross_Dir/deb/libandroid-glob_0.4_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
echo "Working on: $path"
|
||||||
dpkg -x $__Android_Cross_Dir/deb/libandroid-support-dev_22_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
wget -qO- http://termux.net/$path | dpkg -x - $__Android_Cross_Dir/tmp/$__AndroidArch/
|
||||||
dpkg -x $__Android_Cross_Dir/deb/libandroid-support_22_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
fi
|
||||||
dpkg -x $__Android_Cross_Dir/deb/liblzma-dev_5.2.3_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
done
|
||||||
dpkg -x $__Android_Cross_Dir/deb/liblzma_5.2.3_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
|
||||||
dpkg -x $__Android_Cross_Dir/deb/libunwind-dev_1.2.20170304_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
|
||||||
dpkg -x $__Android_Cross_Dir/deb/libunwind_1.2.20170304_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
|
||||||
|
|
||||||
cp -R $__Android_Cross_Dir/tmp/$__AndroidArch/data/data/com.termux/files/usr/* $__ToolchainDir/sysroot/usr/
|
cp -R $__Android_Cross_Dir/tmp/$__AndroidArch/data/data/com.termux/files/usr/* $__ToolchainDir/sysroot/usr/
|
||||||
|
|
||||||
# Generate platform file for build.sh script to assign to __DistroRid
|
# Generate platform file for build.sh script to assign to __DistroRid
|
||||||
echo "Generating platform file..."
|
echo "Generating platform file..."
|
||||||
|
echo "RID=android.${__ApiLevel}-${__BuildArch}" > $__ToolchainDir/sysroot/android_platform
|
||||||
|
|
||||||
echo "RID=android.21-arm64" > $__ToolchainDir/sysroot/android_platform
|
echo "Now to build coreclr, libraries and installers; run:"
|
||||||
echo Now run:
|
echo ROOTFS_DIR=\$\(realpath $__ToolchainDir/sysroot\) ./build.sh --cross --arch $__BuildArch \
|
||||||
echo CONFIG_DIR=\`realpath cross/android/$__BuildArch\` ROOTFS_DIR=\`realpath $__ToolchainDir/sysroot\` ./build.sh cross $__BuildArch skipgenerateversion skipnuget cmakeargs -DENABLE_LLDBPLUGIN=0
|
--subsetCategory coreclr \
|
||||||
|
--subsetCategory libraries \
|
||||||
|
--subsetCategory installer
|
||||||
|
|
|
||||||
|
|
@ -43,10 +43,30 @@ if(TARGET_ARCH_NAME STREQUAL "armel")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CMAKE_SYSROOT "${CROSS_ROOTFS}")
|
if("$ENV{__DistroRid}" MATCHES "android.*")
|
||||||
set(CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN "${CROSS_ROOTFS}/usr")
|
if(TARGET_ARCH_NAME STREQUAL "arm")
|
||||||
set(CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN "${CROSS_ROOTFS}/usr")
|
set(ANDROID_ABI armeabi-v7a)
|
||||||
set(CMAKE_ASM_COMPILER_EXTERNAL_TOOLCHAIN "${CROSS_ROOTFS}/usr")
|
elseif(TARGET_ARCH_NAME STREQUAL "arm64")
|
||||||
|
set(ANDROID_ABI arm64-v8a)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# extract platform number required by the NDK's toolchain
|
||||||
|
string(REGEX REPLACE ".*\\.([0-9]+)-.*" "\\1" ANDROID_PLATFORM "$ENV{__DistroRid}")
|
||||||
|
|
||||||
|
set(ANDROID_TOOLCHAIN clang)
|
||||||
|
set(FEATURE_EVENT_TRACE 0) # disable event trace as there is no lttng-ust package in termux repository
|
||||||
|
set(CMAKE_SYSTEM_LIBRARY_PATH "${CROSS_ROOTFS}/usr/lib")
|
||||||
|
set(CMAKE_SYSTEM_INCLUDE_PATH "${CROSS_ROOTFS}/usr/include")
|
||||||
|
|
||||||
|
# include official NDK toolchain script
|
||||||
|
include(${CROSS_ROOTFS}/../build/cmake/android.toolchain.cmake)
|
||||||
|
else()
|
||||||
|
set(CMAKE_SYSROOT "${CROSS_ROOTFS}")
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN "${CROSS_ROOTFS}/usr")
|
||||||
|
set(CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN "${CROSS_ROOTFS}/usr")
|
||||||
|
set(CMAKE_ASM_COMPILER_EXTERNAL_TOOLCHAIN "${CROSS_ROOTFS}/usr")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Specify link flags
|
# Specify link flags
|
||||||
|
|
||||||
|
|
@ -63,7 +83,7 @@ endif()
|
||||||
|
|
||||||
# Specify compile options
|
# Specify compile options
|
||||||
|
|
||||||
if(TARGET_ARCH_NAME MATCHES "^(arm|armel|arm64)$")
|
if(TARGET_ARCH_NAME MATCHES "^(arm|armel|arm64)$" AND NOT "$ENV{__DistroRid}" MATCHES "android.*")
|
||||||
set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN})
|
set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN})
|
||||||
set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN})
|
set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN})
|
||||||
set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN})
|
set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN})
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ param (
|
||||||
|
|
||||||
. $PSScriptRoot\tools.ps1
|
. $PSScriptRoot\tools.ps1
|
||||||
|
|
||||||
function InstallDarcCli ($darcVersion) {
|
function InstallDarcCli ($darcVersion, $toolpath) {
|
||||||
$darcCliPackageName = 'microsoft.dotnet.darc'
|
$darcCliPackageName = 'microsoft.dotnet.darc'
|
||||||
|
|
||||||
$dotnetRoot = InitializeDotNetCli -install:$true
|
$dotnetRoot = InitializeDotNetCli -install:$true
|
||||||
|
|
@ -32,13 +32,13 @@ function InstallDarcCli ($darcVersion) {
|
||||||
Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --add-source '$arcadeServicesSource' -v $verbosity -g"
|
Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --add-source '$arcadeServicesSource' -v $verbosity -g"
|
||||||
& "$dotnet" tool install $darcCliPackageName --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g
|
& "$dotnet" tool install $darcCliPackageName --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g
|
||||||
}else {
|
}else {
|
||||||
Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --add-source '$arcadeServicesSource' -v $verbosity -g --tool-path '$toolpath'"
|
Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --add-source '$arcadeServicesSource' -v $verbosity --tool-path '$toolpath'"
|
||||||
& "$dotnet" tool install $darcCliPackageName --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath"
|
& "$dotnet" tool install $darcCliPackageName --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
InstallDarcCli $darcVersion
|
InstallDarcCli $darcVersion $toolpath
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
Write-Host $_.ScriptStackTrace
|
Write-Host $_.ScriptStackTrace
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,9 @@ function Write-PipelineTelemetryError {
|
||||||
|
|
||||||
$PSBoundParameters.Remove('Category') | Out-Null
|
$PSBoundParameters.Remove('Category') | Out-Null
|
||||||
|
|
||||||
$Message = "(NETCORE_ENGINEERING_TELEMETRY=$Category) $Message"
|
if($Force -Or ((Test-Path variable:ci) -And $ci)) {
|
||||||
|
$Message = "(NETCORE_ENGINEERING_TELEMETRY=$Category) $Message"
|
||||||
|
}
|
||||||
$PSBoundParameters.Remove('Message') | Out-Null
|
$PSBoundParameters.Remove('Message') | Out-Null
|
||||||
$PSBoundParameters.Add('Message', $Message)
|
$PSBoundParameters.Add('Message', $Message)
|
||||||
Write-PipelineTaskError @PSBoundParameters
|
Write-PipelineTaskError @PSBoundParameters
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@ parameters:
|
||||||
transportFeed: ''
|
transportFeed: ''
|
||||||
shippingFeed: ''
|
shippingFeed: ''
|
||||||
symbolsFeed: ''
|
symbolsFeed: ''
|
||||||
|
# If the channel name is empty, no links will be generated
|
||||||
|
akaMSChannelName: ''
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
- stage: ${{ parameters.stageName }}
|
- stage: ${{ parameters.stageName }}
|
||||||
|
|
@ -161,6 +163,9 @@ stages:
|
||||||
/p:AzureDevOpsStaticTransportFeedKey='$(dn-bot-dnceng-artifact-feeds-rw)'
|
/p:AzureDevOpsStaticTransportFeedKey='$(dn-bot-dnceng-artifact-feeds-rw)'
|
||||||
/p:AzureDevOpsStaticSymbolsFeed='${{ parameters.symbolsFeed }}'
|
/p:AzureDevOpsStaticSymbolsFeed='${{ parameters.symbolsFeed }}'
|
||||||
/p:AzureDevOpsStaticSymbolsFeedKey='$(dn-bot-dnceng-artifact-feeds-rw)'
|
/p:AzureDevOpsStaticSymbolsFeedKey='$(dn-bot-dnceng-artifact-feeds-rw)'
|
||||||
|
/p:LatestLinkShortUrlPrefix=dotnet/'${{ parameters.akaMSChannelName }}'
|
||||||
|
/p:AkaMSClientId=$(akams-client-id)
|
||||||
|
/p:AkaMSClientSecret=$(akams-client-secret)
|
||||||
${{ parameters.artifactsPublishingAdditionalParameters }}
|
${{ parameters.artifactsPublishingAdditionalParameters }}
|
||||||
|
|
||||||
- template: ../../steps/publish-logs.yml
|
- template: ../../steps/publish-logs.yml
|
||||||
|
|
|
||||||
|
|
@ -199,6 +199,7 @@ stages:
|
||||||
symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
|
symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
|
||||||
stageName: 'NetCore_Dev5_Publish'
|
stageName: 'NetCore_Dev5_Publish'
|
||||||
channelName: '.NET Core 5 Dev'
|
channelName: '.NET Core 5 Dev'
|
||||||
|
akaMSChannelName: 'net5/dev'
|
||||||
channelId: ${{ parameters.NetCoreDev5ChannelId }}
|
channelId: ${{ parameters.NetCoreDev5ChannelId }}
|
||||||
transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-transport/nuget/v3/index.json'
|
transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-transport/nuget/v3/index.json'
|
||||||
shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json'
|
shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json'
|
||||||
|
|
@ -212,6 +213,7 @@ stages:
|
||||||
symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
|
symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
|
||||||
stageName: 'Net5_Preview1_Publish'
|
stageName: 'Net5_Preview1_Publish'
|
||||||
channelName: '.NET 5 Preview 1'
|
channelName: '.NET 5 Preview 1'
|
||||||
|
akaMSChannelName: 'net5/preview1'
|
||||||
channelId: ${{ parameters.Net5Preview1ChannelId }}
|
channelId: ${{ parameters.Net5Preview1ChannelId }}
|
||||||
transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-transport/nuget/v3/index.json'
|
transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-transport/nuget/v3/index.json'
|
||||||
shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json'
|
shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json'
|
||||||
|
|
@ -225,6 +227,7 @@ stages:
|
||||||
symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
|
symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
|
||||||
stageName: 'Net5_Preview2_Publish'
|
stageName: 'Net5_Preview2_Publish'
|
||||||
channelName: '.NET 5 Preview 2'
|
channelName: '.NET 5 Preview 2'
|
||||||
|
akaMSChannelName: 'net5/preview2'
|
||||||
channelId: ${{ parameters.Net5Preview2ChannelId }}
|
channelId: ${{ parameters.Net5Preview2ChannelId }}
|
||||||
transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-transport/nuget/v3/index.json'
|
transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-transport/nuget/v3/index.json'
|
||||||
shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json'
|
shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json'
|
||||||
|
|
@ -238,6 +241,7 @@ stages:
|
||||||
symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
|
symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
|
||||||
stageName: 'Net_Eng_Latest_Publish'
|
stageName: 'Net_Eng_Latest_Publish'
|
||||||
channelName: '.NET Eng - Latest'
|
channelName: '.NET Eng - Latest'
|
||||||
|
akaMSChannelName: 'eng/daily'
|
||||||
channelId: ${{ parameters.NetEngLatestChannelId }}
|
channelId: ${{ parameters.NetEngLatestChannelId }}
|
||||||
transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
|
transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
|
||||||
shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
|
shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
|
||||||
|
|
@ -251,6 +255,7 @@ stages:
|
||||||
symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
|
symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
|
||||||
stageName: 'Net_Eng_Validation_Publish'
|
stageName: 'Net_Eng_Validation_Publish'
|
||||||
channelName: '.NET Eng - Validation'
|
channelName: '.NET Eng - Validation'
|
||||||
|
akaMSChannelName: 'eng/validation'
|
||||||
channelId: ${{ parameters.NetEngValidationChannelId }}
|
channelId: ${{ parameters.NetEngValidationChannelId }}
|
||||||
transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
|
transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
|
||||||
shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
|
shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
|
||||||
|
|
@ -264,6 +269,7 @@ stages:
|
||||||
symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
|
symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
|
||||||
stageName: 'General_Testing_Publish'
|
stageName: 'General_Testing_Publish'
|
||||||
channelName: 'General Testing'
|
channelName: 'General Testing'
|
||||||
|
akaMSChannelName: 'generaltesting'
|
||||||
channelId: ${{ parameters.GeneralTestingChannelId }}
|
channelId: ${{ parameters.GeneralTestingChannelId }}
|
||||||
transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/general-testing/nuget/v3/index.json'
|
transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/general-testing/nuget/v3/index.json'
|
||||||
shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/general-testing/nuget/v3/index.json'
|
shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/general-testing/nuget/v3/index.json'
|
||||||
|
|
|
||||||
|
|
@ -635,7 +635,7 @@ function MSBuild-Core() {
|
||||||
$exitCode = Exec-Process $buildTool.Path $cmdArgs
|
$exitCode = Exec-Process $buildTool.Path $cmdArgs
|
||||||
|
|
||||||
if ($exitCode -ne 0) {
|
if ($exitCode -ne 0) {
|
||||||
Write-PipelineTelemetryError Category 'Build' -Message 'Build failed.'
|
Write-PipelineTelemetryError -Category 'Build' -Message 'Build failed.'
|
||||||
|
|
||||||
$buildLog = GetMSBuildBinaryLogCommandLineArgument $args
|
$buildLog = GetMSBuildBinaryLogCommandLineArgument $args
|
||||||
if ($buildLog -ne $null) {
|
if ($buildLog -ne $null) {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
@echo off
|
@echo off
|
||||||
REM Disable "!Foo!" expansions because they break the filter syntax
|
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 disableextensions
|
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
|
||||||
|
|
@ -9,6 +9,7 @@ set $runtimeVersion=%3
|
||||||
set $helixQueue=%4
|
set $helixQueue=%4
|
||||||
set $arch=%5
|
set $arch=%5
|
||||||
set $quarantined=%6
|
set $quarantined=%6
|
||||||
|
set $efVersion=%7
|
||||||
|
|
||||||
set DOTNET_HOME=%HELIX_CORRELATION_PAYLOAD%\sdk
|
set DOTNET_HOME=%HELIX_CORRELATION_PAYLOAD%\sdk
|
||||||
set DOTNET_ROOT=%DOTNET_HOME%\%$arch%
|
set DOTNET_ROOT=%DOTNET_HOME%\%$arch%
|
||||||
|
|
@ -16,14 +17,24 @@ 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=%HELIX_CORRELATION_PAYLOAD%\home
|
||||||
|
|
||||||
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 "Installing SDK"
|
||||||
powershell.exe -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -useb 'https://dot.net/v1/dotnet-install.ps1'))) -Architecture %$arch% -Version %$sdkVersion% -InstallDir %DOTNET_ROOT%"
|
powershell.exe -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -useb 'https://dot.net/v1/dotnet-install.ps1'))) -Architecture %$arch% -Version %$sdkVersion% -InstallDir %DOTNET_ROOT%"
|
||||||
|
echo "Installing Runtime"
|
||||||
powershell.exe -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -useb 'https://dot.net/v1/dotnet-install.ps1'))) -Architecture %$arch% -Runtime dotnet -Version %$runtimeVersion% -InstallDir %DOTNET_ROOT%"
|
powershell.exe -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -useb 'https://dot.net/v1/dotnet-install.ps1'))) -Architecture %$arch% -Runtime dotnet -Version %$runtimeVersion% -InstallDir %DOTNET_ROOT%"
|
||||||
|
echo "Checking for Microsoft.AspNetCore.App"
|
||||||
if EXIST ".\Microsoft.AspNetCore.App" (
|
if EXIST ".\Microsoft.AspNetCore.App" (
|
||||||
echo "Found Microsoft.AspNetCore.App, copying to %DOTNET_ROOT%\shared\Microsoft.AspNetCore.App\%runtimeVersion%"
|
echo "Found Microsoft.AspNetCore.App, copying to %DOTNET_ROOT%\shared\Microsoft.AspNetCore.App\%runtimeVersion%"
|
||||||
xcopy /i /y ".\Microsoft.AspNetCore.App" %DOTNET_ROOT%\shared\Microsoft.AspNetCore.App\%runtimeVersion%\
|
xcopy /i /y ".\Microsoft.AspNetCore.App" %DOTNET_ROOT%\shared\Microsoft.AspNetCore.App\%runtimeVersion%\
|
||||||
|
|
||||||
|
echo "Adding current directory to nuget sources: %HELIX_WORKITEM_ROOT%"
|
||||||
|
dotnet nuget add source %HELIX_WORKITEM_ROOT%
|
||||||
|
dotnet nuget add source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json
|
||||||
|
dotnet nuget list source
|
||||||
|
dotnet tool install dotnet-ef --global --version %$efVersion%
|
||||||
|
|
||||||
|
set PATH=!PATH!;%DOTNET_CLI_HOME%\.dotnet\tools
|
||||||
)
|
)
|
||||||
|
|
||||||
echo "Current Directory: %HELIX_WORKITEM_ROOT%"
|
echo "Current Directory: %HELIX_WORKITEM_ROOT%"
|
||||||
|
|
@ -31,6 +42,8 @@ set HELIX=%$helixQueue%
|
||||||
set HELIX_DIR=%HELIX_WORKITEM_ROOT%
|
set HELIX_DIR=%HELIX_WORKITEM_ROOT%
|
||||||
set NUGET_FALLBACK_PACKAGES=%HELIX_DIR%
|
set NUGET_FALLBACK_PACKAGES=%HELIX_DIR%
|
||||||
set NUGET_RESTORE=%HELIX_DIR%\nugetRestore
|
set NUGET_RESTORE=%HELIX_DIR%\nugetRestore
|
||||||
|
set DotNetEfFullPath=%HELIX_DIR%\nugetRestore\dotnet-ef\%$efVersion%\tools\netcoreapp3.1\any\dotnet-ef.exe
|
||||||
|
echo "Set DotNetEfFullPath: %DotNetEfFullPath%"
|
||||||
echo "Setting HELIX_DIR: %HELIX_DIR%"
|
echo "Setting HELIX_DIR: %HELIX_DIR%"
|
||||||
echo Creating nuget restore directory: %NUGET_RESTORE%
|
echo Creating nuget restore directory: %NUGET_RESTORE%
|
||||||
mkdir %NUGET_RESTORE%
|
mkdir %NUGET_RESTORE%
|
||||||
|
|
@ -53,6 +66,8 @@ if %$quarantined%==True (
|
||||||
set %$quarantined=true
|
set %$quarantined=true
|
||||||
)
|
)
|
||||||
|
|
||||||
|
REM Disable "!Foo!" expansions because they break the filter syntax
|
||||||
|
setlocal disabledelayedexpansion
|
||||||
set NONQUARANTINE_FILTER="Quarantined!=true"
|
set NONQUARANTINE_FILTER="Quarantined!=true"
|
||||||
set QUARANTINE_FILTER="Quarantined=true"
|
set QUARANTINE_FILTER="Quarantined=true"
|
||||||
if %$quarantined%==true (
|
if %$quarantined%==true (
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ dotnet_runtime_version="$3"
|
||||||
helix_queue_name="$4"
|
helix_queue_name="$4"
|
||||||
target_arch="$5"
|
target_arch="$5"
|
||||||
quarantined="$6"
|
quarantined="$6"
|
||||||
|
efVersion="$7"
|
||||||
|
|
||||||
RESET="\033[0m"
|
RESET="\033[0m"
|
||||||
RED="\033[0;31m"
|
RED="\033[0;31m"
|
||||||
|
|
@ -33,6 +34,8 @@ export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||||
export helix="$helix_queue_name"
|
export helix="$helix_queue_name"
|
||||||
export HELIX_DIR="$DIR"
|
export HELIX_DIR="$DIR"
|
||||||
export NUGET_FALLBACK_PACKAGES="$DIR"
|
export NUGET_FALLBACK_PACKAGES="$DIR"
|
||||||
|
export DotNetEfFullPath=$DIR\nugetRestore\dotnet-ef\$efVersion\tools\netcoreapp3.1\any\dotnet-ef.dll
|
||||||
|
echo "Set DotNetEfFullPath: $DotNetEfFullPath"
|
||||||
export NUGET_RESTORE="$DIR/nugetRestore"
|
export NUGET_RESTORE="$DIR/nugetRestore"
|
||||||
echo "Creating nugetRestore directory: $NUGET_RESTORE"
|
echo "Creating nugetRestore directory: $NUGET_RESTORE"
|
||||||
mkdir $NUGET_RESTORE
|
mkdir $NUGET_RESTORE
|
||||||
|
|
@ -95,6 +98,17 @@ if [ -d "Microsoft.AspNetCore.App" ]
|
||||||
then
|
then
|
||||||
echo "Found Microsoft.AspNetCore.App directory, copying to $DOTNET_ROOT/shared/Microsoft.AspNetCore.App/$dotnet_runtime_version."
|
echo "Found Microsoft.AspNetCore.App directory, copying to $DOTNET_ROOT/shared/Microsoft.AspNetCore.App/$dotnet_runtime_version."
|
||||||
cp -r Microsoft.AspNetCore.App $DOTNET_ROOT/shared/Microsoft.AspNetCore.App/$dotnet_runtime_version
|
cp -r Microsoft.AspNetCore.App $DOTNET_ROOT/shared/Microsoft.AspNetCore.App/$dotnet_runtime_version
|
||||||
|
|
||||||
|
echo "Adding current directory to nuget sources: $DIR"
|
||||||
|
dotnet nuget add source $DIR
|
||||||
|
dotnet nuget add source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json
|
||||||
|
dotnet nuget list source
|
||||||
|
|
||||||
|
dotnet tool install dotnet-ef --global --version $efVersion
|
||||||
|
|
||||||
|
# Ensure tools are on on PATH
|
||||||
|
export PATH="$PATH:$DOTNET_CLI_HOME/.dotnet/tools"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -e /proc/self/coredump_filter ]; then
|
if [ -e /proc/self/coredump_filter ]; then
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,8 @@
|
||||||
<Reference Include="Moq" />
|
<Reference Include="Moq" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Import Project="$(RepoRoot)src\Testing\src\build\Microsoft.AspNetCore.Testing.props" Condition=" '$(IsTestProject)' == 'true' " />
|
||||||
|
|
||||||
<ItemDefinitionGroup Condition=" '$(IsTestProject)' == 'true' ">
|
<ItemDefinitionGroup Condition=" '$(IsTestProject)' == 'true' ">
|
||||||
<Content>
|
<Content>
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
|
|
||||||
|
|
@ -120,8 +120,8 @@ 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) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests)</Command>
|
<Command Condition="$(IsWindowsHelixQueue)">call runtests.cmd $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppRuntimeVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion)</Command>
|
||||||
<Command Condition="!$(IsWindowsHelixQueue)">./runtests.sh $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppRuntimeVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests)</Command>
|
<Command Condition="!$(IsWindowsHelixQueue)">./runtests.sh $(TargetFileName) $(NETCoreSdkVersion) $(MicrosoftNETCoreAppRuntimeVersion) $(_HelixFriendlyNameTargetQueue) $(TargetArchitecture) $(RunQuarantinedTests) $(DotnetEfPackageVersion)</Command>
|
||||||
<Command Condition="$(HelixCommand) != ''">$(HelixCommand)</Command>
|
<Command Condition="$(HelixCommand) != ''">$(HelixCommand)</Command>
|
||||||
<Timeout>$(HelixTimeout)</Timeout>
|
<Timeout>$(HelixTimeout)</Timeout>
|
||||||
</HelixWorkItem>
|
</HelixWorkItem>
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
},
|
},
|
||||||
"msbuild-sdks": {
|
"msbuild-sdks": {
|
||||||
"Yarn.MSBuild": "1.15.2",
|
"Yarn.MSBuild": "1.15.2",
|
||||||
"Microsoft.DotNet.Arcade.Sdk": "5.0.0-beta.20151.1",
|
"Microsoft.DotNet.Arcade.Sdk": "5.0.0-beta.20158.2",
|
||||||
"Microsoft.DotNet.Helix.Sdk": "5.0.0-beta.20151.1"
|
"Microsoft.DotNet.Helix.Sdk": "5.0.0-beta.20158.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@
|
||||||
<Reference Include="Microsoft.AspNetCore.Antiforgery" />
|
<Reference Include="Microsoft.AspNetCore.Antiforgery" />
|
||||||
<Reference Include="Microsoft.AspNetCore.Http" />
|
<Reference Include="Microsoft.AspNetCore.Http" />
|
||||||
<Reference Include="Microsoft.Extensions.DependencyInjection" />
|
<Reference Include="Microsoft.Extensions.DependencyInjection" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Reference Include="Microsoft.Extensions.Logging" />
|
<Reference Include="Microsoft.Extensions.Logging" />
|
||||||
<Reference Include="Microsoft.Extensions.WebEncoders" />
|
<Reference Include="Microsoft.Extensions.WebEncoders" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.AspNetCore.Mvc.Testing" />
|
<Reference Include="Microsoft.AspNetCore.Mvc.Testing" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<Target Name="PublishAssets" AfterTargets="Publish">
|
<Target Name="PublishAssets" AfterTargets="Publish">
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,6 @@
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
|
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
|
||||||
|
|
||||||
<!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
|
|
||||||
<!-- https://github.com/dotnet/aspnetcore/issues/10422 -->
|
|
||||||
<BuildHelixPayload>false</BuildHelixPayload>
|
|
||||||
<BaseOutputPath />
|
<BaseOutputPath />
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ Blazor is a component based web UI framework. Blazor apps can run client-side in
|
||||||
|
|
||||||
Blazor uses only the latest web standards. No plugins or transpilation needed. It runs in the browser on a real .NET runtime implemented in [WebAssembly](http://webassembly.org) that executes normal .NET assemblies.
|
Blazor uses only the latest web standards. No plugins or transpilation needed. It runs in the browser on a real .NET runtime implemented in [WebAssembly](http://webassembly.org) that executes normal .NET assemblies.
|
||||||
|
|
||||||
[](https://gitter.im/dotnet/blazor?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
[](https://gitter.im/aspnet/blazor?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
||||||
|
|
||||||
You can learn more about Blazor at https://blazor.net.
|
You can learn more about Blazor at https://blazor.net.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.AspNetCore.Components.Server" />
|
<Reference Include="Microsoft.AspNetCore.Components.Server" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -17,6 +17,8 @@ namespace Microsoft.AspNetCore.Components.Forms
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Parameter] public RenderFragment ChildContent { get; set; }
|
[Parameter] public RenderFragment ChildContent { get; set; }
|
||||||
|
|
||||||
|
private readonly Type _nullableUnderlyingType = Nullable.GetUnderlyingType(typeof(TValue));
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
||||||
{
|
{
|
||||||
|
|
@ -38,7 +40,7 @@ namespace Microsoft.AspNetCore.Components.Forms
|
||||||
validationErrorMessage = null;
|
validationErrorMessage = null;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (typeof(TValue).IsEnum)
|
else if (typeof(TValue).IsEnum || (_nullableUnderlyingType != null && _nullableUnderlyingType.IsEnum))
|
||||||
{
|
{
|
||||||
var success = BindConverter.TryConvertTo<TValue>(value, CultureInfo.CurrentCulture, out var parsedValue);
|
var success = BindConverter.TryConvertTo<TValue>(value, CultureInfo.CurrentCulture, out var parsedValue);
|
||||||
if (success)
|
if (success)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,153 @@
|
||||||
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.AspNetCore.Components.Rendering;
|
||||||
|
using Microsoft.AspNetCore.Components.RenderTree;
|
||||||
|
using Microsoft.AspNetCore.Components.Test.Helpers;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.Components.Forms
|
||||||
|
{
|
||||||
|
public class InputSelectTest
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public async Task ParsesCurrentValueWhenUsingNotNullableEnumWithNotEmptyValue()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var model = new TestModel();
|
||||||
|
var rootComponent = new TestInputSelectHostComponent<TestEnum>
|
||||||
|
{
|
||||||
|
EditContext = new EditContext(model),
|
||||||
|
ValueExpression = () => model.NotNullableEnum
|
||||||
|
};
|
||||||
|
var inputSelectComponent = await RenderAndGetTestInputComponentAsync(rootComponent);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
inputSelectComponent.CurrentValueAsString = "Two";
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Equal(TestEnum.Two, inputSelectComponent.CurrentValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task ParsesCurrentValueWhenUsingNotNullableEnumWithEmptyValue()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var model = new TestModel();
|
||||||
|
var rootComponent = new TestInputSelectHostComponent<TestEnum>
|
||||||
|
{
|
||||||
|
EditContext = new EditContext(model),
|
||||||
|
ValueExpression = () => model.NotNullableEnum
|
||||||
|
};
|
||||||
|
var inputSelectComponent = await RenderAndGetTestInputComponentAsync(rootComponent);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
inputSelectComponent.CurrentValueAsString = "";
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Equal(default, inputSelectComponent.CurrentValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task ParsesCurrentValueWhenUsingNullableEnumWithNotEmptyValue()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var model = new TestModel();
|
||||||
|
var rootComponent = new TestInputSelectHostComponent<TestEnum?>
|
||||||
|
{
|
||||||
|
EditContext = new EditContext(model),
|
||||||
|
ValueExpression = () => model.NullableEnum
|
||||||
|
};
|
||||||
|
var inputSelectComponent = await RenderAndGetTestInputComponentAsync(rootComponent);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
inputSelectComponent.CurrentValueAsString = "Two";
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Equal(TestEnum.Two, inputSelectComponent.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task ParsesCurrentValueWhenUsingNullableEnumWithEmptyValue()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var model = new TestModel();
|
||||||
|
var rootComponent = new TestInputSelectHostComponent<TestEnum?>
|
||||||
|
{
|
||||||
|
EditContext = new EditContext(model),
|
||||||
|
ValueExpression = () => model.NullableEnum
|
||||||
|
};
|
||||||
|
var inputSelectComponent = await RenderAndGetTestInputComponentAsync(rootComponent);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
inputSelectComponent.CurrentValueAsString = "";
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Null(inputSelectComponent.CurrentValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static TestInputSelect<TValue> FindInputSelectComponent<TValue>(CapturedBatch batch)
|
||||||
|
=> batch.ReferenceFrames
|
||||||
|
.Where(f => f.FrameType == RenderTreeFrameType.Component)
|
||||||
|
.Select(f => f.Component)
|
||||||
|
.OfType<TestInputSelect<TValue>>()
|
||||||
|
.Single();
|
||||||
|
|
||||||
|
private static async Task<TestInputSelect<TValue>> RenderAndGetTestInputComponentAsync<TValue>(TestInputSelectHostComponent<TValue> hostComponent)
|
||||||
|
{
|
||||||
|
var testRenderer = new TestRenderer();
|
||||||
|
var componentId = testRenderer.AssignRootComponentId(hostComponent);
|
||||||
|
await testRenderer.RenderRootComponentAsync(componentId);
|
||||||
|
return FindInputSelectComponent<TValue>(testRenderer.Batches.Single());
|
||||||
|
}
|
||||||
|
|
||||||
|
enum TestEnum
|
||||||
|
{
|
||||||
|
One,
|
||||||
|
Two,
|
||||||
|
Tree
|
||||||
|
}
|
||||||
|
|
||||||
|
class TestModel
|
||||||
|
{
|
||||||
|
public TestEnum NotNullableEnum { get; set; }
|
||||||
|
|
||||||
|
public TestEnum? NullableEnum { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
class TestInputSelect<TValue> : InputSelect<TValue>
|
||||||
|
{
|
||||||
|
public new TValue CurrentValue => base.CurrentValue;
|
||||||
|
|
||||||
|
public new string CurrentValueAsString
|
||||||
|
{
|
||||||
|
get => base.CurrentValueAsString;
|
||||||
|
set => base.CurrentValueAsString = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class TestInputSelectHostComponent<TValue> : AutoRenderComponent
|
||||||
|
{
|
||||||
|
public EditContext EditContext { get; set; }
|
||||||
|
|
||||||
|
public Expression<Func<TValue>> ValueExpression { get; set; }
|
||||||
|
|
||||||
|
protected override void BuildRenderTree(RenderTreeBuilder builder)
|
||||||
|
{
|
||||||
|
builder.OpenComponent<CascadingValue<EditContext>>(0);
|
||||||
|
builder.AddAttribute(1, "Value", EditContext);
|
||||||
|
builder.AddAttribute(2, "ChildContent", new RenderFragment(childBuilder =>
|
||||||
|
{
|
||||||
|
childBuilder.OpenComponent<TestInputSelect<TValue>>(0);
|
||||||
|
childBuilder.AddAttribute(0, "ValueExpression", ValueExpression);
|
||||||
|
childBuilder.CloseComponent();
|
||||||
|
}));
|
||||||
|
builder.CloseComponent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -33,7 +33,6 @@
|
||||||
<Reference Include="Microsoft.AspNetCore.Hosting" />
|
<Reference Include="Microsoft.AspNetCore.Hosting" />
|
||||||
<Reference Include="Microsoft.AspNetCore.Server.Kestrel" />
|
<Reference Include="Microsoft.AspNetCore.Server.Kestrel" />
|
||||||
<Reference Include="Microsoft.AspNetCore.StaticFiles" />
|
<Reference Include="Microsoft.AspNetCore.StaticFiles" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Reference Include="Ignitor" />
|
<Reference Include="Ignitor" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,11 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Components.E2ETest;
|
|
||||||
using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures;
|
using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures;
|
||||||
using Microsoft.AspNetCore.Components.RenderTree;
|
using Microsoft.AspNetCore.Components.RenderTree;
|
||||||
using Microsoft.AspNetCore.Components.Web;
|
using Microsoft.AspNetCore.Components.Web;
|
||||||
using Microsoft.AspNetCore.SignalR.Client;
|
using Microsoft.AspNetCore.SignalR.Client;
|
||||||
|
using Microsoft.AspNetCore.Testing;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using TestServer;
|
using TestServer;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
@ -16,6 +16,7 @@ using Xunit.Abstractions;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
||||||
{
|
{
|
||||||
|
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/19666")]
|
||||||
public class ComponentHubInvalidEventTest : IgnitorTest<ServerStartup>
|
public class ComponentHubInvalidEventTest : IgnitorTest<ServerStartup>
|
||||||
{
|
{
|
||||||
public ComponentHubInvalidEventTest(BasicTestAppServerSiteFixture<ServerStartup> serverFixture, ITestOutputHelper output)
|
public ComponentHubInvalidEventTest(BasicTestAppServerSiteFixture<ServerStartup> serverFixture, ITestOutputHelper output)
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ using Xunit.Abstractions;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
||||||
{
|
{
|
||||||
|
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/19666")]
|
||||||
public class ComponentHubReliabilityTest : IgnitorTest<ServerStartup>
|
public class ComponentHubReliabilityTest : IgnitorTest<ServerStartup>
|
||||||
{
|
{
|
||||||
public ComponentHubReliabilityTest(BasicTestAppServerSiteFixture<ServerStartup> serverFixture, ITestOutputHelper output)
|
public ComponentHubReliabilityTest(BasicTestAppServerSiteFixture<ServerStartup> serverFixture, ITestOutputHelper output)
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ using Xunit.Abstractions;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
||||||
{
|
{
|
||||||
|
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/19666")]
|
||||||
public class InteropReliabilityTests : IgnitorTest<ServerStartup>
|
public class InteropReliabilityTests : IgnitorTest<ServerStartup>
|
||||||
{
|
{
|
||||||
public InteropReliabilityTests(BasicTestAppServerSiteFixture<ServerStartup> serverFixture, ITestOutputHelper output)
|
public InteropReliabilityTests(BasicTestAppServerSiteFixture<ServerStartup> serverFixture, ITestOutputHelper output)
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Ignitor;
|
using Ignitor;
|
||||||
using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures;
|
using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures;
|
||||||
|
using Microsoft.AspNetCore.Testing;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using TestServer;
|
using TestServer;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
@ -13,6 +14,7 @@ using Xunit.Abstractions;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
||||||
{
|
{
|
||||||
|
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/19666")]
|
||||||
public class RemoteRendererBufferLimitTest : IgnitorTest<ServerStartup>
|
public class RemoteRendererBufferLimitTest : IgnitorTest<ServerStartup>
|
||||||
{
|
{
|
||||||
public RemoteRendererBufferLimitTest(BasicTestAppServerSiteFixture<ServerStartup> serverFixture, ITestOutputHelper output)
|
public RemoteRendererBufferLimitTest(BasicTestAppServerSiteFixture<ServerStartup> serverFixture, ITestOutputHelper output)
|
||||||
|
|
@ -31,7 +33,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
||||||
await Client.SelectAsync("test-selector-select", "BasicTestApp.LimitCounterComponent");
|
await Client.SelectAsync("test-selector-select", "BasicTestApp.LimitCounterComponent");
|
||||||
Client.ConfirmRenderBatch = false;
|
Client.ConfirmRenderBatch = false;
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++)
|
for (var i = 0; i < 10; i++)
|
||||||
{
|
{
|
||||||
await Client.ClickAsync("increment");
|
await Client.ClickAsync("increment");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
|
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
|
||||||
|
|
||||||
|
|
@ -26,6 +25,5 @@
|
||||||
<ProjectReference Include="$(RepoRoot)src\DefaultBuilder\testassets\StartWithIApplicationBuilderUrlApp\StartWithIApplicationBuilderUrlApp.csproj" ReferenceOutputAssemblies="false" />
|
<ProjectReference Include="$(RepoRoot)src\DefaultBuilder\testassets\StartWithIApplicationBuilderUrlApp\StartWithIApplicationBuilderUrlApp.csproj" ReferenceOutputAssemblies="false" />
|
||||||
|
|
||||||
<Reference Include="Microsoft.AspNetCore" />
|
<Reference Include="Microsoft.AspNetCore" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@
|
||||||
<Reference Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" />
|
<Reference Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" />
|
||||||
<Reference Include="Microsoft.Extensions.Hosting.Abstractions" />
|
<Reference Include="Microsoft.Extensions.Hosting.Abstractions" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Abstractions" />
|
<Reference Include="Microsoft.Extensions.Logging.Abstractions" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Reference Include="Microsoft.Extensions.Logging" />
|
<Reference Include="Microsoft.Extensions.Logging" />
|
||||||
<Reference Include="Microsoft.Extensions.Options" />
|
<Reference Include="Microsoft.Extensions.Options" />
|
||||||
<Reference Include="Microsoft.Extensions.Primitives" />
|
<Reference Include="Microsoft.Extensions.Primitives" />
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@
|
||||||
<Reference Include="Microsoft.AspNetCore.Owin" />
|
<Reference Include="Microsoft.AspNetCore.Owin" />
|
||||||
<Reference Include="Microsoft.AspNetCore.Hosting" />
|
<Reference Include="Microsoft.AspNetCore.Hosting" />
|
||||||
<Reference Include="Microsoft.Extensions.Hosting" />
|
<Reference Include="Microsoft.Extensions.Hosting" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Reference Include="Microsoft.Extensions.Options" />
|
<Reference Include="Microsoft.Extensions.Options" />
|
||||||
<Reference Include="System.Threading.Channels" />
|
<Reference Include="System.Threading.Channels" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@
|
||||||
|
|
||||||
<Reference Include="Microsoft.AspNetCore.Hosting" />
|
<Reference Include="Microsoft.AspNetCore.Hosting" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Console" />
|
<Reference Include="Microsoft.Extensions.Logging.Console" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@
|
||||||
<Reference Include="Microsoft.Extensions.DependencyInjection" />
|
<Reference Include="Microsoft.Extensions.DependencyInjection" />
|
||||||
<Reference Include="Microsoft.AspNetCore.Routing" />
|
<Reference Include="Microsoft.AspNetCore.Routing" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging" />
|
<Reference Include="Microsoft.Extensions.Logging" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Reference Include="Microsoft.Extensions.WebEncoders" />
|
<Reference Include="Microsoft.Extensions.WebEncoders" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@
|
||||||
<ProjectReference Include="..\..\testassets\Identity.DefaultUI.WebSite\Identity.DefaultUI.WebSite.csproj" />
|
<ProjectReference Include="..\..\testassets\Identity.DefaultUI.WebSite\Identity.DefaultUI.WebSite.csproj" />
|
||||||
|
|
||||||
<Reference Include="Microsoft.AspNetCore.Mvc.Testing" />
|
<Reference Include="Microsoft.AspNetCore.Mvc.Testing" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Reference Include="Microsoft.EntityFrameworkCore.Sqlite" />
|
<Reference Include="Microsoft.EntityFrameworkCore.Sqlite" />
|
||||||
<Reference Include="AngleSharp" />
|
<Reference Include="AngleSharp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@
|
||||||
<Reference Include="Microsoft.Extensions.Localization.Abstractions" />
|
<Reference Include="Microsoft.Extensions.Localization.Abstractions" />
|
||||||
<Reference Include="Microsoft.Extensions.Localization" />
|
<Reference Include="Microsoft.Extensions.Localization" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Abstractions" />
|
<Reference Include="Microsoft.Extensions.Logging.Abstractions" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Reference Include="Microsoft.Extensions.Options" />
|
<Reference Include="Microsoft.Extensions.Options" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@
|
||||||
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions" />
|
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions" />
|
||||||
<Reference Include="Microsoft.Extensions.DependencyInjection" />
|
<Reference Include="Microsoft.Extensions.DependencyInjection" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Abstractions" />
|
<Reference Include="Microsoft.Extensions.Logging.Abstractions" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Reference Include="Microsoft.Extensions.Logging" />
|
<Reference Include="Microsoft.Extensions.Logging" />
|
||||||
<Reference Include="Microsoft.Extensions.Options" />
|
<Reference Include="Microsoft.Extensions.Options" />
|
||||||
<Reference Include="Microsoft.Extensions.Primitives" />
|
<Reference Include="Microsoft.Extensions.Primitives" />
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.AspNetCore.Cors" />
|
<Reference Include="Microsoft.AspNetCore.Cors" />
|
||||||
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" />
|
<Reference Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" />
|
||||||
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.AspNetCore.HttpOverrides" />
|
<Reference Include="Microsoft.AspNetCore.HttpOverrides" />
|
||||||
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Content Include="$(SharedSourceRoot)test\Certificates\*.cer" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="PreserveNewest" />
|
<Content Include="$(SharedSourceRoot)test\Certificates\*.cer" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="PreserveNewest" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.AspNetCore.HttpsPolicy" />
|
<Reference Include="Microsoft.AspNetCore.HttpsPolicy" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@
|
||||||
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
||||||
<Reference Include="Microsoft.Extensions.DependencyInjection" />
|
<Reference Include="Microsoft.Extensions.DependencyInjection" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging" />
|
<Reference Include="Microsoft.Extensions.Logging" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.AspNetCore.NodeServices" />
|
<Reference Include="Microsoft.AspNetCore.NodeServices" />
|
||||||
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Content Include="js\**\*" />
|
<Content Include="js\**\*" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
|
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
@ -14,7 +13,6 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.AspNetCore.ResponseCaching" />
|
<Reference Include="Microsoft.AspNetCore.ResponseCaching" />
|
||||||
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@
|
||||||
<Reference Include="Microsoft.AspNetCore.Http" />
|
<Reference Include="Microsoft.AspNetCore.Http" />
|
||||||
<Reference Include="Microsoft.AspNetCore.ResponseCompression" />
|
<Reference Include="Microsoft.AspNetCore.ResponseCompression" />
|
||||||
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Reference Include="Microsoft.Net.Http.Headers" />
|
<Reference Include="Microsoft.Net.Http.Headers" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@
|
||||||
<Reference Include="Microsoft.AspNetCore.Session" />
|
<Reference Include="Microsoft.AspNetCore.Session" />
|
||||||
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
||||||
<Reference Include="Microsoft.Extensions.Caching.Memory" />
|
<Reference Include="Microsoft.Extensions.Caching.Memory" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@
|
||||||
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
||||||
<Reference Include="Microsoft.Extensions.DiagnosticAdapter" />
|
<Reference Include="Microsoft.Extensions.DiagnosticAdapter" />
|
||||||
<Reference Include="Microsoft.Extensions.Hosting" />
|
<Reference Include="Microsoft.Extensions.Hosting" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Content Include="js\**\*" />
|
<Content Include="js\**\*" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -343,6 +343,7 @@ namespace Microsoft.AspNetCore.StaticFiles
|
||||||
{ ".wcm", "application/vnd.ms-works" },
|
{ ".wcm", "application/vnd.ms-works" },
|
||||||
{ ".wdb", "application/vnd.ms-works" },
|
{ ".wdb", "application/vnd.ms-works" },
|
||||||
{ ".webm", "video/webm" },
|
{ ".webm", "video/webm" },
|
||||||
|
{ ".webmanifest", "application/manifest+json" }, // https://w3c.github.io/manifest/#media-type-registration
|
||||||
{ ".webp", "image/webp" },
|
{ ".webp", "image/webp" },
|
||||||
{ ".wks", "application/vnd.ms-works" },
|
{ ".wks", "application/vnd.ms-works" },
|
||||||
{ ".wm", "video/x-ms-wm" },
|
{ ".wm", "video/x-ms-wm" },
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Server.IntegrationTesting;
|
using Microsoft.AspNetCore.Server.IntegrationTesting;
|
||||||
using Microsoft.AspNetCore.Server.IntegrationTesting.Common;
|
using Microsoft.AspNetCore.Server.IntegrationTesting.Common;
|
||||||
|
using Microsoft.AspNetCore.Testing;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.FileProviders;
|
using Microsoft.Extensions.FileProviders;
|
||||||
using Microsoft.Extensions.Logging.Testing;
|
using Microsoft.Extensions.Logging.Testing;
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,6 @@
|
||||||
<Reference Include="Microsoft.AspNetCore.StaticFiles" />
|
<Reference Include="Microsoft.AspNetCore.StaticFiles" />
|
||||||
<Reference Include="Microsoft.AspNetCore.Server.HttpSys" />
|
<Reference Include="Microsoft.AspNetCore.Server.HttpSys" />
|
||||||
<Reference Include="Microsoft.AspNetCore.Server.Kestrel" />
|
<Reference Include="Microsoft.AspNetCore.Server.Kestrel" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@
|
||||||
|
|
||||||
<Reference Include="Microsoft.AspNetCore.Server.Kestrel" />
|
<Reference Include="Microsoft.AspNetCore.Server.Kestrel" />
|
||||||
<Reference Include="Microsoft.AspNetCore.WebSockets" />
|
<Reference Include="Microsoft.AspNetCore.WebSockets" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,6 @@
|
||||||
<Reference Include="Microsoft.Extensions.Configuration.UserSecrets" />
|
<Reference Include="Microsoft.Extensions.Configuration.UserSecrets" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Abstractions" />
|
<Reference Include="Microsoft.Extensions.Logging.Abstractions" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Console" />
|
<Reference Include="Microsoft.Extensions.Logging.Console" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Reference Include="Microsoft.Extensions.Logging" />
|
<Reference Include="Microsoft.Extensions.Logging" />
|
||||||
|
|
||||||
<Compile Include="$(SharedSourceRoot)CommandLineUtils\**\*.cs" />
|
<Compile Include="$(SharedSourceRoot)CommandLineUtils\**\*.cs" />
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.AspNetCore.Authentication.Core" />
|
<Reference Include="Microsoft.AspNetCore.Authentication.Core" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
||||||
using Microsoft.Extensions.Logging.Testing;
|
using Microsoft.Extensions.Logging.Testing;
|
||||||
|
using Microsoft.AspNetCore.Testing;
|
||||||
using Microsoft.AspNetCore.WebUtilities;
|
using Microsoft.AspNetCore.WebUtilities;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Moq;
|
using Moq;
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,5 @@
|
||||||
<ProjectReference Include="..\..\shared\Mvc.TestDiagnosticListener\Microsoft.AspNetCore.Mvc.TestDiagnosticListener.csproj" />
|
<ProjectReference Include="..\..\shared\Mvc.TestDiagnosticListener\Microsoft.AspNetCore.Mvc.TestDiagnosticListener.csproj" />
|
||||||
|
|
||||||
<Reference Include="Microsoft.AspNetCore.ResponseCaching" />
|
<Reference Include="Microsoft.AspNetCore.ResponseCaching" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,5 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\..\shared\Mvc.Core.TestCommon\Microsoft.AspNetCore.Mvc.Core.TestCommon.csproj" />
|
<ProjectReference Include="..\..\shared\Mvc.Core.TestCommon\Microsoft.AspNetCore.Mvc.Core.TestCommon.csproj" />
|
||||||
|
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,6 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\..\shared\Mvc.Core.TestCommon\Microsoft.AspNetCore.Mvc.Core.TestCommon.csproj" />
|
<ProjectReference Include="..\..\shared\Mvc.Core.TestCommon\Microsoft.AspNetCore.Mvc.Core.TestCommon.csproj" />
|
||||||
|
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@
|
||||||
<Reference Include="Microsoft.AspNetCore.Mvc" />
|
<Reference Include="Microsoft.AspNetCore.Mvc" />
|
||||||
<Reference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" />
|
<Reference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" />
|
||||||
<ProjectReference Include="..\..\shared\Mvc.Core.TestCommon\Microsoft.AspNetCore.Mvc.Core.TestCommon.csproj" />
|
<ProjectReference Include="..\..\shared\Mvc.Core.TestCommon\Microsoft.AspNetCore.Mvc.Core.TestCommon.csproj" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,6 @@
|
||||||
<Reference Include="Microsoft.AspNetCore.Mvc" />
|
<Reference Include="Microsoft.AspNetCore.Mvc" />
|
||||||
<ProjectReference Include="..\..\shared\Mvc.Views.TestCommon\Microsoft.AspNetCore.Mvc.Views.TestCommon.csproj" />
|
<ProjectReference Include="..\..\shared\Mvc.Views.TestCommon\Microsoft.AspNetCore.Mvc.Views.TestCommon.csproj" />
|
||||||
<ProjectReference Include="..\..\shared\Mvc.TestDiagnosticListener\Microsoft.AspNetCore.Mvc.TestDiagnosticListener.csproj" />
|
<ProjectReference Include="..\..\shared\Mvc.TestDiagnosticListener\Microsoft.AspNetCore.Mvc.TestDiagnosticListener.csproj" />
|
||||||
|
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,6 @@
|
||||||
<Reference Include="Microsoft.AspNetCore.Mvc.RazorPages" />
|
<Reference Include="Microsoft.AspNetCore.Mvc.RazorPages" />
|
||||||
<ProjectReference Include="..\..\shared\Mvc.Views.TestCommon\Microsoft.AspNetCore.Mvc.Views.TestCommon.csproj" />
|
<ProjectReference Include="..\..\shared\Mvc.Views.TestCommon\Microsoft.AspNetCore.Mvc.Views.TestCommon.csproj" />
|
||||||
<ProjectReference Include="..\..\shared\Mvc.TestDiagnosticListener\Microsoft.AspNetCore.Mvc.TestDiagnosticListener.csproj" />
|
<ProjectReference Include="..\..\shared\Mvc.TestDiagnosticListener\Microsoft.AspNetCore.Mvc.TestDiagnosticListener.csproj" />
|
||||||
|
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation;
|
using Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
|
using Microsoft.AspNetCore.Testing;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Logging.Testing;
|
using Microsoft.Extensions.Logging.Testing;
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ using HtmlGenerationWebSite;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc.Testing;
|
using Microsoft.AspNetCore.Mvc.Testing;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
|
using Microsoft.AspNetCore.Testing;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Logging.Testing;
|
using Microsoft.Extensions.Logging.Testing;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,5 @@
|
||||||
<Reference Include="Microsoft.AspNetCore.Routing.Abstractions" />
|
<Reference Include="Microsoft.AspNetCore.Routing.Abstractions" />
|
||||||
<Reference Include="Microsoft.AspNetCore.Routing" />
|
<Reference Include="Microsoft.AspNetCore.Routing" />
|
||||||
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ namespace Templates.Test
|
||||||
|
|
||||||
[ConditionalFact]
|
[ConditionalFact]
|
||||||
[SkipOnHelix("Not supported queues", Queues = "Windows.7.Amd64;Windows.7.Amd64.Open;OSX.1014.Amd64;OSX.1014.Amd64.Open")]
|
[SkipOnHelix("Not supported queues", Queues = "Windows.7.Amd64;Windows.7.Amd64.Open;OSX.1014.Amd64;OSX.1014.Amd64.Open")]
|
||||||
|
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/19716")]
|
||||||
public async Task GrpcTemplate()
|
public async Task GrpcTemplate()
|
||||||
{
|
{
|
||||||
Project = await ProjectFactory.GetOrCreateProject("grpc", Output);
|
Project = await ProjectFactory.GetOrCreateProject("grpc", Output);
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.Extensions.CommandLineUtils;
|
using Microsoft.Extensions.CommandLineUtils;
|
||||||
|
|
@ -28,12 +29,11 @@ namespace Templates.Test.Helpers
|
||||||
? GetAssemblyMetadata("ArtifactsLogDir")
|
? GetAssemblyMetadata("ArtifactsLogDir")
|
||||||
: Path.Combine(Environment.GetEnvironmentVariable("HELIX_DIR"), "logs");
|
: Path.Combine(Environment.GetEnvironmentVariable("HELIX_DIR"), "logs");
|
||||||
|
|
||||||
// FIGURE OUT EF PATH
|
public static string DotNetEfFullPath => (string.IsNullOrEmpty(Environment.GetEnvironmentVariable("DotNetEfFullPath")))
|
||||||
public static string DotNetEfFullPath => (string.IsNullOrEmpty(Environment.GetEnvironmentVariable("helix")))
|
|
||||||
? typeof(ProjectFactoryFixture).Assembly.GetCustomAttributes<AssemblyMetadataAttribute>()
|
? typeof(ProjectFactoryFixture).Assembly.GetCustomAttributes<AssemblyMetadataAttribute>()
|
||||||
.First(attribute => attribute.Key == "DotNetEfFullPath")
|
.First(attribute => attribute.Key == "DotNetEfFullPath")
|
||||||
.Value
|
.Value
|
||||||
: Path.Combine("NuGetPackageRoot", "dotnet-ef/$(DotnetEfPackageVersion)/tools/netcoreapp3.1/any/dotnet-ef.dll");
|
: Environment.GetEnvironmentVariable("DotNetEfFullPath");
|
||||||
|
|
||||||
public SemaphoreSlim DotNetNewLock { get; set; }
|
public SemaphoreSlim DotNetNewLock { get; set; }
|
||||||
public SemaphoreSlim NodeLock { get; set; }
|
public SemaphoreSlim NodeLock { get; set; }
|
||||||
|
|
@ -306,14 +306,24 @@ namespace Templates.Test.Helpers
|
||||||
|
|
||||||
internal async Task<ProcessEx> RunDotNetEfCreateMigrationAsync(string migrationName)
|
internal async Task<ProcessEx> RunDotNetEfCreateMigrationAsync(string migrationName)
|
||||||
{
|
{
|
||||||
var args = $"\"{DotNetEfFullPath}\" --verbose --no-build migrations add {migrationName}";
|
var args = $"--verbose --no-build migrations add {migrationName}";
|
||||||
|
|
||||||
// Only run one instance of 'dotnet new' at once, as a workaround for
|
// Only run one instance of 'dotnet new' at once, as a workaround for
|
||||||
// https://github.com/aspnet/templating/issues/63
|
// https://github.com/aspnet/templating/issues/63
|
||||||
await DotNetNewLock.WaitAsync();
|
await DotNetNewLock.WaitAsync();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var result = ProcessEx.Run(Output, TemplateOutputDir, DotNetMuxer.MuxerPathOrDefault(), args);
|
var command = DotNetMuxer.MuxerPathOrDefault();
|
||||||
|
if (string.IsNullOrEmpty(Environment.GetEnvironmentVariable("DotNetEfFullPath")))
|
||||||
|
{
|
||||||
|
args = $"\"{DotNetEfFullPath}\" " + args;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
command = "dotnet-ef";
|
||||||
|
}
|
||||||
|
|
||||||
|
var result = ProcessEx.Run(Output, TemplateOutputDir, command, args);
|
||||||
await result.Exited;
|
await result.Exited;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
@ -325,14 +335,24 @@ namespace Templates.Test.Helpers
|
||||||
|
|
||||||
internal async Task<ProcessEx> RunDotNetEfUpdateDatabaseAsync()
|
internal async Task<ProcessEx> RunDotNetEfUpdateDatabaseAsync()
|
||||||
{
|
{
|
||||||
var args = $"\"{DotNetEfFullPath}\" --verbose --no-build database update";
|
var args = "--verbose --no-build database update";
|
||||||
|
|
||||||
// Only run one instance of 'dotnet new' at once, as a workaround for
|
// Only run one instance of 'dotnet new' at once, as a workaround for
|
||||||
// https://github.com/aspnet/templating/issues/63
|
// https://github.com/aspnet/templating/issues/63
|
||||||
await DotNetNewLock.WaitAsync();
|
await DotNetNewLock.WaitAsync();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var result = ProcessEx.Run(Output, TemplateOutputDir, DotNetMuxer.MuxerPathOrDefault(), args);
|
var command = DotNetMuxer.MuxerPathOrDefault();
|
||||||
|
if (string.IsNullOrEmpty(Environment.GetEnvironmentVariable("DotNetEfFullPath")))
|
||||||
|
{
|
||||||
|
args = $"\"{DotNetEfFullPath}\" " + args;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
command = "dotnet-ef";
|
||||||
|
}
|
||||||
|
|
||||||
|
var result = ProcessEx.Run(Output, TemplateOutputDir, command, args);
|
||||||
await result.Exited;
|
await result.Exited;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,8 @@ namespace Templates.Test
|
||||||
|
|
||||||
[ConditionalTheory]
|
[ConditionalTheory]
|
||||||
[MemberData(nameof(MSBuildIdentityUIPackageOptions))]
|
[MemberData(nameof(MSBuildIdentityUIPackageOptions))]
|
||||||
[SkipOnHelix("ef restore no worky")]
|
[SkipOnHelix("cert failure", Queues = "OSX.1014.Amd64;OSX.1014.Amd64.Open")]
|
||||||
|
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/19716")]
|
||||||
public async Task IdentityUIPackage_WorksWithDifferentOptions(IDictionary<string, string> packageOptions, string versionValidator, string[] expectedFiles)
|
public async Task IdentityUIPackage_WorksWithDifferentOptions(IDictionary<string, string> packageOptions, string versionValidator, string[] expectedFiles)
|
||||||
{
|
{
|
||||||
Project = await ProjectFactory.GetOrCreateProject("identityuipackage" + string.Concat(packageOptions.Values), Output);
|
Project = await ProjectFactory.GetOrCreateProject("identityuipackage" + string.Concat(packageOptions.Values), Output);
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,12 @@
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Templates.Test.Helpers;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.AspNetCore.Testing;
|
||||||
|
using Templates.Test.Helpers;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
using Xunit.Abstractions;
|
using Xunit.Abstractions;
|
||||||
using Microsoft.AspNetCore.Testing;
|
|
||||||
|
|
||||||
namespace Templates.Test
|
namespace Templates.Test
|
||||||
{
|
{
|
||||||
|
|
@ -107,7 +107,8 @@ namespace Templates.Test
|
||||||
[ConditionalTheory]
|
[ConditionalTheory]
|
||||||
[InlineData(true)]
|
[InlineData(true)]
|
||||||
[InlineData(false)]
|
[InlineData(false)]
|
||||||
[SkipOnHelix("ef restore no worky")]
|
[SkipOnHelix("cert failure", Queues = "OSX.1014.Amd64;OSX.1014.Amd64.Open")]
|
||||||
|
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/19716")]
|
||||||
public async Task MvcTemplate_IndividualAuth(bool useLocalDB)
|
public async Task MvcTemplate_IndividualAuth(bool useLocalDB)
|
||||||
{
|
{
|
||||||
Project = await ProjectFactory.GetOrCreateProject("mvcindividual" + (useLocalDB ? "uld" : ""), Output);
|
Project = await ProjectFactory.GetOrCreateProject("mvcindividual" + (useLocalDB ? "uld" : ""), Output);
|
||||||
|
|
@ -222,8 +223,8 @@ namespace Templates.Test
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[ConditionalFact]
|
[Fact]
|
||||||
[SkipOnHelix("razor compilation restore no worky")]
|
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/19716")]
|
||||||
public async Task MvcTemplate_RazorRuntimeCompilation_BuildsAndPublishes()
|
public async Task MvcTemplate_RazorRuntimeCompilation_BuildsAndPublishes()
|
||||||
{
|
{
|
||||||
Project = await ProjectFactory.GetOrCreateProject("mvc_rc", Output);
|
Project = await ProjectFactory.GetOrCreateProject("mvc_rc", Output);
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,10 @@
|
||||||
// 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.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.AspNetCore.Testing;
|
||||||
using Templates.Test.Helpers;
|
using Templates.Test.Helpers;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
using Xunit.Abstractions;
|
using Xunit.Abstractions;
|
||||||
using Microsoft.AspNetCore.Testing;
|
|
||||||
|
|
||||||
namespace Templates.Test
|
namespace Templates.Test
|
||||||
{
|
{
|
||||||
|
|
@ -41,8 +41,8 @@ namespace Templates.Test
|
||||||
Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", Project, buildResult));
|
Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", Project, buildResult));
|
||||||
}
|
}
|
||||||
|
|
||||||
[ConditionalFact]
|
[Fact]
|
||||||
[SkipOnHelix("restore no worky")]
|
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/19716")]
|
||||||
public async Task RazorClassLibraryTemplateAsync()
|
public async Task RazorClassLibraryTemplateAsync()
|
||||||
{
|
{
|
||||||
Project = await ProjectFactory.GetOrCreateProject("razorclasslib", Output);
|
Project = await ProjectFactory.GetOrCreateProject("razorclasslib", Output);
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,8 @@ namespace Templates.Test
|
||||||
[ConditionalTheory]
|
[ConditionalTheory]
|
||||||
[InlineData(false)]
|
[InlineData(false)]
|
||||||
[InlineData(true)]
|
[InlineData(true)]
|
||||||
[SkipOnHelix("ef restore no worky")]
|
[SkipOnHelix("cert failure", Queues = "OSX.1014.Amd64;OSX.1014.Amd64.Open")]
|
||||||
|
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/19716")]
|
||||||
public async Task RazorPagesTemplate_IndividualAuth(bool useLocalDB)
|
public async Task RazorPagesTemplate_IndividualAuth(bool useLocalDB)
|
||||||
{
|
{
|
||||||
Project = await ProjectFactory.GetOrCreateProject("razorpagesindividual" + (useLocalDB ? "uld" : ""), Output);
|
Project = await ProjectFactory.GetOrCreateProject("razorpagesindividual" + (useLocalDB ? "uld" : ""), Output);
|
||||||
|
|
@ -212,8 +213,8 @@ namespace Templates.Test
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[ConditionalFact]
|
[Fact]
|
||||||
[SkipOnHelix("runtime compliation restore no worky")]
|
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/19716")]
|
||||||
public async Task RazorPagesTemplate_RazorRuntimeCompilation_BuildsAndPublishes()
|
public async Task RazorPagesTemplate_RazorRuntimeCompilation_BuildsAndPublishes()
|
||||||
{
|
{
|
||||||
Project = await ProjectFactory.GetOrCreateProject("razorpages_rc", Output);
|
Project = await ProjectFactory.GetOrCreateProject("razorpages_rc", Output);
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,8 @@ namespace Templates.Test
|
||||||
public ProjectFactoryFixture ProjectFactory { get; }
|
public ProjectFactoryFixture ProjectFactory { get; }
|
||||||
public ITestOutputHelper Output { get; }
|
public ITestOutputHelper Output { get; }
|
||||||
|
|
||||||
[ConditionalFact]
|
[Fact]
|
||||||
[SkipOnHelix("restore no worky")]
|
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/19716")]
|
||||||
public async Task WorkerTemplateAsync()
|
public async Task WorkerTemplateAsync()
|
||||||
{
|
{
|
||||||
Project = await ProjectFactory.GetOrCreateProject("worker", Output);
|
Project = await ProjectFactory.GetOrCreateProject("worker", Output);
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ using System.IO;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Server.IIS.FunctionalTests;
|
using Microsoft.AspNetCore.Server.IIS.FunctionalTests;
|
||||||
using Microsoft.AspNetCore.Server.IntegrationTesting.IIS;
|
using Microsoft.AspNetCore.Server.IntegrationTesting.IIS;
|
||||||
|
using Microsoft.AspNetCore.Testing;
|
||||||
using Microsoft.Extensions.Logging.Testing;
|
using Microsoft.Extensions.Logging.Testing;
|
||||||
using Xunit.Abstractions;
|
using Xunit.Abstractions;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ using System.Collections.Generic;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using Microsoft.AspNetCore.Server.IntegrationTesting;
|
using Microsoft.AspNetCore.Server.IntegrationTesting;
|
||||||
using Microsoft.AspNetCore.Server.IntegrationTesting.IIS;
|
using Microsoft.AspNetCore.Server.IntegrationTesting.IIS;
|
||||||
|
using Microsoft.AspNetCore.Testing;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Logging.Testing;
|
using Microsoft.Extensions.Logging.Testing;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
|
<TargetFramework>$(DefaultNetCoreTargetFramework)</TargetFramework>
|
||||||
<TestGroupName>IIS.FunctionalTests</TestGroupName>
|
<TestGroupName>IIS.FunctionalTests</TestGroupName>
|
||||||
|
|
@ -24,7 +23,6 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.AspNetCore.Hosting" />
|
<Reference Include="Microsoft.AspNetCore.Hosting" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Reference Include="Microsoft.Extensions.Logging" />
|
<Reference Include="Microsoft.Extensions.Logging" />
|
||||||
<Reference Include="System.Diagnostics.EventLog" />
|
<Reference Include="System.Diagnostics.EventLog" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,6 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.AspNetCore.Hosting" />
|
<Reference Include="Microsoft.AspNetCore.Hosting" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Reference Include="Microsoft.Extensions.Logging" />
|
<Reference Include="Microsoft.Extensions.Logging" />
|
||||||
<Reference Include="System.Diagnostics.EventLog" />
|
<Reference Include="System.Diagnostics.EventLog" />
|
||||||
<Reference Include="System.Net.WebSockets.WebSocketProtocol" />
|
<Reference Include="System.Net.WebSockets.WebSocketProtocol" />
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,6 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.AspNetCore.Hosting" />
|
<Reference Include="Microsoft.AspNetCore.Hosting" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging" />
|
<Reference Include="Microsoft.Extensions.Logging" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Reference Include="System.Diagnostics.EventLog" />
|
<Reference Include="System.Diagnostics.EventLog" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,6 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.AspNetCore.Hosting" />
|
<Reference Include="Microsoft.AspNetCore.Hosting" />
|
||||||
<Reference Include="Microsoft.AspNetCore.Server.IIS" />
|
<Reference Include="Microsoft.AspNetCore.Server.IIS" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Reference Include="Microsoft.Extensions.Logging" />
|
<Reference Include="Microsoft.Extensions.Logging" />
|
||||||
<Reference Include="System.Diagnostics.EventLog" />
|
<Reference Include="System.Diagnostics.EventLog" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -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.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.AspNetCore.Testing;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Logging.Testing;
|
using Microsoft.Extensions.Logging.Testing;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,6 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.AspNetCore.Hosting" />
|
<Reference Include="Microsoft.AspNetCore.Hosting" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging" />
|
<Reference Include="Microsoft.Extensions.Logging" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
|
||||||
<Reference Include="System.Diagnostics.EventLog" />
|
<Reference Include="System.Diagnostics.EventLog" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||||
private int _highestOpenedStreamId;
|
private int _highestOpenedStreamId;
|
||||||
private bool _gracefulCloseStarted;
|
private bool _gracefulCloseStarted;
|
||||||
|
|
||||||
private readonly Dictionary<int, Http2Stream> _streams = new Dictionary<int, Http2Stream>();
|
|
||||||
private int _clientActiveStreamCount = 0;
|
private int _clientActiveStreamCount = 0;
|
||||||
private int _serverActiveStreamCount = 0;
|
private int _serverActiveStreamCount = 0;
|
||||||
|
|
||||||
|
|
@ -66,6 +65,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||||
private int _isClosed;
|
private int _isClosed;
|
||||||
|
|
||||||
// Internal for testing
|
// Internal for testing
|
||||||
|
internal readonly Dictionary<int, Http2Stream> _streams = new Dictionary<int, Http2Stream>();
|
||||||
internal Http2StreamStack StreamPool;
|
internal Http2StreamStack StreamPool;
|
||||||
|
|
||||||
internal const int InitialStreamPoolSize = 5;
|
internal const int InitialStreamPoolSize = 5;
|
||||||
|
|
@ -304,6 +304,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||||
UpdateCompletedStreams();
|
UpdateCompletedStreams();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
while (StreamPool.TryPop(out var pooledStream))
|
||||||
|
{
|
||||||
|
pooledStream.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
// This cancels keep-alive and request header timeouts, but not the response drain timeout.
|
// This cancels keep-alive and request header timeouts, but not the response drain timeout.
|
||||||
TimeoutControl.CancelTimeout();
|
TimeoutControl.CancelTimeout();
|
||||||
TimeoutControl.StartDrainTimeout(Limits.MinResponseDataRate, Limits.MaxResponseBufferSize);
|
TimeoutControl.StartDrainTimeout(Limits.MinResponseDataRate, Limits.MaxResponseBufferSize);
|
||||||
|
|
@ -909,6 +914,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||||
}
|
}
|
||||||
catch (Http2StreamErrorException)
|
catch (Http2StreamErrorException)
|
||||||
{
|
{
|
||||||
|
_currentHeadersStream.Dispose();
|
||||||
ResetRequestHeaderParsingState();
|
ResetRequestHeaderParsingState();
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
|
|
@ -1069,11 +1075,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||||
throw new Http2ConnectionErrorException(CoreStrings.FormatHttp2ErrorStreamClosed(_incomingFrame.Type, _incomingFrame.StreamId), Http2ErrorCode.STREAM_CLOSED);
|
throw new Http2ConnectionErrorException(CoreStrings.FormatHttp2ErrorStreamClosed(_incomingFrame.Type, _incomingFrame.StreamId), Http2ErrorCode.STREAM_CLOSED);
|
||||||
}
|
}
|
||||||
|
|
||||||
_streams.Remove(stream.StreamId);
|
RemoveStream(stream);
|
||||||
if (stream.CanReuse)
|
|
||||||
{
|
|
||||||
ReturnStream(stream);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -1087,6 +1089,19 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void RemoveStream(Http2Stream stream)
|
||||||
|
{
|
||||||
|
_streams.Remove(stream.StreamId);
|
||||||
|
if (stream.CanReuse)
|
||||||
|
{
|
||||||
|
ReturnStream(stream);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stream.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Compare to UpdateCompletedStreams, but only removes streams if over the max stream drain limit.
|
// Compare to UpdateCompletedStreams, but only removes streams if over the max stream drain limit.
|
||||||
private void MakeSpaceInDrainQueue()
|
private void MakeSpaceInDrainQueue()
|
||||||
{
|
{
|
||||||
|
|
@ -1099,11 +1114,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||||
_serverActiveStreamCount--;
|
_serverActiveStreamCount--;
|
||||||
}
|
}
|
||||||
|
|
||||||
_streams.Remove(stream.StreamId);
|
RemoveStream(stream);
|
||||||
if (stream.CanReuse)
|
|
||||||
{
|
|
||||||
ReturnStream(stream);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1460,7 +1471,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||||
Unknown = 0x40000000
|
Unknown = 0x40000000
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static class GracefulCloseInitiator
|
private static class GracefulCloseInitiator
|
||||||
{
|
{
|
||||||
public const int None = 0;
|
public const int None = 0;
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ using System.Diagnostics;
|
||||||
using System.IO.Pipelines;
|
using System.IO.Pipelines;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Threading.Tasks.Sources;
|
||||||
using Microsoft.AspNetCore.Connections;
|
using Microsoft.AspNetCore.Connections;
|
||||||
using Microsoft.AspNetCore.Internal;
|
using Microsoft.AspNetCore.Internal;
|
||||||
using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http;
|
using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http;
|
||||||
|
|
@ -17,7 +18,7 @@ using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||||
{
|
{
|
||||||
internal class Http2OutputProducer : IHttpOutputProducer, IHttpOutputAborter
|
internal class Http2OutputProducer : IHttpOutputProducer, IHttpOutputAborter, IValueTaskSource<FlushResult>, IDisposable
|
||||||
{
|
{
|
||||||
private int StreamId => _stream.StreamId;
|
private int StreamId => _stream.StreamId;
|
||||||
private readonly Http2FrameWriter _frameWriter;
|
private readonly Http2FrameWriter _frameWriter;
|
||||||
|
|
@ -33,14 +34,28 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||||
private readonly Pipe _pipe;
|
private readonly Pipe _pipe;
|
||||||
private readonly ConcurrentPipeWriter _pipeWriter;
|
private readonly ConcurrentPipeWriter _pipeWriter;
|
||||||
private readonly PipeReader _pipeReader;
|
private readonly PipeReader _pipeReader;
|
||||||
private ValueTask<FlushResult> _dataWriteProcessingTask;
|
private readonly ManualResetValueTaskSource<object> _resetAwaitable = new ManualResetValueTaskSource<object>();
|
||||||
|
private IMemoryOwner<byte> _fakeMemoryOwner;
|
||||||
private bool _startedWritingDataFrames;
|
private bool _startedWritingDataFrames;
|
||||||
private bool _streamCompleted;
|
private bool _streamCompleted;
|
||||||
private bool _suffixSent;
|
private bool _suffixSent;
|
||||||
private bool _streamEnded;
|
private bool _streamEnded;
|
||||||
private bool _writerComplete;
|
private bool _writerComplete;
|
||||||
|
private bool _disposed;
|
||||||
|
|
||||||
private IMemoryOwner<byte> _fakeMemoryOwner;
|
// Internal for testing
|
||||||
|
internal ValueTask _dataWriteProcessingTask;
|
||||||
|
|
||||||
|
/// <summary>The core logic for the IValueTaskSource implementation.</summary>
|
||||||
|
private ManualResetValueTaskSourceCore<FlushResult> _responseCompleteTaskSource = new ManualResetValueTaskSourceCore<FlushResult> { RunContinuationsAsynchronously = true }; // mutable struct, do not make this readonly
|
||||||
|
|
||||||
|
// This object is itself usable as a backing source for ValueTask. Since there's only ever one awaiter
|
||||||
|
// for this object's state transitions at a time, we allow the object to be awaited directly. All functionality
|
||||||
|
// associated with the implementation is just delegated to the ManualResetValueTaskSourceCore.
|
||||||
|
private ValueTask<FlushResult> GetWaiterTask() => new ValueTask<FlushResult>(this, _responseCompleteTaskSource.Version);
|
||||||
|
ValueTaskSourceStatus IValueTaskSource<FlushResult>.GetStatus(short token) => _responseCompleteTaskSource.GetStatus(token);
|
||||||
|
void IValueTaskSource<FlushResult>.OnCompleted(Action<object> continuation, object state, short token, ValueTaskSourceOnCompletedFlags flags) => _responseCompleteTaskSource.OnCompleted(continuation, state, token, flags);
|
||||||
|
FlushResult IValueTaskSource<FlushResult>.GetResult(short token) => _responseCompleteTaskSource.GetResult(token);
|
||||||
|
|
||||||
public Http2OutputProducer(Http2Stream stream, Http2StreamContext context, StreamOutputFlowControl flowControl)
|
public Http2OutputProducer(Http2Stream stream, Http2StreamContext context, StreamOutputFlowControl flowControl)
|
||||||
{
|
{
|
||||||
|
|
@ -64,7 +79,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||||
|
|
||||||
public void StreamReset()
|
public void StreamReset()
|
||||||
{
|
{
|
||||||
Debug.Assert(_dataWriteProcessingTask.IsCompletedSuccessfully);
|
// Data background task must still be running.
|
||||||
|
Debug.Assert(!_dataWriteProcessingTask.IsCompleted);
|
||||||
|
// Response should have been completed.
|
||||||
|
Debug.Assert(_responseCompleteTaskSource.GetStatus(_responseCompleteTaskSource.Version) == ValueTaskSourceStatus.Succeeded);
|
||||||
|
|
||||||
_streamEnded = false;
|
_streamEnded = false;
|
||||||
_suffixSent = false;
|
_suffixSent = false;
|
||||||
|
|
@ -75,8 +93,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||||
|
|
||||||
_pipe.Reset();
|
_pipe.Reset();
|
||||||
_pipeWriter.Reset();
|
_pipeWriter.Reset();
|
||||||
|
_responseCompleteTaskSource.Reset();
|
||||||
|
|
||||||
_dataWriteProcessingTask = ProcessDataWrites();
|
// Trigger the data process task to resume
|
||||||
|
_resetAwaitable.SetResult(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Complete()
|
public void Complete()
|
||||||
|
|
@ -222,14 +242,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||||
{
|
{
|
||||||
if (_streamCompleted)
|
if (_streamCompleted)
|
||||||
{
|
{
|
||||||
return _dataWriteProcessingTask;
|
return GetWaiterTask();
|
||||||
}
|
}
|
||||||
|
|
||||||
_streamCompleted = true;
|
_streamCompleted = true;
|
||||||
_suffixSent = true;
|
_suffixSent = true;
|
||||||
|
|
||||||
_pipeWriter.Complete();
|
_pipeWriter.Complete();
|
||||||
return _dataWriteProcessingTask;
|
return GetWaiterTask();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -370,68 +390,90 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
private async ValueTask<FlushResult> ProcessDataWrites()
|
private async ValueTask ProcessDataWrites()
|
||||||
{
|
{
|
||||||
FlushResult flushResult = default;
|
// ProcessDataWrites runs for the lifetime of the Http2OutputProducer, and is designed to be reused by multiple streams.
|
||||||
try
|
// When Http2OutputProducer is no longer used (e.g. a stream is aborted and will no longer be used, or the connection is closed)
|
||||||
|
// it should be disposed so ProcessDataWrites exits. Not disposing won't cause a memory leak in release builds, but in debug
|
||||||
|
// builds active tasks are rooted on Task.s_currentActiveTasks. Dispose could be removed in the future when active tasks are
|
||||||
|
// tracked by a weak reference. See https://github.com/dotnet/runtime/issues/26565
|
||||||
|
do
|
||||||
{
|
{
|
||||||
ReadResult readResult;
|
FlushResult flushResult = default;
|
||||||
|
ReadResult readResult = default;
|
||||||
do
|
try
|
||||||
{
|
{
|
||||||
readResult = await _pipeReader.ReadAsync();
|
|
||||||
|
|
||||||
if (readResult.IsCanceled)
|
do
|
||||||
{
|
{
|
||||||
// Response body is aborted, break and complete reader.
|
readResult = await _pipeReader.ReadAsync();
|
||||||
break;
|
|
||||||
}
|
if (readResult.IsCanceled)
|
||||||
else if (readResult.IsCompleted && _stream.ResponseTrailers?.Count > 0)
|
|
||||||
{
|
|
||||||
// Output is ending and there are trailers to write
|
|
||||||
// Write any remaining content then write trailers
|
|
||||||
if (readResult.Buffer.Length > 0)
|
|
||||||
{
|
{
|
||||||
// Only flush if required (i.e. content length exceeds flow control availability)
|
// Response body is aborted, break and complete reader.
|
||||||
// Writing remaining content without flushing allows content and trailers to be sent in the same packet
|
break;
|
||||||
await _frameWriter.WriteDataAsync(StreamId, _flowControl, readResult.Buffer, endStream: false, forceFlush: false);
|
|
||||||
}
|
}
|
||||||
|
else if (readResult.IsCompleted && _stream.ResponseTrailers?.Count > 0)
|
||||||
_stream.ResponseTrailers.SetReadOnly();
|
|
||||||
_stream.DecrementActiveClientStreamCount();
|
|
||||||
flushResult = await _frameWriter.WriteResponseTrailers(StreamId, _stream.ResponseTrailers);
|
|
||||||
}
|
|
||||||
else if (readResult.IsCompleted && _streamEnded)
|
|
||||||
{
|
|
||||||
if (readResult.Buffer.Length != 0)
|
|
||||||
{
|
{
|
||||||
ThrowUnexpectedState();
|
// Output is ending and there are trailers to write
|
||||||
}
|
// Write any remaining content then write trailers
|
||||||
|
if (readResult.Buffer.Length > 0)
|
||||||
|
{
|
||||||
|
// Only flush if required (i.e. content length exceeds flow control availability)
|
||||||
|
// Writing remaining content without flushing allows content and trailers to be sent in the same packet
|
||||||
|
await _frameWriter.WriteDataAsync(StreamId, _flowControl, readResult.Buffer, endStream: false, forceFlush: false);
|
||||||
|
}
|
||||||
|
|
||||||
// Headers have already been written and there is no other content to write
|
_stream.ResponseTrailers.SetReadOnly();
|
||||||
flushResult = await _frameWriter.FlushAsync(outputAborter: null, cancellationToken: default);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var endStream = readResult.IsCompleted;
|
|
||||||
if (endStream)
|
|
||||||
{
|
|
||||||
_stream.DecrementActiveClientStreamCount();
|
_stream.DecrementActiveClientStreamCount();
|
||||||
|
flushResult = await _frameWriter.WriteResponseTrailers(StreamId, _stream.ResponseTrailers);
|
||||||
}
|
}
|
||||||
flushResult = await _frameWriter.WriteDataAsync(StreamId, _flowControl, readResult.Buffer, endStream, forceFlush: true);
|
else if (readResult.IsCompleted && _streamEnded)
|
||||||
}
|
{
|
||||||
|
if (readResult.Buffer.Length != 0)
|
||||||
|
{
|
||||||
|
ThrowUnexpectedState();
|
||||||
|
}
|
||||||
|
|
||||||
_pipeReader.AdvanceTo(readResult.Buffer.End);
|
// Headers have already been written and there is no other content to write
|
||||||
} while (!readResult.IsCompleted);
|
flushResult = await _frameWriter.FlushAsync(outputAborter: null, cancellationToken: default);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
else
|
||||||
{
|
{
|
||||||
_log.LogCritical(ex, nameof(Http2OutputProducer) + "." + nameof(ProcessDataWrites) + " observed an unexpected exception.");
|
var endStream = readResult.IsCompleted;
|
||||||
}
|
if (endStream)
|
||||||
|
{
|
||||||
|
_stream.DecrementActiveClientStreamCount();
|
||||||
|
}
|
||||||
|
flushResult = await _frameWriter.WriteDataAsync(StreamId, _flowControl, readResult.Buffer, endStream, forceFlush: true);
|
||||||
|
}
|
||||||
|
|
||||||
_pipeReader.Complete();
|
_pipeReader.AdvanceTo(readResult.Buffer.End);
|
||||||
|
} while (!readResult.IsCompleted);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_log.LogCritical(ex, nameof(Http2OutputProducer) + "." + nameof(ProcessDataWrites) + " observed an unexpected exception.");
|
||||||
|
}
|
||||||
|
|
||||||
return flushResult;
|
_pipeReader.Complete();
|
||||||
|
|
||||||
|
// Signal via WriteStreamSuffixAsync to the stream that output has finished.
|
||||||
|
// Stream state will move to RequestProcessingStatus.ResponseCompleted
|
||||||
|
_responseCompleteTaskSource.SetResult(flushResult);
|
||||||
|
|
||||||
|
if (readResult.IsCompleted)
|
||||||
|
{
|
||||||
|
// Successfully read all data. Wait here for the stream to be reset.
|
||||||
|
await new ValueTask(_resetAwaitable, _resetAwaitable.Version);
|
||||||
|
_resetAwaitable.Reset();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Stream was aborted.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} while (!_disposed);
|
||||||
|
|
||||||
static void ThrowUnexpectedState()
|
static void ThrowUnexpectedState()
|
||||||
{
|
{
|
||||||
|
|
@ -486,5 +528,16 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||||
useSynchronizationContext: false,
|
useSynchronizationContext: false,
|
||||||
minimumSegmentSize: pool.GetMinimumSegmentSize()
|
minimumSegmentSize: pool.GetMinimumSegmentSize()
|
||||||
));
|
));
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
if (_disposed)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_disposed = true;
|
||||||
|
|
||||||
|
_resetAwaitable.SetResult(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ using Microsoft.Net.Http.Headers;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||||
{
|
{
|
||||||
internal abstract partial class Http2Stream : HttpProtocol, IThreadPoolWorkItem
|
internal abstract partial class Http2Stream : HttpProtocol, IThreadPoolWorkItem, IDisposable
|
||||||
{
|
{
|
||||||
private Http2StreamContext _context;
|
private Http2StreamContext _context;
|
||||||
private Http2OutputProducer _http2Output;
|
private Http2OutputProducer _http2Output;
|
||||||
|
|
@ -588,6 +588,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract void Execute();
|
public abstract void Execute();
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
_http2Output.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
[Flags]
|
[Flags]
|
||||||
private enum StreamCompletionFlags
|
private enum StreamCompletionFlags
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure
|
||||||
|
|
||||||
Walk(connection =>
|
Walk(connection =>
|
||||||
{
|
{
|
||||||
connection.GetTransport().Abort(new ConnectionAbortedException(CoreStrings.ConnectionAbortedDuringServerShutdown));
|
connection.TransportConnection.Abort(new ConnectionAbortedException(CoreStrings.ConnectionAbortedDuringServerShutdown));
|
||||||
abortTasks.Add(connection.ExecutionTask);
|
abortTasks.Add(connection.ExecutionTask);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure
|
||||||
public ConnectionReference(KestrelConnection connection)
|
public ConnectionReference(KestrelConnection connection)
|
||||||
{
|
{
|
||||||
_weakReference = new WeakReference<KestrelConnection>(connection);
|
_weakReference = new WeakReference<KestrelConnection>(connection);
|
||||||
ConnectionId = connection.GetTransport().ConnectionId;
|
ConnectionId = connection.TransportConnection.ConnectionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ConnectionId { get; }
|
public string ConnectionId { get; }
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract BaseConnectionContext GetTransport();
|
public abstract BaseConnectionContext TransportConnection { get; }
|
||||||
|
|
||||||
public void OnHeartbeat(Action<object> action, object state)
|
public void OnHeartbeat(Action<object> action, object state)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure
|
||||||
internal class KestrelConnection<T> : KestrelConnection, IThreadPoolWorkItem where T : BaseConnectionContext
|
internal class KestrelConnection<T> : KestrelConnection, IThreadPoolWorkItem where T : BaseConnectionContext
|
||||||
{
|
{
|
||||||
private readonly Func<T, Task> _connectionDelegate;
|
private readonly Func<T, Task> _connectionDelegate;
|
||||||
|
private readonly T _transportConnection;
|
||||||
public T TransportConnection { get; set; }
|
|
||||||
|
|
||||||
public KestrelConnection(long id,
|
public KestrelConnection(long id,
|
||||||
ServiceContext serviceContext,
|
ServiceContext serviceContext,
|
||||||
|
|
@ -21,12 +20,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure
|
||||||
: base(id, serviceContext, logger)
|
: base(id, serviceContext, logger)
|
||||||
{
|
{
|
||||||
_connectionDelegate = connectionDelegate;
|
_connectionDelegate = connectionDelegate;
|
||||||
TransportConnection = connectionContext;
|
_transportConnection = connectionContext;
|
||||||
connectionContext.Features.Set<IConnectionHeartbeatFeature>(this);
|
connectionContext.Features.Set<IConnectionHeartbeatFeature>(this);
|
||||||
connectionContext.Features.Set<IConnectionCompleteFeature>(this);
|
connectionContext.Features.Set<IConnectionCompleteFeature>(this);
|
||||||
connectionContext.Features.Set<IConnectionLifetimeNotificationFeature>(this);
|
connectionContext.Features.Set<IConnectionLifetimeNotificationFeature>(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override BaseConnectionContext TransportConnection => _transportConnection;
|
||||||
|
|
||||||
void IThreadPoolWorkItem.Execute()
|
void IThreadPoolWorkItem.Execute()
|
||||||
{
|
{
|
||||||
_ = ExecuteAsync();
|
_ = ExecuteAsync();
|
||||||
|
|
@ -34,7 +35,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure
|
||||||
|
|
||||||
internal async Task ExecuteAsync()
|
internal async Task ExecuteAsync()
|
||||||
{
|
{
|
||||||
var connectionContext = TransportConnection;
|
var connectionContext = _transportConnection;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -63,15 +64,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure
|
||||||
// Dispose the transport connection, this needs to happen before removing it from the
|
// Dispose the transport connection, this needs to happen before removing it from the
|
||||||
// connection manager so that we only signal completion of this connection after the transport
|
// connection manager so that we only signal completion of this connection after the transport
|
||||||
// is properly torn down.
|
// is properly torn down.
|
||||||
await TransportConnection.DisposeAsync();
|
await connectionContext.DisposeAsync();
|
||||||
|
|
||||||
_serviceContext.ConnectionManager.RemoveConnection(_id);
|
_serviceContext.ConnectionManager.RemoveConnection(_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override BaseConnectionContext GetTransport()
|
|
||||||
{
|
|
||||||
return TransportConnection;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
connection.ConnectionClosed = new CancellationToken(canceled: true);
|
connection.ConnectionClosed = new CancellationToken(canceled: true);
|
||||||
var kestrelConnection = new KestrelConnection<ConnectionContext>(0, serviceContext, _ => Task.CompletedTask, connection, serviceContext.Log);
|
var kestrelConnection = new KestrelConnection<ConnectionContext>(0, serviceContext, _ => Task.CompletedTask, connection, serviceContext.Log);
|
||||||
serviceContext.ConnectionManager.AddConnection(0, kestrelConnection);
|
serviceContext.ConnectionManager.AddConnection(0, kestrelConnection);
|
||||||
var completeFeature = kestrelConnection.GetTransport().Features.Get<IConnectionCompleteFeature>();
|
var completeFeature = kestrelConnection.TransportConnection.Features.Get<IConnectionCompleteFeature>();
|
||||||
|
|
||||||
Assert.NotNull(completeFeature);
|
Assert.NotNull(completeFeature);
|
||||||
object stateObject = new object();
|
object stateObject = new object();
|
||||||
|
|
@ -102,7 +102,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
connection.ConnectionClosed = new CancellationToken(canceled: true);
|
connection.ConnectionClosed = new CancellationToken(canceled: true);
|
||||||
var kestrelConnection = new KestrelConnection<ConnectionContext>(0, serviceContext, _ => Task.CompletedTask, connection, serviceContext.Log);
|
var kestrelConnection = new KestrelConnection<ConnectionContext>(0, serviceContext, _ => Task.CompletedTask, connection, serviceContext.Log);
|
||||||
serviceContext.ConnectionManager.AddConnection(0, kestrelConnection);
|
serviceContext.ConnectionManager.AddConnection(0, kestrelConnection);
|
||||||
var completeFeature = kestrelConnection.GetTransport().Features.Get<IConnectionCompleteFeature>();
|
var completeFeature = kestrelConnection.TransportConnection.Features.Get<IConnectionCompleteFeature>();
|
||||||
|
|
||||||
Assert.NotNull(completeFeature);
|
Assert.NotNull(completeFeature);
|
||||||
object stateObject = new object();
|
object stateObject = new object();
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,11 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Buffers;
|
using System.Buffers;
|
||||||
using System.Collections.Generic;
|
using System.Buffers.Binary;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
using System.IO.Pipelines;
|
using System.IO.Pipelines;
|
||||||
using System.Net.Http.HPack;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using BenchmarkDotNet.Attributes;
|
using BenchmarkDotNet.Attributes;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
|
|
@ -25,20 +27,29 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Performance
|
||||||
public class Http2ConnectionBenchmark
|
public class Http2ConnectionBenchmark
|
||||||
{
|
{
|
||||||
private MemoryPool<byte> _memoryPool;
|
private MemoryPool<byte> _memoryPool;
|
||||||
private Pipe _pipe;
|
|
||||||
private HttpRequestHeaders _httpRequestHeaders;
|
private HttpRequestHeaders _httpRequestHeaders;
|
||||||
private Http2Connection _connection;
|
private Http2Connection _connection;
|
||||||
private Http2HeadersEnumerator _requestHeadersEnumerator;
|
private Http2HeadersEnumerator _requestHeadersEnumerator;
|
||||||
private int _currentStreamId;
|
private int _currentStreamId;
|
||||||
private byte[] _headersBuffer;
|
private byte[] _headersBuffer;
|
||||||
|
private DuplexPipe.DuplexPipePair _connectionPair;
|
||||||
|
private Http2Frame _httpFrame;
|
||||||
|
private string _responseData;
|
||||||
|
private int _dataWritten;
|
||||||
|
|
||||||
|
[Params(0, 10, 1024 * 1024)]
|
||||||
|
public int ResponseDataLength { get; set; }
|
||||||
|
|
||||||
[GlobalSetup]
|
[GlobalSetup]
|
||||||
public void GlobalSetup()
|
public void GlobalSetup()
|
||||||
{
|
{
|
||||||
_memoryPool = SlabMemoryPoolFactory.Create();
|
_memoryPool = SlabMemoryPoolFactory.Create();
|
||||||
|
_httpFrame = new Http2Frame();
|
||||||
|
_responseData = new string('!', ResponseDataLength);
|
||||||
|
|
||||||
var options = new PipeOptions(_memoryPool, readerScheduler: PipeScheduler.Inline, writerScheduler: PipeScheduler.Inline, useSynchronizationContext: false);
|
var options = new PipeOptions(_memoryPool, readerScheduler: PipeScheduler.Inline, writerScheduler: PipeScheduler.Inline, useSynchronizationContext: false);
|
||||||
_pipe = new Pipe(options);
|
|
||||||
|
_connectionPair = DuplexPipe.CreateConnectionPair(options, options);
|
||||||
|
|
||||||
_httpRequestHeaders = new HttpRequestHeaders();
|
_httpRequestHeaders = new HttpRequestHeaders();
|
||||||
_httpRequestHeaders.Append(HeaderNames.Method, new StringValues("GET"));
|
_httpRequestHeaders.Append(HeaderNames.Method, new StringValues("GET"));
|
||||||
|
|
@ -55,15 +66,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Performance
|
||||||
Log = new KestrelTrace(NullLogger.Instance),
|
Log = new KestrelTrace(NullLogger.Instance),
|
||||||
SystemClock = new MockSystemClock()
|
SystemClock = new MockSystemClock()
|
||||||
};
|
};
|
||||||
serviceContext.ServerOptions.Limits.Http2.MaxStreamsPerConnection = int.MaxValue;
|
|
||||||
serviceContext.DateHeaderValueManager.OnHeartbeat(default);
|
serviceContext.DateHeaderValueManager.OnHeartbeat(default);
|
||||||
|
|
||||||
_connection = new Http2Connection(new HttpConnectionContext
|
_connection = new Http2Connection(new HttpConnectionContext
|
||||||
{
|
{
|
||||||
MemoryPool = _memoryPool,
|
MemoryPool = _memoryPool,
|
||||||
ConnectionId = "TestConnectionId",
|
ConnectionId = "TestConnectionId",
|
||||||
Protocols = Core.HttpProtocols.Http2,
|
Protocols = HttpProtocols.Http2,
|
||||||
Transport = new MockDuplexPipe(_pipe.Reader, new NullPipeWriter()),
|
Transport = _connectionPair.Transport,
|
||||||
ServiceContext = serviceContext,
|
ServiceContext = serviceContext,
|
||||||
ConnectionFeatures = new FeatureCollection(),
|
ConnectionFeatures = new FeatureCollection(),
|
||||||
TimeoutControl = new MockTimeoutControl(),
|
TimeoutControl = new MockTimeoutControl(),
|
||||||
|
|
@ -73,11 +83,22 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Performance
|
||||||
|
|
||||||
_currentStreamId = 1;
|
_currentStreamId = 1;
|
||||||
|
|
||||||
_ = _connection.ProcessRequestsAsync(new DummyApplication());
|
_ = _connection.ProcessRequestsAsync(new DummyApplication(c => ResponseDataLength == 0 ? Task.CompletedTask : c.Response.WriteAsync(_responseData), new MockHttpContextFactory()));
|
||||||
|
|
||||||
_pipe.Writer.Write(Http2Connection.ClientPreface);
|
_connectionPair.Application.Output.Write(Http2Connection.ClientPreface);
|
||||||
_pipe.Writer.WriteSettings(new Http2PeerSettings());
|
_connectionPair.Application.Output.WriteSettings(new Http2PeerSettings
|
||||||
_pipe.Writer.FlushAsync().GetAwaiter().GetResult();
|
{
|
||||||
|
InitialWindowSize = 2147483647
|
||||||
|
});
|
||||||
|
_connectionPair.Application.Output.FlushAsync().GetAwaiter().GetResult();
|
||||||
|
|
||||||
|
// Read past connection setup frames
|
||||||
|
ReceiveFrameAsync(_connectionPair.Application.Input, _httpFrame).GetAwaiter().GetResult();
|
||||||
|
Debug.Assert(_httpFrame.Type == Http2FrameType.SETTINGS);
|
||||||
|
ReceiveFrameAsync(_connectionPair.Application.Input, _httpFrame).GetAwaiter().GetResult();
|
||||||
|
Debug.Assert(_httpFrame.Type == Http2FrameType.WINDOW_UPDATE);
|
||||||
|
ReceiveFrameAsync(_connectionPair.Application.Input, _httpFrame).GetAwaiter().GetResult();
|
||||||
|
Debug.Assert(_httpFrame.Type == Http2FrameType.SETTINGS);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Benchmark]
|
[Benchmark]
|
||||||
|
|
@ -85,15 +106,77 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Performance
|
||||||
{
|
{
|
||||||
_requestHeadersEnumerator.Initialize(_httpRequestHeaders);
|
_requestHeadersEnumerator.Initialize(_httpRequestHeaders);
|
||||||
_requestHeadersEnumerator.MoveNext();
|
_requestHeadersEnumerator.MoveNext();
|
||||||
_pipe.Writer.WriteStartStream(streamId: _currentStreamId, _requestHeadersEnumerator, _headersBuffer, endStream: true);
|
_connectionPair.Application.Output.WriteStartStream(streamId: _currentStreamId, _requestHeadersEnumerator, _headersBuffer, endStream: true, frame: _httpFrame);
|
||||||
|
await _connectionPair.Application.Output.FlushAsync();
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
await ReceiveFrameAsync(_connectionPair.Application.Input, _httpFrame);
|
||||||
|
|
||||||
|
if (_httpFrame.StreamId != _currentStreamId && _httpFrame.StreamId != 0)
|
||||||
|
{
|
||||||
|
throw new Exception($"Unexpected stream ID: {_httpFrame.StreamId}");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_httpFrame.Type == Http2FrameType.DATA)
|
||||||
|
{
|
||||||
|
_dataWritten += _httpFrame.DataPayloadLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_dataWritten > 1024 * 32)
|
||||||
|
{
|
||||||
|
_connectionPair.Application.Output.WriteWindowUpdateAsync(streamId: 0, _dataWritten, _httpFrame);
|
||||||
|
await _connectionPair.Application.Output.FlushAsync();
|
||||||
|
|
||||||
|
_dataWritten = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((_httpFrame.HeadersFlags & Http2HeadersFrameFlags.END_STREAM) == Http2HeadersFrameFlags.END_STREAM)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_currentStreamId += 2;
|
_currentStreamId += 2;
|
||||||
await _pipe.Writer.FlushAsync();
|
}
|
||||||
|
|
||||||
|
internal async ValueTask ReceiveFrameAsync(PipeReader pipeReader, Http2Frame frame, uint maxFrameSize = Http2PeerSettings.DefaultMaxFrameSize)
|
||||||
|
{
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
var result = await pipeReader.ReadAsync();
|
||||||
|
var buffer = result.Buffer;
|
||||||
|
var consumed = buffer.Start;
|
||||||
|
var examined = buffer.Start;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Http2FrameReader.TryReadFrame(ref buffer, frame, maxFrameSize, out var framePayload))
|
||||||
|
{
|
||||||
|
consumed = examined = framePayload.End;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
examined = buffer.End;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result.IsCompleted)
|
||||||
|
{
|
||||||
|
throw new IOException("The reader completed without returning a frame.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
pipeReader.AdvanceTo(consumed, examined);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[GlobalCleanup]
|
[GlobalCleanup]
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_pipe.Writer.Complete();
|
_connectionPair.Application.Output.Complete();
|
||||||
_memoryPool?.Dispose();
|
_memoryPool?.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using Microsoft.AspNetCore.Http.Features;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.Server.Kestrel.Performance
|
||||||
|
{
|
||||||
|
public class MockHttpContextFactory : IHttpContextFactory
|
||||||
|
{
|
||||||
|
private readonly object _lock = new object();
|
||||||
|
private readonly Queue<DefaultHttpContext> _cache = new Queue<DefaultHttpContext>();
|
||||||
|
|
||||||
|
public HttpContext Create(IFeatureCollection featureCollection)
|
||||||
|
{
|
||||||
|
DefaultHttpContext httpContext;
|
||||||
|
|
||||||
|
lock (_lock)
|
||||||
|
{
|
||||||
|
if (!_cache.TryDequeue(out httpContext))
|
||||||
|
{
|
||||||
|
httpContext = new DefaultHttpContext();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
httpContext.Initialize(featureCollection);
|
||||||
|
return httpContext;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose(HttpContext httpContext)
|
||||||
|
{
|
||||||
|
lock (_lock)
|
||||||
|
{
|
||||||
|
var defaultHttpContext = (DefaultHttpContext)httpContext;
|
||||||
|
|
||||||
|
defaultHttpContext.Uninitialize();
|
||||||
|
_cache.Enqueue(defaultHttpContext);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Buffers;
|
using System.Buffers;
|
||||||
|
using System.Buffers.Binary;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO.Pipelines;
|
using System.IO.Pipelines;
|
||||||
using System.Net.Http.HPack;
|
using System.Net.Http.HPack;
|
||||||
|
|
@ -24,9 +25,9 @@ namespace Microsoft.AspNetCore.Testing
|
||||||
writer.Write(payload);
|
writer.Write(payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void WriteStartStream(this PipeWriter writer, int streamId, Http2HeadersEnumerator headers, byte[] headerEncodingBuffer, bool endStream)
|
public static void WriteStartStream(this PipeWriter writer, int streamId, Http2HeadersEnumerator headers, byte[] headerEncodingBuffer, bool endStream, Http2Frame frame = null)
|
||||||
{
|
{
|
||||||
var frame = new Http2Frame();
|
frame ??= new Http2Frame();
|
||||||
frame.PrepareHeaders(Http2HeadersFrameFlags.NONE, streamId);
|
frame.PrepareHeaders(Http2HeadersFrameFlags.NONE, streamId);
|
||||||
|
|
||||||
var buffer = headerEncodingBuffer.AsSpan();
|
var buffer = headerEncodingBuffer.AsSpan();
|
||||||
|
|
@ -63,9 +64,9 @@ namespace Microsoft.AspNetCore.Testing
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void WriteStartStream(this PipeWriter writer, int streamId, Span<byte> headerData, bool endStream)
|
public static void WriteStartStream(this PipeWriter writer, int streamId, Span<byte> headerData, bool endStream, Http2Frame frame = null)
|
||||||
{
|
{
|
||||||
var frame = new Http2Frame();
|
frame ??= new Http2Frame();
|
||||||
frame.PrepareHeaders(Http2HeadersFrameFlags.NONE, streamId);
|
frame.PrepareHeaders(Http2HeadersFrameFlags.NONE, streamId);
|
||||||
frame.PayloadLength = headerData.Length;
|
frame.PayloadLength = headerData.Length;
|
||||||
frame.HeadersFlags = Http2HeadersFrameFlags.END_HEADERS;
|
frame.HeadersFlags = Http2HeadersFrameFlags.END_HEADERS;
|
||||||
|
|
@ -79,10 +80,9 @@ namespace Microsoft.AspNetCore.Testing
|
||||||
writer.Write(headerData);
|
writer.Write(headerData);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void WriteData(this PipeWriter writer, int streamId, Memory<byte> data, bool endStream)
|
public static void WriteData(this PipeWriter writer, int streamId, Memory<byte> data, bool endStream, Http2Frame frame = null)
|
||||||
{
|
{
|
||||||
var frame = new Http2Frame();
|
frame ??= new Http2Frame();
|
||||||
|
|
||||||
frame.PrepareData(streamId);
|
frame.PrepareData(streamId);
|
||||||
frame.PayloadLength = data.Length;
|
frame.PayloadLength = data.Length;
|
||||||
frame.DataFlags = endStream ? Http2DataFrameFlags.END_STREAM : Http2DataFrameFlags.NONE;
|
frame.DataFlags = endStream ? Http2DataFrameFlags.END_STREAM : Http2DataFrameFlags.NONE;
|
||||||
|
|
@ -90,5 +90,14 @@ namespace Microsoft.AspNetCore.Testing
|
||||||
Http2FrameWriter.WriteHeader(frame, writer);
|
Http2FrameWriter.WriteHeader(frame, writer);
|
||||||
writer.Write(data.Span);
|
writer.Write(data.Span);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void WriteWindowUpdateAsync(this PipeWriter writer, int streamId, int sizeIncrement, Http2Frame frame = null)
|
||||||
|
{
|
||||||
|
frame ??= new Http2Frame();
|
||||||
|
frame.PrepareWindowUpdate(streamId, sizeIncrement);
|
||||||
|
Http2FrameWriter.WriteHeader(frame, writer);
|
||||||
|
BinaryPrimitives.WriteUInt32BigEndian(writer.GetSpan(4), (uint)sizeIncrement);
|
||||||
|
writer.Advance(4);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -76,12 +76,21 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task StreamPool_SingleStream_ReturnedToPool()
|
public async Task StreamPool_SingleStream_ReturnedToPool()
|
||||||
{
|
{
|
||||||
await InitializeConnectionAsync(_echoApplication);
|
var serverTcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
|
|
||||||
|
await InitializeConnectionAsync(async context =>
|
||||||
|
{
|
||||||
|
await serverTcs.Task;
|
||||||
|
await _echoApplication(context);
|
||||||
|
});
|
||||||
|
|
||||||
Assert.Equal(0, _connection.StreamPool.Count);
|
Assert.Equal(0, _connection.StreamPool.Count);
|
||||||
|
|
||||||
await StartStreamAsync(1, _browserRequestHeaders, endStream: true);
|
await StartStreamAsync(1, _browserRequestHeaders, endStream: true);
|
||||||
|
|
||||||
|
var stream = _connection._streams[1];
|
||||||
|
serverTcs.SetResult(null);
|
||||||
|
|
||||||
await ExpectAsync(Http2FrameType.HEADERS,
|
await ExpectAsync(Http2FrameType.HEADERS,
|
||||||
withLength: 37,
|
withLength: 37,
|
||||||
withFlags: (byte)(Http2HeadersFrameFlags.END_HEADERS | Http2HeadersFrameFlags.END_STREAM),
|
withFlags: (byte)(Http2HeadersFrameFlags.END_HEADERS | Http2HeadersFrameFlags.END_STREAM),
|
||||||
|
|
@ -98,6 +107,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
Assert.Equal(1, _connection.StreamPool.Count);
|
Assert.Equal(1, _connection.StreamPool.Count);
|
||||||
|
|
||||||
await StopConnectionAsync(expectedLastStreamId: 1, ignoreNonGoAwayFrames: false);
|
await StopConnectionAsync(expectedLastStreamId: 1, ignoreNonGoAwayFrames: false);
|
||||||
|
|
||||||
|
var output = (Http2OutputProducer)stream.Output;
|
||||||
|
await output._dataWriteProcessingTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -216,14 +228,21 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
[QuarantinedTest]
|
[QuarantinedTest]
|
||||||
public async Task StreamPool_StreamIsInvalidState_DontReturnedToPool()
|
public async Task StreamPool_StreamIsInvalidState_DontReturnedToPool()
|
||||||
{
|
{
|
||||||
|
var serverTcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
|
|
||||||
await InitializeConnectionAsync(async context =>
|
await InitializeConnectionAsync(async context =>
|
||||||
{
|
{
|
||||||
|
await serverTcs.Task;
|
||||||
|
|
||||||
await context.Response.WriteAsync("Content");
|
await context.Response.WriteAsync("Content");
|
||||||
throw new InvalidOperationException("Put the stream into an invalid state by throwing after writing to response.");
|
throw new InvalidOperationException("Put the stream into an invalid state by throwing after writing to response.");
|
||||||
});
|
});
|
||||||
|
|
||||||
await StartStreamAsync(1, _browserRequestHeaders, endStream: true);
|
await StartStreamAsync(1, _browserRequestHeaders, endStream: true);
|
||||||
|
|
||||||
|
var stream = _connection._streams[1];
|
||||||
|
serverTcs.SetResult(null);
|
||||||
|
|
||||||
await ExpectAsync(Http2FrameType.HEADERS,
|
await ExpectAsync(Http2FrameType.HEADERS,
|
||||||
withLength: 33,
|
withLength: 33,
|
||||||
withFlags: (byte)Http2HeadersFrameFlags.END_HEADERS,
|
withFlags: (byte)Http2HeadersFrameFlags.END_HEADERS,
|
||||||
|
|
@ -244,6 +263,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
// Stream is not returned to the pool
|
// Stream is not returned to the pool
|
||||||
Assert.Equal(0, _connection.StreamPool.Count);
|
Assert.Equal(0, _connection.StreamPool.Count);
|
||||||
|
|
||||||
|
var output = (Http2OutputProducer)stream.Output;
|
||||||
|
await output._dataWriteProcessingTask;
|
||||||
|
|
||||||
await StopConnectionAsync(expectedLastStreamId: 1, ignoreNonGoAwayFrames: false);
|
await StopConnectionAsync(expectedLastStreamId: 1, ignoreNonGoAwayFrames: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ using System.Buffers;
|
||||||
using System.Buffers.Binary;
|
using System.Buffers.Binary;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.IO.Pipelines;
|
using System.IO.Pipelines;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
@ -1051,12 +1052,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
protected Task SendWindowUpdateAsync(int streamId, int sizeIncrement)
|
protected Task SendWindowUpdateAsync(int streamId, int sizeIncrement)
|
||||||
{
|
{
|
||||||
var outputWriter = _pair.Application.Output;
|
var outputWriter = _pair.Application.Output;
|
||||||
var frame = new Http2Frame();
|
outputWriter.WriteWindowUpdateAsync(streamId, sizeIncrement);
|
||||||
frame.PrepareWindowUpdate(streamId, sizeIncrement);
|
|
||||||
Http2FrameWriter.WriteHeader(frame, outputWriter);
|
|
||||||
var buffer = outputWriter.GetSpan(4);
|
|
||||||
BinaryPrimitives.WriteUInt32BigEndian(buffer, (uint)sizeIncrement);
|
|
||||||
outputWriter.Advance(4);
|
|
||||||
return FlushAsync(outputWriter);
|
return FlushAsync(outputWriter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -143,6 +143,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
[QuarantinedTest]
|
||||||
public async Task ClientHandshakeFailureLoggedAsDebug()
|
public async Task ClientHandshakeFailureLoggedAsDebug()
|
||||||
{
|
{
|
||||||
var loggerProvider = new HandshakeErrorLoggerProvider();
|
var loggerProvider = new HandshakeErrorLoggerProvider();
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue