Skip to content

Commit 95ac585

Browse files
committed
Merge remote-tracking branch 'upstream/main' into fix-45654
2 parents 6ce7bda + e78c1a3 commit 95ac585

File tree

501 files changed

+13574
-2039
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

501 files changed

+13574
-2039
lines changed

.azure/pipelines/localization.yml

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,42 @@ parameters:
2525
variables:
2626
- name: _TeamName
2727
value: AspNetCore
28-
- template: /eng/common/templates/variables/pool-providers.yml
29-
30-
jobs:
31-
- ${{ if and(ne(variables['System.TeamProject'], 'public'), or(eq(variables['Build.SourceBranch'], 'refs/heads/main'), eq(variables['Build.Reason'], 'Manual'))) }}:
32-
- template: /eng/common/templates/job/onelocbuild.yml
33-
parameters:
34-
CreatePr: ${{ or(ne(variables['Build.Reason'], 'Manual'), eq(parameters.createPr, 'true')) }}
35-
LclPackageId: 'LCL-JUNO-PROD-ASPNETCORE'
36-
LclSource: lclFilesFromPackage
37-
MirrorRepo: aspnetcore
28+
- template: /eng/common/templates-official/variables/pool-providers.yml@self
29+
30+
31+
resources:
32+
repositories:
33+
# Repo: 1ESPipelineTemplates/1ESPipelineTemplates
34+
- repository: 1esPipelines
35+
type: git
36+
name: 1ESPipelineTemplates/1ESPipelineTemplates
37+
ref: refs/tags/release
38+
39+
extends:
40+
template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines
41+
parameters:
42+
sdl:
43+
sourceAnalysisPool:
44+
name: $(DncEngInternalBuildPool)
45+
image: 1es-windows-2022
46+
os: windows
47+
codeql:
48+
compiled:
49+
enabled: false
50+
justificationForDisabling: "This pipeline doesn't build any code. The product code is already scanned in the main pipeline (aspnetcore-ci)"
51+
pool:
52+
name: $(DncEngInternalBuildPool)
53+
image: 1es-windows-2022
54+
os: windows
55+
56+
stages:
57+
- stage: build
58+
displayName: Build
59+
jobs:
60+
- ${{ if and(ne(variables['System.TeamProject'], 'public'), or(eq(variables['Build.SourceBranch'], 'refs/heads/main'), eq(variables['Build.Reason'], 'Manual'))) }}:
61+
- template: /eng/common/templates-official/job/onelocbuild.yml@self
62+
parameters:
63+
CreatePr: ${{ or(ne(variables['Build.Reason'], 'Manual'), eq(parameters.createPr, 'true')) }}
64+
LclPackageId: 'LCL-JUNO-PROD-ASPNETCORE'
65+
LclSource: lclFilesFromPackage
66+
MirrorRepo: aspnetcore

.github/policies/resourceManagement.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# Policybot docs live at https://eng.ms/docs/more/github-inside-microsoft/policies/resource-management
12
id:
23
name: GitOps.PullRequestIssueManagement
34
description: GitOps.PullRequestIssueManagement primitive
@@ -550,7 +551,7 @@ configuration:
550551
then:
551552
- removeMilestone
552553
- addMilestone:
553-
milestone: 9.0.3
554+
milestone: 9.0.4
554555
description: '[Milestone Assignments] Assign Milestone to PRs merged to release/9.0 branch'
555556
- if:
556557
- payloadType: Pull_Request
@@ -561,7 +562,7 @@ configuration:
561562
then:
562563
- removeMilestone
563564
- addMilestone:
564-
milestone: 8.0.14
565+
milestone: 8.0.15
565566
description: '[Milestone Assignments] Assign Milestone to PRs merged to release/8.0 branch'
566567
- if:
567568
- payloadType: Issues

AspNetCore.sln

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1772,6 +1772,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNetCore.Http.R
17721772
EndProject
17731773
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNetCore.Http.ValidationsGenerator", "src\Http\Http.Extensions\gen\Microsoft.AspNetCore.Http.ValidationsGenerator\Microsoft.AspNetCore.Http.ValidationsGenerator.csproj", "{7899F5DD-AA7C-4561-BAC4-E2EC78B7D157}"
17741774
EndProject
1775+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Endpoints", "Endpoints", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
1776+
EndProject
1777+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CustomElements", "CustomElements", "{E22DD5A6-06E2-490E-BD32-88D629FD6668}"
1778+
EndProject
17751779
Global
17761780
GlobalSection(SolutionConfigurationPlatforms) = preSolution
17771781
Debug|Any CPU = Debug|Any CPU
@@ -11768,6 +11772,15 @@ Global
1176811772
{7324770C-0871-4D73-BE3D-5E2F3E9E1B1E} = {D30A658D-61F6-444B-9AC7-F66A1A1B86B6}
1176911773
{B54A8F61-60DE-4AD9-87CA-D102F230678E} = {D30A658D-61F6-444B-9AC7-F66A1A1B86B6}
1177011774
{D30A658D-61F6-444B-9AC7-F66A1A1B86B6} = {5E46DC83-C39C-4E3A-B242-C064607F4367}
11775+
{76C3E22D-092B-4E8A-81F0-DCF071BFF4CD} = {E22DD5A6-06E2-490E-BD32-88D629FD6668}
11776+
{A05652B3-953E-4915-9D7F-0E361D988815} = {0CE1CC26-98CE-4022-A81C-E32AAFC9B819}
11777+
{AE4D272D-6F13-42C8-9404-C149188AFA33} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
11778+
{5D438258-CB19-4282-814F-974ABBC71411} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
11779+
{F5AE525F-F435-40F9-A567-4D5EC3B50D6E} = {5FE1FBC1-8CE3-4355-9866-44FE1307C5F1}
11780+
{87D58D50-20D1-4091-88C5-8D88DCCC2DE3} = {6126DCE4-9692-4EE2-B240-C65743572995}
11781+
{433F91E4-E39D-4EB0-B798-2998B3969A2C} = {6126DCE4-9692-4EE2-B240-C65743572995}
11782+
{8A021D6D-7935-4AB3-BB47-38D4FF9B0D13} = {6126DCE4-9692-4EE2-B240-C65743572995}
11783+
{757CBDE0-5D0A-4FD8-99F3-6C20BDDD4E63} = {5FE1FBC1-8CE3-4355-9866-44FE1307C5F1}
1177111784
{96EC4DD3-028E-6E27-5B14-08C21B07CE89} = {017429CC-C5FB-48B4-9C46-034E29EE2F06}
1177211785
{1BBD75D2-429D-D565-A98E-36437448E8C0} = {96EC4DD3-028E-6E27-5B14-08C21B07CE89}
1177311786
{C10EB67A-F43E-4B85-AEFD-7064C9B3DBE2} = {1BBD75D2-429D-D565-A98E-36437448E8C0}
@@ -11777,6 +11790,8 @@ Global
1177711790
{01A75167-DF5A-AF38-8700-C3FBB2C2CFF5} = {225AEDCF-7162-4A86-AC74-06B84660B379}
1177811791
{E6D564C0-4CA5-411C-BF40-9802AF7900CB} = {01A75167-DF5A-AF38-8700-C3FBB2C2CFF5}
1177911792
{7899F5DD-AA7C-4561-BAC4-E2EC78B7D157} = {01A75167-DF5A-AF38-8700-C3FBB2C2CFF5}
11793+
{02EA681E-C7D8-13C7-8484-4AC65E1B71E8} = {60D51C98-2CC0-40DF-B338-44154EFEE2FF}
11794+
{E22DD5A6-06E2-490E-BD32-88D629FD6668} = {60D51C98-2CC0-40DF-B338-44154EFEE2FF}
1178011795
EndGlobalSection
1178111796
GlobalSection(ExtensibilityGlobals) = postSolution
1178211797
SolutionGuid = {3E8720B3-DBDD-498C-B383-2CC32A054E8F}

Directory.Build.props

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -195,18 +195,13 @@
195195
limitations in the way the .NET SDK finds shared frameworks and targeting packs. It allows
196196
tests to use the shared frameworks and targeting packs that were just built.
197197
198-
However, source-build needs this to not happen while building projects that rely on the
199-
AppHost framework pack. Source-build installs an SDK in a custom location outside this
198+
However, the VMR needs this to not happen while building projects that rely on the
199+
AppHost framework pack. The VMR installs an SDK in a custom location outside this
200200
repository, and setting NetCoreTargetingPackRoot to a different location causes source-build
201201
to restore the AppHost pack as a prebuilt rather than using the one that's present in the SDK.
202-
Source-build doesn't run tests, so the property is simply conditioned out.
202+
The dotnet product build doesn't run tests, so the property is simply conditioned out.
203203
-->
204204
<NetCoreTargetingPackRoot Condition="'$(DotNetBuild)' != 'true'">$(LocalDotNetRoot)packs\</NetCoreTargetingPackRoot>
205-
<!-- This is not correct and needs attention eventually. This is primarily used to find the nethost headers in the apphost pack.
206-
These should be coming from a restored apphost pack, rather than a hard-coded local SDK. In fact, aspnetcore
207-
should not rely on a local SDK or mutating one to build. -->
208-
<NetCoreTargetingPackRoot Condition="'$(DotNetBuild)' == 'true'">$(DotNetRoot)packs\</NetCoreTargetingPackRoot>
209-
210205
</PropertyGroup>
211206

212207
<Import Project="eng\tools\RepoTasks\RepoTasks.tasks" Condition="'$(MSBuildProjectName)' != 'RepoTasks' AND '$(DesignTimeBuild)' != 'true'" />

docs/OnboardingNewOS.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Onboarding New Operating System Versions
2+
3+
Guidance for onboarding new OS versions in ASP.NET, including how to add build & test coverage.
4+
5+
For broader context on our OS philosophy in .NET, see [Onboarding Guide for New Operating System Versions](https://github.com/dotnet/runtime/blob/main/docs/project/os-onboarding.md) in dotnet/runtime.
6+
7+
To see the list of our latest docker tags, see [this file](https://github.com/dotnet/versions/blob/main/build-info/docker/image-info.dotnet-dotnet-buildtools-prereqs-docker-main.json).
8+
9+
For the full set of docker tags, see [this file](https://mcr.microsoft.com/v2/dotnet-buildtools/prereqs/tags/list).
10+
11+
For info on modifying/adding new docker images, see [this doc](https://github.com/dotnet/dotnet-buildtools-prereqs-docker?tab=readme-ov-file#how-to-modify-or-create-a-new-image).
12+
13+
## Building on a new Operating System
14+
15+
On Mac and Linux, dotnet/aspnetcore does not build any native code - therefore we cross-compile all of our Linux bits on one docker image in CI. If you need to update the image that we use, simply follow the pattern from [this PR](https://github.com/dotnet/aspnetcore/pull/60260) to update the image we use in [ci.yml](https://github.com/dotnet/aspnetcore/blob/main/.azure/pipelines/ci.yml) and [ci-public.yml](https://github.com/dotnet/aspnetcore/blob/main/.azure/pipelines/ci-public.yml). Make sure to use one of the docker tags from the link above.
16+
17+
## Testing on a new Operating System
18+
19+
We run our tests in Helix on a variety of Operating Systems - the set of queues that we run tests on is listed in [Helix.Common.props](https://github.com/dotnet/aspnetcore/blob/main/eng/targets/Helix.Common.props).
20+
21+
In order to update one of the queues we use, follow the example in [this PR](https://github.com/dotnet/aspnetcore/pull/54609) - if you change any property names, be sure to find and replace all instances of that property in the repo.
22+
23+
In order to add a new queue to the Helix matrix, add the new queue to the top of [Helix.Common.props](https://github.com/dotnet/aspnetcore/blob/8ee12ef7a2c179f3d7c7da5ab33d76d652042d0b/eng/targets/Helix.Common.props#L3-L9), and add it to the [list of queues we use in the Helix Matrix](https://github.com/dotnet/aspnetcore/blob/8ee12ef7a2c179f3d7c7da5ab33d76d652042d0b/eng/targets/Helix.Common.props#L39-L60). Be sure to queue a build of the [aspnetcore-helix-matrix pipeline](https://dev.azure.com/dnceng-public/public/_build?definitionId=85) against your branch for validation.

eng/Build.props

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,12 @@
5555
$(RepoRoot)src\Servers\Kestrel\perf\PlatformBenchmarks\**\*.csproj;
5656
$(RepoRoot)src\SignalR\perf\benchmarkapps\**\*.csproj;
5757
" />
58+
59+
<!-- This project requires inputs from x64, x86, and arm64 on Windows - therefore in the VMR, we build it in pass 2 -->
60+
<ProjectToExclude Include="
61+
$(RepoRoot)src\Servers\IIS/IntegrationTesting.IIS\src\Microsoft.AspNetCore.Server.IntegrationTesting.IIS.csproj;
62+
"
63+
Condition=" '$(TargetOsName)' == 'win' and '$(DotNetBuild)' == 'true' and ('$(DotNetBuildPass)' == '' or '$(DotNetBuildPass)' == '1') " />
5864
</ItemGroup>
5965

6066
<Choose>
@@ -76,11 +82,20 @@
7682
<AdditionalProperties>Platform=x86</AdditionalProperties>
7783
<DotNetBuildPass>$(DotNetBuildPass)</DotNetBuildPass>
7884
</ProjectToBuild>
85+
<ProjectToBuild Include="$(RepoRoot)src\Servers\IIS/IntegrationTesting.IIS\src\Microsoft.AspNetCore.Server.IntegrationTesting.IIS.csproj" >
86+
<DotNetBuildPass>$(DotNetBuildPass)</DotNetBuildPass>
87+
</ProjectToBuild>
7988
</ItemGroup>
8089
</When>
8190
<Otherwise>
8291
<!-- BuildNative -->
83-
<ItemGroup Condition=" '$(TargetOsName)' == 'win' AND ('$(TargetArchitecture)' == 'x86' OR '$(TargetArchitecture)' == 'x64' OR '$(TargetArchitecture)' == 'arm64') ">
92+
<ItemGroup Condition=" '$(TargetOsName)' == 'win' AND '$(DotNetBuild)' == 'true' ">
93+
<NativeProjects Condition="'$(TargetArchitecture)' == 'x64'" Include="$(RepoRoot)src\**\*.vcxproj" Exclude="@(ProjectToExclude)" AdditionalProperties="Platform=x64" />
94+
<NativeProjects Condition="'$(TargetArchitecture)' == 'x86'" Include="$(RepoRoot)src\**\*.vcxproj" Exclude="@(ProjectToExclude)" AdditionalProperties="Platform=Win32" />
95+
<NativeProjects Condition="'$(TargetArchitecture)' == 'arm64'" Include="$(RepoRoot)src\**\*.vcxproj" Exclude="@(ProjectToExclude)" AdditionalProperties="Platform=arm64" />
96+
</ItemGroup>
97+
98+
<ItemGroup Condition=" '$(TargetOsName)' == 'win' AND '$(DotNetBuild)' != 'true' AND ('$(TargetArchitecture)' == 'x86' OR '$(TargetArchitecture)' == 'x64' OR '$(TargetArchitecture)' == 'arm64') ">
8499
<NativeProjects Include="$(RepoRoot)src\**\*.vcxproj" Exclude="@(ProjectToExclude)" AdditionalProperties="Platform=x64" />
85100
<NativeProjects Include="$(RepoRoot)src\**\*.vcxproj" Exclude="@(ProjectToExclude)" AdditionalProperties="Platform=Win32" />
86101
<NativeProjects Include="$(RepoRoot)src\**\*.vcxproj" Exclude="@(ProjectToExclude)" AdditionalProperties="Platform=arm64" />

eng/Publishing.props

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,17 @@
1212
'$(PostBuildSign)' != 'true' and
1313
'$(DotNetBuildRepo)' != 'true'">false</EnableDefaultArtifacts>
1414

15-
<PublishInstallerBaseVersion Condition="'$(PublishInstallerBaseVersion)' == '' and
16-
('$(OS)' == 'Windows_NT' or '$(DotNetBuildOrchestrator)' == 'true')">true</PublishInstallerBaseVersion>
1715
<!-- This avoids creating VS.*.symbols.nupkg packages that are identical to the original package. -->
1816
<AutoGenerateSymbolPackages>false</AutoGenerateSymbolPackages>
17+
<!--
18+
Some assets are produced in all jobs, but only one job can publish them. We follow the following rules in that case:
19+
- If we're building outside of the VMR, publish these assets from the Windows job.
20+
- If we're building inside the VMR, publish these assets from whichever job is producing non-RID-specific artifacts.
21+
-->
22+
<PublishAllBuildsAssetsInThisJob Condition="('$(OS)' == 'Windows_NT' and '$(DotNetBuildOrchestrator)' != 'true')
23+
or ('$(DotNetBuildOrchestrator)' == 'true' and '$(EnableDefaultRidSpecificArtifacts)' != 'true'
24+
and ('$(DotNetBuildPass)' == '' or '$(DotNetBuildPass)' == '1'))">true</PublishAllBuildsAssetsInThisJob>
25+
<PublishInstallerBaseVersion Condition="'$(PublishInstallerBaseVersion)' == ''">$(PublishAllBuildsAssetsInThisJob)</PublishInstallerBaseVersion>
1926
</PropertyGroup>
2027

2128
<!-- $(InstallersOutputPath), $(SymbolsOutputPath), and $(ChecksumExtensions) are not defined. Root Directory.Build.props is not imported. -->
@@ -24,10 +31,10 @@
2431
<FilesToPublishToSymbolServer Include="$(ArtifactsDir)symbols\**\*.pdb" />
2532

2633
<!-- Prepare for _PublishInstallersAndChecksums target. -->
27-
<_InstallersToPublish Include="$(ArtifactsDir)packages\**\*.jar" UploadPathSegment="jar" />
28-
<_InstallersToPublish Include="$(ArtifactsDir)packages\**\*.pom" UploadPathSegment="jar" />
34+
<_InstallersToPublish Include="$(ArtifactsDir)packages\**\*.jar" UploadPathSegment="jar" Condition="'$(PublishAllBuildsAssetsInThisJob)' == 'true'" />
35+
<_InstallersToPublish Include="$(ArtifactsDir)packages\**\*.pom" UploadPathSegment="jar" Condition="'$(PublishAllBuildsAssetsInThisJob)' == 'true'" />
2936
<!-- All builds produce npm assets - only publish them once -->
30-
<_InstallersToPublish Include="$(ArtifactsDir)packages\**\*.tgz" UploadPathSegment="npm" Condition="'$(OS)' == 'Windows_NT' or '$(DotNetBuildOrchestrator)' == 'true'" />
37+
<_InstallersToPublish Include="$(ArtifactsDir)packages\**\*.tgz" UploadPathSegment="npm" Condition="'$(PublishAllBuildsAssetsInThisJob)' == 'true'" />
3138
<_InstallersToPublish Include="$(ArtifactsDir)installers\**\*.version" UploadPathSegment="Runtime" Condition="'$(PublishInstallerBaseVersion)' == 'true'" />
3239

3340
<!-- The following installers create checksums -->

eng/SourceBuildPrebuiltBaseline.xml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,39 @@
4848
<!-- Transitive dependency of System.Security.Cryptography.Pkcs.5.0.*. -->
4949
<UsagePattern IdentityGlob="System.Formats.Asn1/6.0.0" />
5050
<UsagePattern IdentityGlob="System.Formats.Asn1/5.0.0" />
51+
52+
<!-- Transitive dependency of Microsoft.CodeAnalysis.Workspaces.Common, which gets bumped to latest in full product build -->
53+
<UsagePattern IdentityGlob="Microsoft.NETCore.Targets/1.1.0" />
54+
<UsagePattern IdentityGlob="System.Buffers/4.4.0" />
55+
<UsagePattern IdentityGlob="System.Collections/4.3.0" />
56+
<UsagePattern IdentityGlob="System.Collections.Immutable/1.5.0" />
57+
<UsagePattern IdentityGlob="System.Composition.AttributedModel/1.0.31" />
58+
<UsagePattern IdentityGlob="System.Composition.Convention/1.0.31" />
59+
<UsagePattern IdentityGlob="System.Composition.Hosting/1.0.31" />
60+
<UsagePattern IdentityGlob="System.Composition.Runtime/1.0.31" />
61+
<UsagePattern IdentityGlob="System.Composition.TypedParts/1.0.31" />
62+
<UsagePattern IdentityGlob="System.Diagnostics.Debug/4.3.0" />
63+
<UsagePattern IdentityGlob="System.Diagnostics.Tools/4.3.0" />
64+
<UsagePattern IdentityGlob="System.Globalization/4.3.0" />
65+
<UsagePattern IdentityGlob="System.IO/4.3.0" />
66+
<UsagePattern IdentityGlob="System.Linq/4.3.0" />
67+
<UsagePattern IdentityGlob="System.Linq.Expressions/4.3.0" />
68+
<UsagePattern IdentityGlob="System.Memory/4.5.3" />
69+
<UsagePattern IdentityGlob="System.ObjectModel/4.3.0" />
70+
<UsagePattern IdentityGlob="System.Reflection/4.3.0" />
71+
<UsagePattern IdentityGlob="System.Reflection.Emit/4.3.0" />
72+
<UsagePattern IdentityGlob="System.Reflection.Emit.ILGeneration/4.3.0" />
73+
<UsagePattern IdentityGlob="System.Reflection.Emit.Lightweight/4.3.0" />
74+
<UsagePattern IdentityGlob="System.Reflection.Extensions/4.3.0" />
75+
<UsagePattern IdentityGlob="System.Reflection.Metadata/1.6.0" />
76+
<UsagePattern IdentityGlob="System.Reflection.Primitives/4.3.0" />
77+
<UsagePattern IdentityGlob="System.Reflection.TypeExtensions/4.3.0" />
78+
<UsagePattern IdentityGlob="System.Resources.ResourceManager/4.3.0" />
79+
<UsagePattern IdentityGlob="System.Runtime/4.3.0" />
80+
<UsagePattern IdentityGlob="System.Runtime.Extensions/4.3.0" />
81+
<UsagePattern IdentityGlob="System.Text.Encoding/4.3.0" />
82+
<UsagePattern IdentityGlob="System.Threading/4.3.0" />
83+
<UsagePattern IdentityGlob="System.Threading.Tasks/4.3.0" />
5184
</IgnorePatterns>
5285

5386
<!-- Transitive dependencies, suppressed as per https://github.com/dotnet/aspnetcore/pull/57887#issuecomment-2362241518-->

0 commit comments

Comments
 (0)