From 15a1ed95302e41ab4871b616560969754aae60bb Mon Sep 17 00:00:00 2001 From: Missy Messa Date: Thu, 21 May 2026 20:36:31 +0000 Subject: [PATCH 01/20] Add trailing newline to THIRD-PARTY-NOTICES.TXT (trigger VMR sync verification) --- THIRD-PARTY-NOTICES.TXT | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/THIRD-PARTY-NOTICES.TXT b/THIRD-PARTY-NOTICES.TXT index 859bd1a6d9cd..97426f91879b 100644 --- a/THIRD-PARTY-NOTICES.TXT +++ b/THIRD-PARTY-NOTICES.TXT @@ -8,4 +8,4 @@ bring it to our attention. Post an issue or email us: The attached notices are provided for information only. -No notices are provided at this time. \ No newline at end of file +No notices are provided at this time. From d1d271630a4a85e445325a0ba211d7b5bd6f5a44 Mon Sep 17 00:00:00 2001 From: Missy Messa Date: Thu, 21 May 2026 21:21:35 +0000 Subject: [PATCH 02/20] Merged PR 61436: Fix VMR sync push by switching to dnceng-build-rw-code-rw-wif service connection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Problem The VMR sync pipeline (`sdk-dotnet-dotnet-synchronization-internal`) has been silently failing to push commits to `dotnet-dotnet`'s `internal/release/9.0.1xx` branch since ~April 30, 2026. The sync step succeeds (creates local commits), but `darc vmr push` reports success without actually updating the remote branch. ## Root Cause The pipeline uses the `VmrSyncPipeline` service connection (SP App ID `6a305b75-9314-42bd-b669-9feb14f21d5a`) to mint an AzDO access token for the push. This SP does **not** have working write access to the `dotnet-dotnet` repo (which has restricted permissions where even Contributors are denied access). ## Fix Switch to `dnceng-build-rw-code-rw-wif` — the same service connection used by the **installer** repo's VMR sync on `internal/release/8.0.4xx`, which is proven to work for pushing to `dotnet-dotnet`. This change also adds explicit error handling for token acquisition (empty token, non-zero exit code) matching the installer's pattern. ## Evidence - Build 2981189: Sync created commits successfully, push logged `Pushed branch refs/heads/internal/release/9.0.1xx to remote origin` but the branch tip hasn't moved since April 30 (commit `14d5ddefede18b29eb0f2ea918c79861a5211177`) - The installer repo (`internal/release/8.0.4xx`) uses `dnceng-build-rw-code-rw-wif` with the same `darc vmr push` command and succeeds - Permission grants to the VmrSyncPipeline SP (ACEs, group membership) did not resolve the issue ---- #### AI description (iteration 1) #### PR Classification Infrastructure change to switch authentication method for VMR synchronization from a federated service connection to a workload identity federation (WIF) service connection. #### PR Summary Updates the VMR synchronization pipeline to use the `dnceng-build-rw-code-rw-wif` Azure service connection for minting Azure DevOps tokens, replacing the previous federated access token template approach. - `/eng/pipelines/templates/jobs/vmr-synchronization.yml`: Replaced the `get-federated-access-token.yml` template step with an `AzureCLI@2` task that directly acquires an AzDO access token using the new WIF service connection - `/eng/pipelines/templates/jobs/vmr-synchronization.yml`: Added error handling and validation logic to ensure the minted token is valid before proceeding with VMR push operations --- .../templates/jobs/vmr-synchronization.yml | 200 ++++++++++-------- 1 file changed, 107 insertions(+), 93 deletions(-) diff --git a/eng/pipelines/templates/jobs/vmr-synchronization.yml b/eng/pipelines/templates/jobs/vmr-synchronization.yml index 94d3331e2f62..c568ad296ac4 100644 --- a/eng/pipelines/templates/jobs/vmr-synchronization.yml +++ b/eng/pipelines/templates/jobs/vmr-synchronization.yml @@ -1,93 +1,107 @@ -### This job synchronizes code from product repositories into the VMR (https://github.com/dotnet/dotnet) -### It synchronizes the content of the VMR to this new commit and pushes the changes - -parameters: -- name: targetRef - displayName: Target revision of dotnet/sdk to synchronize - type: string - default: $(Build.SourceVersion) - -- name: vmrBranch - displayName: dotnet/dotnet branch to use - type: string - default: $(Build.SourceBranch) - -- name: noPush - displayName: Don't push changes to dotnet/dotnet - type: boolean - default: false - -jobs: -- job: Synchronize_VMR - displayName: Synchronize VMR's ${{ parameters.vmrBranch }} - timeoutInMinutes: 120 - variables: - - ${{ if eq(variables['System.TeamProject'], 'public') }}: - - template: /eng/common/templates/variables/pool-providers.yml - - ${{ else }}: - - template: /eng/common/templates-official/variables/pool-providers.yml - - name: vmrPath - value: $(Agent.BuildDirectory)/vmr - - ${{ if not(parameters.noPush) }}: - - ${{ if and( eq(variables['System.TeamProject'], 'internal'), or(startswith(variables['Build.SourceBranch'], 'refs/heads/release/'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))) }}: - - group: DotNetBot-GitHub - - group: DotNetBot-GitHub-No-Scopes - - name: vmrPublicUrl - value: https://github.com/dotnet/dotnet - - ${{ if and( eq(variables['System.TeamProject'], 'internal'), startswith(variables['Build.SourceBranch'], 'refs/heads/internal/release/')) }}: - - name: vmrInternalUrl - value: https://dnceng@dev.azure.com/dnceng/internal/_git/dotnet-dotnet - - pool: - ${{ if eq(variables['System.TeamProject'], 'public') }}: - name: $(DncEngPublicBuildPool) - image: build.azurelinux.3.amd64.open - os: linux - ${{ else }}: - name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals build.azurelinux.3.amd64 - os: linux - - steps: - - template: ../steps/vmr-prepare.yml - parameters: - vmrBranch: ${{ parameters.vmrBranch }} - - - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - - template: /eng/common/templates-official/steps/get-federated-access-token.yml - parameters: - federatedServiceConnection: VmrSyncPipeline - outputVariableName: AzdoToken - - - template: ../steps/vmr-pull-updates.yml - parameters: - vmrPath: $(vmrPath) - vmrBranch: ${{ parameters.vmrBranch }} - targetRef: ${{ parameters.targetRef }} - - - ${{ if and(not(parameters.noPush), not(in(variables['Build.Reason'], 'PullRequest')), eq(variables['System.TeamProject'], 'internal')) }}: - # Push main and release branches to the public VMR - - ${{ if or(eq(parameters.vmrBranch, 'main'), startsWith(parameters.vmrBranch, 'release/')) }}: - - script: > - ./.dotnet/dotnet darc vmr push - --vmr '$(vmrPath)' - --commit-verification-pat '$(BotAccount-dotnet-maestro-bot-no-scopes-PAT)' - --branch '${{ parameters.vmrBranch }}' - --remote-url '$(vmrPublicUrl)' - --github-pat '$(BotAccount-dotnet-bot-repo-PAT)' - --verbose - displayName: Push changes to dotnet/dotnet (public) - workingDirectory: $(Agent.BuildDirectory)/sdk - - # Push internal/release branches to the internal VMR - - ${{ if startsWith(parameters.vmrBranch, 'internal/release/') }}: - - script: > - ./.dotnet/dotnet darc vmr push - --vmr '$(vmrPath)' - --skip-commit-verification - --branch '${{ parameters.vmrBranch }}' - --remote-url '$(vmrInternalUrl)' - --azdev-pat '$(AzdoToken)' - --verbose - displayName: Push changes to dotnet-dotnet (internal) - workingDirectory: $(Agent.BuildDirectory)/sdk +### This job synchronizes code from product repositories into the VMR (https://github.com/dotnet/dotnet) +### It synchronizes the content of the VMR to this new commit and pushes the changes + +parameters: +- name: targetRef + displayName: Target revision of dotnet/sdk to synchronize + type: string + default: $(Build.SourceVersion) + +- name: vmrBranch + displayName: dotnet/dotnet branch to use + type: string + default: $(Build.SourceBranch) + +- name: noPush + displayName: Don't push changes to dotnet/dotnet + type: boolean + default: false + +jobs: +- job: Synchronize_VMR + displayName: Synchronize VMR's ${{ parameters.vmrBranch }} + timeoutInMinutes: 120 + variables: + - ${{ if eq(variables['System.TeamProject'], 'public') }}: + - template: /eng/common/templates/variables/pool-providers.yml + - ${{ else }}: + - template: /eng/common/templates-official/variables/pool-providers.yml + - name: vmrPath + value: $(Agent.BuildDirectory)/vmr + - ${{ if not(parameters.noPush) }}: + - ${{ if and( eq(variables['System.TeamProject'], 'internal'), or(startswith(variables['Build.SourceBranch'], 'refs/heads/release/'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))) }}: + - group: DotNetBot-GitHub + - group: DotNetBot-GitHub-No-Scopes + - name: vmrPublicUrl + value: https://github.com/dotnet/dotnet + - ${{ if and( eq(variables['System.TeamProject'], 'internal'), startswith(variables['Build.SourceBranch'], 'refs/heads/internal/release/')) }}: + - name: vmrInternalUrl + value: https://dnceng@dev.azure.com/dnceng/internal/_git/dotnet-dotnet + + pool: + ${{ if eq(variables['System.TeamProject'], 'public') }}: + name: $(DncEngPublicBuildPool) + image: build.azurelinux.3.amd64.open + os: linux + ${{ else }}: + name: $(DncEngInternalBuildPool) + demands: ImageOverride -equals build.azurelinux.3.amd64 + os: linux + + steps: + - template: ../steps/vmr-prepare.yml + parameters: + vmrBranch: ${{ parameters.vmrBranch }} + + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - task: AzureCLI@2 + displayName: 'Mint AzDO token for VMR push' + inputs: + azureSubscription: 'dnceng-build-rw-code-rw-wif' + scriptType: 'pscore' + scriptLocation: 'inlineScript' + inlineScript: | + $token = az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query accessToken -o tsv + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to acquire Azure DevOps access token via 'az account get-access-token'. Exit code: $LASTEXITCODE" + exit 1 + } + $token = $token.Trim() + if ([string]::IsNullOrWhiteSpace($token)) { + Write-Error "Received an empty or whitespace Azure DevOps access token from 'az account get-access-token'." + exit 1 + } + Write-Host "##vso[task.setvariable variable=AzdoToken;issecret=true]$token" + + - template: ../steps/vmr-pull-updates.yml + parameters: + vmrPath: $(vmrPath) + vmrBranch: ${{ parameters.vmrBranch }} + targetRef: ${{ parameters.targetRef }} + + - ${{ if and(not(parameters.noPush), not(in(variables['Build.Reason'], 'PullRequest')), eq(variables['System.TeamProject'], 'internal')) }}: + # Push main and release branches to the public VMR + - ${{ if or(eq(parameters.vmrBranch, 'main'), startsWith(parameters.vmrBranch, 'release/')) }}: + - script: > + ./.dotnet/dotnet darc vmr push + --vmr '$(vmrPath)' + --commit-verification-pat '$(BotAccount-dotnet-maestro-bot-no-scopes-PAT)' + --branch '${{ parameters.vmrBranch }}' + --remote-url '$(vmrPublicUrl)' + --github-pat '$(BotAccount-dotnet-bot-repo-PAT)' + --verbose + displayName: Push changes to dotnet/dotnet (public) + workingDirectory: $(Agent.BuildDirectory)/sdk + + # Push internal/release branches to the internal VMR + - ${{ if startsWith(parameters.vmrBranch, 'internal/release/') }}: + - script: > + ./.dotnet/dotnet darc vmr push + --vmr '$(vmrPath)' + --skip-commit-verification + --branch '${{ parameters.vmrBranch }}' + --remote-url '$(vmrInternalUrl)' + --azdev-pat '$(AzdoToken)' + --verbose + displayName: Push changes to dotnet-dotnet (internal) + workingDirectory: $(Agent.BuildDirectory)/sdk From f341404f2ff81e36fcf3a004aa2dd3809c63dafe Mon Sep 17 00:00:00 2001 From: ProductConstructionServiceProd Date: Thu, 21 May 2026 21:32:04 +0000 Subject: [PATCH 03/20] Merged PR 61389: [internal/release/9.0.1xx] Update dependencies from dnceng/internal/dotnet-aspnetcore This pull request updates the following dependencies [marker]: <> (Begin:7c429c14-b12b-40f6-ae9e-395f98f369df) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - **Subscription**: [7c429c14-b12b-40f6-ae9e-395f98f369df](https://maestro.dot.net/subscriptions?search=7c429c14-b12b-40f6-ae9e-395f98f369df) - **Build**: [20260520.11](https://dev.azure.com/dnceng/internal/_build/results?buildId=2980599) ([315317](https://maestro.dot.net/channel/5128/azdo:dnceng:internal:dotnet-aspnetcore/build/315317)) - **Date Produced**: May 21, 2026 6:41:36 AM UTC - **Commit**: [3acfb497d6f5b4e0cd0f3749bfbddb61519ee271](https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore?_a=history&version=GC3acfb497d6f5b4e0cd0f3749bfbddb61519ee271) - **Branch**: [refs/heads/internal/release/9.0](https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore?version=GBrefs/heads/internal/release/9.0) [DependencyUpdate]: <> (Begin) - **Dependency Updates**: - From [9.0.17-servicing.26269.7 to 9.0.17-servicing.26270.11][1] - dotnet-dev-certs - dotnet-user-jwts - dotnet-user-secrets - Microsoft.AspNetCore.Analyzers - Microsoft.AspNetCore.App.Ref.Internal - Microsoft.AspNetCore.Components.SdkAnalyzers - Microsoft.AspNetCore.DeveloperCertificates.XPlat - Microsoft.AspNetCore.Mvc.Analyzers - Microsoft.AspNetCore.Mvc.Api.Analyzers - VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 - Microsoft.SourceBuild.Intermediate.aspnetcore - From [9.0.17 to 9.0.17][1] - Microsoft.AspNetCore.App.Ref - Microsoft.AspNetCore.App.Runtime.win-x64 - Microsoft.AspNetCore.Authorization - Microsoft.AspNetCore.Components.Web - Microsoft.AspNetCore.TestHost - Microsoft.Extensions.FileProviders.Embedded - Microsoft.Extensions.ObjectPool - Microsoft.JSInterop [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore/branches?baseVersion=GC5edf41b9c09952f18e404ad38e25670991c1b513&targetVersion=GC3acfb497d6f5b4e0cd0f3749bfbddb61519ee271&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:7c429c14-b12b-40f6-ae9e-395f98f369df) --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 20 +++++++------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/NuGet.config b/NuGet.config index 1be2cbec01f9..c4268beba9f5 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -68,7 +68,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 15d1031e4055..a05a3ac0067c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -135,13 +135,13 @@ https://github.com/dotnet/roslyn fc52718eccdb37693a40a518b1178b1e23114e68 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted @@ -277,52 +277,52 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 @@ -345,19 +345,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 https://github.com/dotnet/test-templates @@ -541,7 +541,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5edf41b9c09952f18e404ad38e25670991c1b513 + 3acfb497d6f5b4e0cd0f3749bfbddb61519ee271 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 0f06b64420a0..6b8cebeb14e3 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -216,18 +216,18 @@ 9.0.17 - 9.0.17-servicing.26269.7 - 9.0.17-servicing.26269.7 - 9.0.17-servicing.26269.7 - 9.0.17-servicing.26269.7 - 9.0.17-servicing.26269.7 + 9.0.17-servicing.26270.11 + 9.0.17-servicing.26270.11 + 9.0.17-servicing.26270.11 + 9.0.17-servicing.26270.11 + 9.0.17-servicing.26270.11 9.0.17 9.0.17 - 9.0.17-servicing.26269.7 - 9.0.17-servicing.26269.7 - 9.0.17-servicing.26269.7 - 9.0.17-servicing.26269.7 - 9.0.17-servicing.26269.7 + 9.0.17-servicing.26270.11 + 9.0.17-servicing.26270.11 + 9.0.17-servicing.26270.11 + 9.0.17-servicing.26270.11 + 9.0.17-servicing.26270.11 From 916d7616c834fc80199f3ae83e0e0b4c3d930421 Mon Sep 17 00:00:00 2001 From: Will Godbe Date: Wed, 10 Jun 2026 02:43:29 +0000 Subject: [PATCH 04/20] Merged PR 61982: [release/9.0.1xx] Update source-build-externals dependency #### AI description (iteration 1) #### PR Classification Dependency update to upgrade the source-build-externals intermediate package version and repository URI. #### PR Summary This pull request updates the `Microsoft.SourceBuild.Intermediate.source-build-externals` dependency from version `9.0.0-alpha.1.26055.1` to `9.0.0-alpha.1.26309.11` and migrates the repository URI from GitHub to Azure DevOps internal repository. - `eng/Version.Details.xml`: Updated source-build-externals dependency version, URI changed from GitHub to Azure DevOps, and SHA commit reference updated --- eng/Version.Details.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 96c454d65d0e..01b25dcfdf0c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -445,9 +445,9 @@ - - https://github.com/dotnet/source-build-externals - 16c380d1ce5fa0b24e232251c31cb013bbf3365f + + https://dev.azure.com/dnceng/internal/_git/dotnet-source-build-externals + 9c6c10cce644179b2f41cbb8064f07efee903c55 From 73033310d9b0a02fa72347e16c15c152cb501a9b Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Mon, 1 Jun 2026 10:27:18 -0700 Subject: [PATCH 05/20] Use user-level cache directory for cached registry blobs --- .../ContentStore.cs | 95 +++++++++++++++---- 1 file changed, 78 insertions(+), 17 deletions(-) diff --git a/src/Containers/Microsoft.NET.Build.Containers/ContentStore.cs b/src/Containers/Microsoft.NET.Build.Containers/ContentStore.cs index 2fb16be3ec5d..488764482f27 100644 --- a/src/Containers/Microsoft.NET.Build.Containers/ContentStore.cs +++ b/src/Containers/Microsoft.NET.Build.Containers/ContentStore.cs @@ -8,30 +8,18 @@ namespace Microsoft.NET.Build.Containers; internal static class ContentStore { - public static string ArtifactRoot { get; set; } = Path.Combine(Path.GetTempPath(), "Containers"); + public static string ArtifactRoot { get; set; } = EnsureCacheDirectory(); public static string ContentRoot { get { string contentPath = Path.Join(ArtifactRoot, "Content"); - - Directory.CreateDirectory(contentPath); - + CreateCacheDirectory(contentPath); return contentPath; } } - public static string TempPath - { - get - { - string tempPath = Path.Join(ArtifactRoot, "Temp"); - - Directory.CreateDirectory(tempPath); - - return tempPath; - } - } + public static string TempPath { get; } = Directory.CreateTempSubdirectory().FullName; public static string PathForDescriptor(Descriptor descriptor) { @@ -62,8 +50,81 @@ public static string GetPathForHash(string contentHash) return Path.Combine(ContentRoot, contentHash); } - public static string GetTempFile() + public static string GetTempFile() => Path.Join(TempPath, Path.GetRandomFileName()); + + /// + /// Gets the path to the user cache directory for SDK container builds, creating it if it does + /// not already exist. + /// + private static string EnsureCacheDirectory() + { + string userCacheDir = GetUserCacheDirectoryPath(); + CreateCacheDirectory(userCacheDir); + + string dotnetCacheDir = Path.Join(userCacheDir, "dotnet"); + CreateCacheDirectory(dotnetCacheDir); + + string containersCacheDir = Path.Join(dotnetCacheDir, "Containers"); + CreateCacheDirectory(containersCacheDir); + + return containersCacheDir; + } + + /// + /// Creates a cache directory with user-scoped permissions based on the OS. + /// + /// + /// Permissions are only set for the leaf directory. The caller is expected to handle + /// permissions for intermediate directories. + /// + private static void CreateCacheDirectory(string path) + { + if (OperatingSystem.IsWindows()) + { + Directory.CreateDirectory(path); + } + else + { + // Per XDG_CACHE_HOME spec: if the cache directory doesn't exist, try to create it with + // permissions 0700. If it already exists, don't try to change the permissions. + // See https://specifications.freedesktop.org/basedir/latest/#referencing + Directory.CreateDirectory(path, UnixFileMode.UserRead | UnixFileMode.UserWrite | UnixFileMode.UserExecute); + } + } + + /// + /// Gets the user-scoped cache directory, accounting for OS differences. + /// + private static string GetUserCacheDirectoryPath() { - return Path.Join(TempPath, Path.GetRandomFileName()); + if (OperatingSystem.IsLinux()) + { + // See "XDG Base Directory Specification": + // https://specifications.freedesktop.org/basedir/latest/ + string? xdgCacheHome = Environment.GetEnvironmentVariable("XDG_CACHE_HOME"); + if (!string.IsNullOrEmpty(xdgCacheHome) && Path.IsPathFullyQualified(xdgCacheHome)) + { + return xdgCacheHome; + } + + // From the spec, if XDG_CACHE_HOME is not set then fall back to ~/.cache + string userHomeDirectory = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); + return Path.Join(userHomeDirectory, ".cache"); + } + + if (OperatingSystem.IsMacOS()) + { + // See "macOS Library Directory Details": + // https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/MacOSXDirectories/MacOSXDirectories.html + string userHomeDirectory = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); + return Path.Join(userHomeDirectory, "Library", "Caches"); + } + + // On other platforms, use the local application data folder. + string localAppData = Environment.GetFolderPath( + Environment.SpecialFolder.LocalApplicationData, + Environment.SpecialFolderOption.DoNotVerify); + + return localAppData; } } From 53a05132ae43043e39eafdc61b364d1a9f0931f5 Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Thu, 4 Jun 2026 21:04:28 +0000 Subject: [PATCH 06/20] Add digest validation for downloaded and cached registry blobs --- .../DigestUtils.cs | 13 +++++++ .../Exceptions/InvalidDigestException.cs | 24 +++++++++++++ .../Registry/Registry.cs | 33 ++++++++++++++--- .../StreamExtensions.cs | 36 +++++++++++++++++++ 4 files changed, 101 insertions(+), 5 deletions(-) create mode 100644 src/Containers/Microsoft.NET.Build.Containers/Exceptions/InvalidDigestException.cs create mode 100644 src/Containers/Microsoft.NET.Build.Containers/StreamExtensions.cs diff --git a/src/Containers/Microsoft.NET.Build.Containers/DigestUtils.cs b/src/Containers/Microsoft.NET.Build.Containers/DigestUtils.cs index c0c7e16e6793..862c01298f2d 100644 --- a/src/Containers/Microsoft.NET.Build.Containers/DigestUtils.cs +++ b/src/Containers/Microsoft.NET.Build.Containers/DigestUtils.cs @@ -37,4 +37,17 @@ internal static string GetSha(string str) return Convert.ToHexStringLower(hash); } + + /// + /// Returns the encoded (hash) portion of a digest string as raw bytes. + /// + /// + /// GetEncodedValue("sha256:e3b0c4...") returns the bytes for "e3b0c4...". + /// + internal static byte[] GetEncodedValue(string digest) + { + int separatorIndex = digest.IndexOf(':'); + string encoded = separatorIndex >= 0 ? digest[(separatorIndex + 1)..] : digest; + return Convert.FromHexString(encoded); + } } diff --git a/src/Containers/Microsoft.NET.Build.Containers/Exceptions/InvalidDigestException.cs b/src/Containers/Microsoft.NET.Build.Containers/Exceptions/InvalidDigestException.cs new file mode 100644 index 000000000000..071f07682a99 --- /dev/null +++ b/src/Containers/Microsoft.NET.Build.Containers/Exceptions/InvalidDigestException.cs @@ -0,0 +1,24 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Security.Cryptography; + +namespace Microsoft.NET.Build.Containers; + +internal sealed class InvalidDigestException : Exception +{ + public InvalidDigestException(string message) + : base(message) + { + } + + public static void ThrowIfMismatched(ReadOnlySpan expected, ReadOnlySpan actual) + { + if (!CryptographicOperations.FixedTimeEquals(expected, actual)) + { + string expectedHashString = Convert.ToHexString(expected).ToLowerInvariant(); + string actualHashString = Convert.ToHexString(actual).ToLowerInvariant(); + throw new InvalidDigestException($"Expected {expectedHashString}, got {actualHashString}."); + } + } +} diff --git a/src/Containers/Microsoft.NET.Build.Containers/Registry/Registry.cs b/src/Containers/Microsoft.NET.Build.Containers/Registry/Registry.cs index 3472ba1c53b2..93bc5bce9640 100644 --- a/src/Containers/Microsoft.NET.Build.Containers/Registry/Registry.cs +++ b/src/Containers/Microsoft.NET.Build.Containers/Registry/Registry.cs @@ -4,6 +4,7 @@ using NuGet.Packaging; using System.Diagnostics; using System.Net.Http.Json; +using System.Security.Cryptography; using System.Text.Json.Nodes; using Microsoft.Extensions.Logging; using Microsoft.NET.Build.Containers.Resources; @@ -408,13 +409,33 @@ public async Task DownloadBlobAsync(string repository, Descriptor descri { cancellationToken.ThrowIfCancellationRequested(); string localPath = ContentStore.PathForDescriptor(descriptor); - - if (File.Exists(localPath)) + + try { - // Assume file is up to date and just return it + byte[] data = await File.ReadAllBytesAsync(localPath, cancellationToken).ConfigureAwait(false); + + var actualHash = SHA256.HashData(data); + var expectedHash = DigestUtils.GetEncodedValue(descriptor.Digest); + InvalidDigestException.ThrowIfMismatched(expectedHash, actualHash); + return localPath; } - + catch (DirectoryNotFoundException) + { + // Cache miss + } + catch (FileNotFoundException) + { + // Cache miss + } + catch (InvalidDigestException exception) + { + // Incorrect digest + _logger.LogTrace( + "Digest validation failed for cached blob {1} ({2}), redownloading from registry.", + localPath, exception.Message); + } + string tempTarballPath = ContentStore.GetTempFile(); int retryCount = 0; @@ -427,7 +448,9 @@ public async Task DownloadBlobAsync(string repository, Descriptor descri using (FileStream fs = File.Create(tempTarballPath)) { - await responseStream.CopyToAsync(fs, cancellationToken).ConfigureAwait(false); + await responseStream + .CopyToAndVerifyAsync(fs, descriptor.Digest, cancellationToken) + .ConfigureAwait(false); } // Break the loop if successful diff --git a/src/Containers/Microsoft.NET.Build.Containers/StreamExtensions.cs b/src/Containers/Microsoft.NET.Build.Containers/StreamExtensions.cs new file mode 100644 index 000000000000..f66e88080ea8 --- /dev/null +++ b/src/Containers/Microsoft.NET.Build.Containers/StreamExtensions.cs @@ -0,0 +1,36 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Security.Cryptography; + +namespace Microsoft.NET.Build.Containers; + +internal static class StreamExtensions +{ + public static async Task CopyToAndVerifyAsync( + this Stream source, + Stream destination, + string digest, + CancellationToken cancellationToken) + { + byte[] expectedHash = DigestUtils.GetEncodedValue(digest).ToArray(); + + // Assumption: SHA256 is the only supported algorithm. + // See DigestUtils > s_registeredAlgorithms for more details. + using HashAlgorithm hashAlgorithm = SHA256.Create(); + + await using var cryptoStream = new CryptoStream( + stream: source, + transform: hashAlgorithm, + mode: CryptoStreamMode.Read, + // cryptoStream will be disposed at the end of the method, but setting leaveOpen=true + // tells CryptoStream not to dispose the source Stream. The caller is responsible for + // the lifetime of the source Stream. + leaveOpen: true + ); + + await cryptoStream.CopyToAsync(destination, cancellationToken); + + InvalidDigestException.ThrowIfMismatched(expectedHash, hashAlgorithm.Hash ?? []); + } +} From b04d1f8cd6b9abc0aa8b0d00f818c11c19dd3016 Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Fri, 5 Jun 2026 14:47:00 +0000 Subject: [PATCH 07/20] Hash data using FileStream --- .../Registry/Registry.cs | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Containers/Microsoft.NET.Build.Containers/Registry/Registry.cs b/src/Containers/Microsoft.NET.Build.Containers/Registry/Registry.cs index 93bc5bce9640..a50093c70358 100644 --- a/src/Containers/Microsoft.NET.Build.Containers/Registry/Registry.cs +++ b/src/Containers/Microsoft.NET.Build.Containers/Registry/Registry.cs @@ -412,9 +412,9 @@ public async Task DownloadBlobAsync(string repository, Descriptor descri try { - byte[] data = await File.ReadAllBytesAsync(localPath, cancellationToken).ConfigureAwait(false); + var fileStream = File.OpenRead(localPath); - var actualHash = SHA256.HashData(data); + var actualHash = SHA256.HashData(fileStream); var expectedHash = DigestUtils.GetEncodedValue(descriptor.Digest); InvalidDigestException.ThrowIfMismatched(expectedHash, actualHash); @@ -437,7 +437,7 @@ public async Task DownloadBlobAsync(string repository, Descriptor descri } string tempTarballPath = ContentStore.GetTempFile(); - + int retryCount = 0; while (retryCount < MaxDownloadRetries) { @@ -445,14 +445,14 @@ public async Task DownloadBlobAsync(string repository, Descriptor descri { // No local copy, so download one using Stream responseStream = await _registryAPI.Blob.GetStreamAsync(repository, descriptor.Digest, cancellationToken).ConfigureAwait(false); - + using (FileStream fs = File.Create(tempTarballPath)) { await responseStream .CopyToAndVerifyAsync(fs, descriptor.Digest, cancellationToken) .ConfigureAwait(false); } - + // Break the loop if successful break; } @@ -463,16 +463,16 @@ await responseStream { throw new UnableToDownloadFromRepositoryException(repository); } - + _logger.LogTrace("Download attempt {0}/{1} for repository '{2}' failed. Error: {3}", retryCount, MaxDownloadRetries, repository, ex.ToString()); - + // Wait before retrying await Task.Delay(_retryDelayProvider(), cancellationToken).ConfigureAwait(false); } } - + File.Move(tempTarballPath, localPath, overwrite: true); - + return localPath; } @@ -589,7 +589,7 @@ public async Task PushManifestListAsync( _logger.LogInformation(Strings.Registry_TagUploadStarted, tag, RegistryName); await _registryAPI.Manifest.PutAsync(destinationImageReference.Repository, tag, multiArchImage.ImageIndex, multiArchImage.ImageIndexMediaType, cancellationToken).ConfigureAwait(false); _logger.LogInformation(Strings.Registry_TagUploaded, tag, RegistryName); - } + } } public Task PushAsync(BuiltImage builtImage, SourceImageReference source, DestinationImageReference destination, CancellationToken cancellationToken) From 75ba6c78ebf56ad37fdee89dff453dc9f6bfdb7d Mon Sep 17 00:00:00 2001 From: Ella Hathaway Date: Mon, 15 Jun 2026 23:39:14 +0000 Subject: [PATCH 08/20] Merged PR 62123: Fix VMR sync for internal sdk pr builds Fix VMR sync for internal sdk pr builds ---- #### AI description (iteration 1) #### PR Classification Bug fix to enable Azure DevOps token minting for VMR synchronization in internal SDK pull request builds. #### PR Summary Adds authentication token acquisition step for internal project VMR synchronization during pull request builds to fix VMR sync failures. - `/eng/pipelines/templates/jobs/vmr-build.yml`: Added AzureCLI task to mint Azure DevOps token using workload identity federation for internal builds before VMR pull updates step, with error handling for token acquisition failures. --- eng/pipelines/templates/jobs/vmr-build.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/eng/pipelines/templates/jobs/vmr-build.yml b/eng/pipelines/templates/jobs/vmr-build.yml index ed26146de067..95ba36e8a9b6 100644 --- a/eng/pipelines/templates/jobs/vmr-build.yml +++ b/eng/pipelines/templates/jobs/vmr-build.yml @@ -180,6 +180,26 @@ jobs: # Synchronize new content in the VMR during PRs (we expect this to come - ${{ if eq(variables['Build.Reason'], 'PullRequest') }}: + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - task: AzureCLI@2 + displayName: 'Mint AzDO token for VMR push' + inputs: + azureSubscription: 'dnceng-build-rw-code-rw-wif' + scriptType: 'pscore' + scriptLocation: 'inlineScript' + inlineScript: | + $token = az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query accessToken -o tsv + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to acquire Azure DevOps access token via 'az account get-access-token'. Exit code: $LASTEXITCODE" + exit 1 + } + $token = $token.Trim() + if ([string]::IsNullOrWhiteSpace($token)) { + Write-Error "Received an empty or whitespace Azure DevOps access token from 'az account get-access-token'." + exit 1 + } + Write-Host "##vso[task.setvariable variable=AzdoToken;issecret=true]$token" + - template: ../steps/vmr-pull-updates.yml@self parameters: vmrPath: $(vmrPath) From bb9d72519fe64c9f398beb6a36a0ffe778675605 Mon Sep 17 00:00:00 2001 From: ProductConstructionServiceProd Date: Tue, 16 Jun 2026 19:33:11 +0000 Subject: [PATCH 09/20] Merged PR 61867: [internal/release/9.0.1xx] Update dependencies from dnceng/internal/dotnet-aspnetcore This pull request updates the following dependencies [marker]: <> (Begin:7c429c14-b12b-40f6-ae9e-395f98f369df) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - **Subscription**: [7c429c14-b12b-40f6-ae9e-395f98f369df](https://maestro.dot.net/subscriptions?search=7c429c14-b12b-40f6-ae9e-395f98f369df) - **Build**: [20260615.26](https://dev.azure.com/dnceng/internal/_build/results?buildId=3001200) ([318816](https://maestro.dot.net/channel/5128/azdo:dnceng:internal:dotnet-aspnetcore/build/318816)) - **Date Produced**: June 16, 2026 4:00:59 AM UTC - **Commit**: [a83a8133a504cc51034db2744c3c880bc000b89b](https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore?_a=history&version=GCa83a8133a504cc51034db2744c3c880bc000b89b) - **Branch**: [refs/heads/internal/release/9.0](https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore?version=GBrefs/heads/internal/release/9.0) [DependencyUpdate]: <> (Begin) - **Dependency Updates**: - From [9.0.17-servicing.26270.11 to 9.0.18-servicing.26315.26][7] - dotnet-dev-certs - dotnet-user-jwts - dotnet-user-secrets - Microsoft.AspNetCore.Analyzers - Microsoft.AspNetCore.App.Ref.Internal - Microsoft.AspNetCore.Components.SdkAnalyzers - Microsoft.AspNetCore.DeveloperCertificates.XPlat - Microsoft.AspNetCore.Mvc.Analyzers - Microsoft.AspNetCore.Mvc.Api.Analyzers - VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 - Microsoft.SourceBuild.Intermediate.aspnetcore - From [9.0.17 to 9.0.18][7] - Microsoft.AspNetCore.App.Ref - Microsoft.AspNetCore.App.Runtime.win-x64 - Microsoft.AspNetCore.Authorization - Microsoft.AspNetCore.Components.Web - Microsoft.AspNetCore.TestHost - Microsoft.Extensions.FileProviders.Embedded - Microsoft.Extensions.ObjectPool - Microsoft.JSInterop [7]: https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore/branches?baseVersion=GC3acfb497d6f5b4e0cd0f3749bfbddb61519ee271&targetVersion=GCa83a8133a504cc51034db2744c3c880bc000b89b&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:7c429c14-b12b-40f6-ae9e-395f98f369df) --- NuGet.config | 9 +- eng/Version.Details.xml | 98 +++++++++++----------- eng/Versions.props | 26 +++--- eng/pipelines/templates/jobs/vmr-build.yml | 17 ---- 4 files changed, 64 insertions(+), 86 deletions(-) diff --git a/NuGet.config b/NuGet.config index 867cb5c6d6f1..9e8f8362cdb3 100644 --- a/NuGet.config +++ b/NuGet.config @@ -24,10 +24,9 @@ - - + @@ -35,13 +34,11 @@ - - @@ -68,15 +65,13 @@ - + - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index db15a5ea55fa..630ce9c02601 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -135,13 +135,13 @@ https://github.com/dotnet/roslyn fc52718eccdb37693a40a518b1178b1e23114e68 - - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted @@ -276,53 +276,53 @@ a865df6e83bf8b34bbd6802fdcf25c5cdfb05191 - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b - - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b - - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b - - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b - - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b - - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b - - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b - - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b - - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b - - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b - - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b @@ -344,20 +344,20 @@ - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b https://github.com/dotnet/test-templates @@ -540,8 +540,8 @@ f2c8152eed158e72950025393fde498c90a57a6b - https://github.com/dotnet/aspnetcore - 3c5c32a79a7269c8ee7649d0ea1630f115d8400b + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + a83a8133a504cc51034db2744c3c880bc000b89b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index a894b9a23684..84a1b8842e4c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -215,19 +215,19 @@ - 9.0.17 - 9.0.17-servicing.26270.11 - 9.0.17-servicing.26270.11 - 9.0.17-servicing.26270.11 - 9.0.17-servicing.26270.11 - 9.0.17-servicing.26270.11 - 9.0.17 - 9.0.17 - 9.0.17-servicing.26270.11 - 9.0.17-servicing.26270.11 - 9.0.17-servicing.26270.11 - 9.0.17-servicing.26270.11 - 9.0.17-servicing.26270.11 + 9.0.18 + 9.0.18-servicing.26315.26 + 9.0.18-servicing.26315.26 + 9.0.18-servicing.26315.26 + 9.0.18-servicing.26315.26 + 9.0.18-servicing.26315.26 + 9.0.18 + 9.0.18 + 9.0.18-servicing.26315.26 + 9.0.18-servicing.26315.26 + 9.0.18-servicing.26315.26 + 9.0.18-servicing.26315.26 + 9.0.18-servicing.26315.26 diff --git a/eng/pipelines/templates/jobs/vmr-build.yml b/eng/pipelines/templates/jobs/vmr-build.yml index c5aeb66902c1..95ba36e8a9b6 100644 --- a/eng/pipelines/templates/jobs/vmr-build.yml +++ b/eng/pipelines/templates/jobs/vmr-build.yml @@ -417,23 +417,6 @@ jobs: - script: cp "$(sourcesPath)/src/sdk/NuGet.config" "$(sourcesPath)/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/online.NuGet.Config" displayName: Copy Test NuGet Config for Smoke Tests - - ${{ else }}: - - task: Bash@3 - displayName: Add aspnetcore public feed for smoke tests - inputs: - targetType: inline - script: | - set -euo pipefail - - ONLINE_CONFIG="$(sourcesPath)/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/online.NuGet.Config" - FEED_KEY="darc-pub-dotnet-aspnetcore-3c5c32a7" - FEED_URL="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-aspnetcore-3c5c32a7/nuget/v3/index.json" - - # Add only if missing. Do not touch disabledPackageSources. - if ! grep -qi "| \n |" "$ONLINE_CONFIG" - fi - - script: | set -ex From 5c9a33b2c5fc43cdba8efe33d298f64d1562ffb7 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 17 Jun 2026 20:13:55 +0000 Subject: [PATCH 10/20] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20260616.7 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 , Microsoft.SourceBuild.Intermediate.aspnetcore From Version 9.0.18-servicing.26315.26 -> To Version 9.0.18-servicing.26316.7 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 9.0.18 -> To Version 9.0.18 --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 20 +++++++------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/NuGet.config b/NuGet.config index 9e8f8362cdb3..1ab61b8b49d3 100644 --- a/NuGet.config +++ b/NuGet.config @@ -26,7 +26,7 @@ - + @@ -65,7 +65,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 630ce9c02601..60c4f40a2d6f 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -135,13 +135,13 @@ https://github.com/dotnet/roslyn fc52718eccdb37693a40a518b1178b1e23114e68 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted @@ -277,52 +277,52 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 @@ -345,19 +345,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 https://github.com/dotnet/test-templates @@ -541,7 +541,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - a83a8133a504cc51034db2744c3c880bc000b89b + f8834c1fdc165a41191cd294b997aae77a6ce495 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 84a1b8842e4c..e2d1cdc4dd09 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -216,18 +216,18 @@ 9.0.18 - 9.0.18-servicing.26315.26 - 9.0.18-servicing.26315.26 - 9.0.18-servicing.26315.26 - 9.0.18-servicing.26315.26 - 9.0.18-servicing.26315.26 + 9.0.18-servicing.26316.7 + 9.0.18-servicing.26316.7 + 9.0.18-servicing.26316.7 + 9.0.18-servicing.26316.7 + 9.0.18-servicing.26316.7 9.0.18 9.0.18 - 9.0.18-servicing.26315.26 - 9.0.18-servicing.26315.26 - 9.0.18-servicing.26315.26 - 9.0.18-servicing.26315.26 - 9.0.18-servicing.26315.26 + 9.0.18-servicing.26316.7 + 9.0.18-servicing.26316.7 + 9.0.18-servicing.26316.7 + 9.0.18-servicing.26316.7 + 9.0.18-servicing.26316.7 From bf222e48f17efffd915c72472fba6f5e8010a81c Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 17 Jun 2026 20:14:03 +0000 Subject: [PATCH 11/20] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20260615.22 On relative base path root Microsoft.Bcl.AsyncInterfaces , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.FileProviders.Abstractions , Microsoft.Extensions.FileSystemGlobbing , Microsoft.Extensions.Logging , Microsoft.Extensions.Logging.Abstractions , Microsoft.Extensions.Logging.Console , Microsoft.NET.ILLink.Tasks , Microsoft.NETCore.App.Host.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.Win32.SystemEvents , System.CodeDom , System.Composition.AttributedModel , System.Composition.Convention , System.Composition.Hosting , System.Composition.Runtime , System.Composition.TypedParts , System.Configuration.ConfigurationManager , System.Formats.Asn1 , System.Reflection.MetadataLoadContext , System.Resources.Extensions , System.Security.Cryptography.Pkcs , System.Security.Cryptography.ProtectedData , System.Security.Cryptography.Xml , System.Security.Permissions , System.ServiceProcess.ServiceController , System.Text.Encoding.CodePages , System.Text.Json , System.Windows.Extensions From Version 9.0.17 -> To Version 9.0.18 Microsoft.NET.HostModel , Microsoft.NETCore.Platforms , VS.Redist.Common.NetCore.SharedFramework.x64.9.0 , VS.Redist.Common.NetCore.TargetingPack.x64.9.0 , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 9.0.17-servicing.26264.16 -> To Version 9.0.18-servicing.26315.22 Dependency coherency updates On relative base path root Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport,Microsoft.SourceBuild.Intermediate.emsdk From Version 9.0.17-servicing.26258.3 -> To Version 9.0.18-servicing.26310.2 (parent: Microsoft.NETCore.App.Runtime.win-x64) Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100 From Version 9.0.17 -> To Version 9.0.18 (parent: Microsoft.NETCore.App.Runtime.win-x64) --- NuGet.config | 3 + eng/Version.Details.xml | 152 ++++++++++++++++++++-------------------- eng/Versions.props | 72 +++++++++---------- 3 files changed, 115 insertions(+), 112 deletions(-) diff --git a/NuGet.config b/NuGet.config index 9e8f8362cdb3..9b72ccea698d 100644 --- a/NuGet.config +++ b/NuGet.config @@ -24,6 +24,7 @@ + @@ -34,6 +35,7 @@ + @@ -70,6 +72,7 @@ + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 630ce9c02601..bf4ae9274804 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -15,42 +15,42 @@ f5f6eb5420398b365107b9be9e5cb6290626e39f - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 @@ -59,18 +59,18 @@ https://github.com/dotnet/core-setup 7d57652f33493fa022125b7f63aad0d70c52d810 - + https://github.com/dotnet/emsdk - b634e009d59f72e9254f984a6b89e685955e0eb8 + 8e475db5d45016c77714cce29077ae8c66d12d53 - + https://github.com/dotnet/emsdk - b634e009d59f72e9254f984a6b89e685955e0eb8 + 8e475db5d45016c77714cce29077ae8c66d12d53 - + https://github.com/dotnet/emsdk - b634e009d59f72e9254f984a6b89e685955e0eb8 + 8e475db5d45016c77714cce29077ae8c66d12d53 @@ -230,29 +230,29 @@ bc9161306b23641b0364b8f93d546da4d48da1eb - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop @@ -503,89 +503,89 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore a83a8133a504cc51034db2744c3c880bc000b89b - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 @@ -619,9 +619,9 @@ f843e65cdfc9e9af05d987f2f7f2e6f6a6106eb5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f2c8152eed158e72950025393fde498c90a57a6b + d839c41c85988aadc213e8e42269ecd7883a1790 https://github.com/dotnet/arcade-services diff --git a/eng/Versions.props b/eng/Versions.props index 84a1b8842e4c..55bf6756a137 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -86,47 +86,47 @@ - 9.0.17 - 9.0.17-servicing.26264.16 - 9.0.17 - 9.0.17 - 9.0.17-servicing.26264.16 - 9.0.17 - 9.0.17 - 9.0.17 - 9.0.17 - 9.0.17 - 9.0.17 + 9.0.18 + 9.0.18-servicing.26315.22 + 9.0.18 + 9.0.18 + 9.0.18-servicing.26315.22 + 9.0.18 + 9.0.18 + 9.0.18 + 9.0.18 + 9.0.18 + 9.0.18 8.0.0-rc.1.23414.4 - 9.0.17-servicing.26264.16 - 9.0.17-servicing.26264.16 - 9.0.17 - 9.0.17 - 9.0.17 - 9.0.17 + 9.0.18-servicing.26315.22 + 9.0.18-servicing.26315.22 + 9.0.18 + 9.0.18 + 9.0.18 + 9.0.18 2.1.0 - 9.0.17 + 9.0.18 8.0.0 - 9.0.17 - 9.0.17 - 9.0.17 - 9.0.17 - 9.0.17 - 9.0.17 - 9.0.17 + 9.0.18 + 9.0.18 + 9.0.18 + 9.0.18 + 9.0.18 + 9.0.18 + 9.0.18 8.0.0 - 9.0.17 - 9.0.17 - 9.0.17 - 9.0.17 - 9.0.17 - 9.0.17 - 9.0.17 + 9.0.18 + 9.0.18 + 9.0.18 + 9.0.18 + 9.0.18 + 9.0.18 + 9.0.18 8.0.5 - 9.0.17 - 9.0.17 + 9.0.18 + 9.0.18 @@ -317,8 +317,8 @@ 15.0.9617 18.0.9617 - 9.0.17-servicing.26258.3 - 9.0.17 + 9.0.18-servicing.26310.2 + 9.0.18 $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100PackageVersion) 9.0.100$([System.Text.RegularExpressions.Regex]::Match($(EmscriptenWorkloadManifestVersion), `-(?!rtm)[A-z]*[\.]*\d*`)) From 04558742831d52eda5c670782b97bf6eae8dae5e Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 17 Jun 2026 20:14:16 +0000 Subject: [PATCH 12/20] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20260617.1 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 9.0.17 -> To Version 9.0.18 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.9.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.9.0 From Version 9.0.17-servicing.26268.1 -> To Version 9.0.18-servicing.26317.1 Dependency coherency updates On relative base path root Microsoft.NET.Sdk.WindowsDesktop From Version 9.0.17-rtm.26267.1 -> To Version 9.0.18-rtm.26316.5 (parent: Microsoft.WindowsDesktop.App.Ref) Microsoft.Dotnet.WinForms.ProjectTemplates From Version 9.0.17-servicing.26265.1 -> To Version 9.0.18-servicing.26316.2 (parent: Microsoft.WindowsDesktop.App.Runtime.win-x64) Microsoft.DotNet.Wpf.ProjectTemplates From Version 9.0.17-rtm.26267.1 -> To Version 9.0.18-rtm.26316.5 (parent: Microsoft.WindowsDesktop.App.Runtime.win-x64) --- NuGet.config | 2 ++ eng/Version.Details.xml | 28 ++++++++++++++-------------- eng/Versions.props | 14 +++++++------- 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/NuGet.config b/NuGet.config index 9e8f8362cdb3..b4395e5df8f5 100644 --- a/NuGet.config +++ b/NuGet.config @@ -39,6 +39,7 @@ + @@ -72,6 +73,7 @@ + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 630ce9c02601..14189921c35c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -254,26 +254,26 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime f2c8152eed158e72950025393fde498c90a57a6b - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 9c74c8784a90d64bcc5c5c552d5420eafb60fa4f + 889bd3cf7e1c61b6bdee233190da4931118b6e6d - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 9c74c8784a90d64bcc5c5c552d5420eafb60fa4f + 889bd3cf7e1c61b6bdee233190da4931118b6e6d - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 9c74c8784a90d64bcc5c5c552d5420eafb60fa4f + 889bd3cf7e1c61b6bdee233190da4931118b6e6d - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 9c74c8784a90d64bcc5c5c552d5420eafb60fa4f + 889bd3cf7e1c61b6bdee233190da4931118b6e6d - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - a865df6e83bf8b34bbd6802fdcf25c5cdfb05191 + 15c7bd7f92ae827be47bfb0ca16660f8cd376189 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore @@ -390,13 +390,13 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-winforms - 4569ad0b3bd84191660c74228ad6d18d29fbc1cb + fa8da0fffee2a42efa08aac643276cd0c482c49c - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - a865df6e83bf8b34bbd6802fdcf25c5cdfb05191 + 15c7bd7f92ae827be47bfb0ca16660f8cd376189 https://github.com/dotnet/xdt diff --git a/eng/Versions.props b/eng/Versions.props index 84a1b8842e4c..bb3b3f179c8d 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -77,7 +77,7 @@ - 9.0.17-servicing.26265.1 + 9.0.18-servicing.26316.2 @@ -130,10 +130,10 @@ - 9.0.17-servicing.26268.1 - 9.0.17-servicing.26268.1 - 9.0.17 - 9.0.17 + 9.0.18-servicing.26317.1 + 9.0.18-servicing.26317.1 + 9.0.18 + 9.0.18 @@ -237,8 +237,8 @@ - 9.0.17-rtm.26267.1 - 9.0.17-rtm.26267.1 + 9.0.18-rtm.26316.5 + 9.0.18-rtm.26316.5 From f6209dee198a0e30e846499c7bf0358c94e07e11 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 17 Jun 2026 22:50:06 +0000 Subject: [PATCH 13/20] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20260617.10 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 , Microsoft.SourceBuild.Intermediate.aspnetcore From Version 9.0.18-servicing.26316.7 -> To Version 9.0.18-servicing.26317.10 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 9.0.18 -> To Version 9.0.18 --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 20 +++++++------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/NuGet.config b/NuGet.config index f958f65ce97c..e220bb44f1c8 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -68,7 +68,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 0b336f5f5929..beac02c89c36 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -135,13 +135,13 @@ https://github.com/dotnet/roslyn fc52718eccdb37693a40a518b1178b1e23114e68 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted @@ -277,52 +277,52 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 @@ -345,19 +345,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 https://github.com/dotnet/test-templates @@ -541,7 +541,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f8834c1fdc165a41191cd294b997aae77a6ce495 + c2c420608bf0e24d7df00021f48a686c70928871 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 320703383f40..28628ea8cf50 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -216,18 +216,18 @@ 9.0.18 - 9.0.18-servicing.26316.7 - 9.0.18-servicing.26316.7 - 9.0.18-servicing.26316.7 - 9.0.18-servicing.26316.7 - 9.0.18-servicing.26316.7 + 9.0.18-servicing.26317.10 + 9.0.18-servicing.26317.10 + 9.0.18-servicing.26317.10 + 9.0.18-servicing.26317.10 + 9.0.18-servicing.26317.10 9.0.18 9.0.18 - 9.0.18-servicing.26316.7 - 9.0.18-servicing.26316.7 - 9.0.18-servicing.26316.7 - 9.0.18-servicing.26316.7 - 9.0.18-servicing.26316.7 + 9.0.18-servicing.26317.10 + 9.0.18-servicing.26317.10 + 9.0.18-servicing.26317.10 + 9.0.18-servicing.26317.10 + 9.0.18-servicing.26317.10 From 59293e6489daa3789cbda24da99cbbe7e213839a Mon Sep 17 00:00:00 2001 From: Ella Hathaway Date: Thu, 18 Jun 2026 18:49:32 +0000 Subject: [PATCH 14/20] Merged PR 62222: Attempt to fix dotnet-dotnet internal sync pipeline This is an attempt to fix the dotnet-dotnet internal sync pipeline. --- .../templates/jobs/vmr-synchronization.yml | 42 ++++++++++--------- eng/pipelines/templates/steps/vmr-prepare.yml | 2 +- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/eng/pipelines/templates/jobs/vmr-synchronization.yml b/eng/pipelines/templates/jobs/vmr-synchronization.yml index c568ad296ac4..db05c8491f9c 100644 --- a/eng/pipelines/templates/jobs/vmr-synchronization.yml +++ b/eng/pipelines/templates/jobs/vmr-synchronization.yml @@ -54,24 +54,10 @@ jobs: vmrBranch: ${{ parameters.vmrBranch }} - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - - task: AzureCLI@2 - displayName: 'Mint AzDO token for VMR push' - inputs: - azureSubscription: 'dnceng-build-rw-code-rw-wif' - scriptType: 'pscore' - scriptLocation: 'inlineScript' - inlineScript: | - $token = az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query accessToken -o tsv - if ($LASTEXITCODE -ne 0) { - Write-Error "Failed to acquire Azure DevOps access token via 'az account get-access-token'. Exit code: $LASTEXITCODE" - exit 1 - } - $token = $token.Trim() - if ([string]::IsNullOrWhiteSpace($token)) { - Write-Error "Received an empty or whitespace Azure DevOps access token from 'az account get-access-token'." - exit 1 - } - Write-Host "##vso[task.setvariable variable=AzdoToken;issecret=true]$token" + - template: /eng/common/templates-official/steps/get-federated-access-token.yml + parameters: + federatedServiceConnection: VmrSyncPipeline + outputVariableName: AzdoToken - template: ../steps/vmr-pull-updates.yml parameters: @@ -95,13 +81,31 @@ jobs: # Push internal/release branches to the internal VMR - ${{ if startsWith(parameters.vmrBranch, 'internal/release/') }}: + - task: AzureCLI@2 + displayName: Mint AzDO token via WIF + inputs: + azureSubscription: 'dnceng-build-rw-code-rw-wif' + scriptType: 'pscore' + scriptLocation: 'inlineScript' + inlineScript: | + $token = az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query accessToken -o tsv + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to acquire Azure DevOps access token via 'az account get-access-token'. Exit code: $LASTEXITCODE" + exit 1 + } + $token = $token.Trim() + if ([string]::IsNullOrWhiteSpace($token)) { + Write-Error "Received an empty or whitespace Azure DevOps access token from 'az account get-access-token'." + exit 1 + } + Write-Host "##vso[task.setvariable variable=WifAzdoToken;issecret=true]$token" - script: > ./.dotnet/dotnet darc vmr push --vmr '$(vmrPath)' --skip-commit-verification --branch '${{ parameters.vmrBranch }}' --remote-url '$(vmrInternalUrl)' - --azdev-pat '$(AzdoToken)' + --azdev-pat '$(WifAzdoToken)' --verbose displayName: Push changes to dotnet-dotnet (internal) workingDirectory: $(Agent.BuildDirectory)/sdk diff --git a/eng/pipelines/templates/steps/vmr-prepare.yml b/eng/pipelines/templates/steps/vmr-prepare.yml index 8cb5bae7815c..155ccda03d5c 100644 --- a/eng/pipelines/templates/steps/vmr-prepare.yml +++ b/eng/pipelines/templates/steps/vmr-prepare.yml @@ -1,4 +1,4 @@ -### These steps clone the VMR (https://github.com/dotnet/dotnet) into $(Agent.BuildDirectory)/vmr for installer +### These steps clone the VMR (https://github.com/dotnet/dotnet) into $(Agent.BuildDirectory)/vmr for sdk parameters: - name: vmrBranch From 8da0b4641182c786e75496a101284900346efdc2 Mon Sep 17 00:00:00 2001 From: Ella Hathaway Date: Fri, 19 Jun 2026 17:38:32 +0000 Subject: [PATCH 15/20] Merged PR 62245: Cloak aspnetcore binary Cloak aspnetcore binary Related to https://github.com/dotnet/source-build/issues/5594 --- src/VirtualMonoRepo/source-mappings.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/VirtualMonoRepo/source-mappings.json b/src/VirtualMonoRepo/source-mappings.json index 661fdef3a64d..f264a2fc03bd 100644 --- a/src/VirtualMonoRepo/source-mappings.json +++ b/src/VirtualMonoRepo/source-mappings.json @@ -57,6 +57,7 @@ "name": "aspnetcore", "defaultRemote": "https://github.com/dotnet/aspnetcore", "exclude": [ + "src/submodules/MessagePack-CSharp/src/MessagePack.UnityClient/UserSettings/EditorUserSettings.asset" // Non-OSS license - https://github.com/dotnet/source-build/issues/3537 "src/Installers/Windows/AspNetCoreModule-Setup/**/*" ] From 331e5f4e4fd6a8a8c091e016cec261bf96fe973f Mon Sep 17 00:00:00 2001 From: Ella Hathaway Date: Fri, 19 Jun 2026 20:41:23 +0000 Subject: [PATCH 16/20] Merged PR 62259: Fix source-mappings.json Fix source-mappings.json --- src/VirtualMonoRepo/source-mappings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/VirtualMonoRepo/source-mappings.json b/src/VirtualMonoRepo/source-mappings.json index f264a2fc03bd..0b937c37e951 100644 --- a/src/VirtualMonoRepo/source-mappings.json +++ b/src/VirtualMonoRepo/source-mappings.json @@ -57,7 +57,7 @@ "name": "aspnetcore", "defaultRemote": "https://github.com/dotnet/aspnetcore", "exclude": [ - "src/submodules/MessagePack-CSharp/src/MessagePack.UnityClient/UserSettings/EditorUserSettings.asset" + "src/submodules/MessagePack-CSharp/src/MessagePack.UnityClient/UserSettings/EditorUserSettings.asset", // Non-OSS license - https://github.com/dotnet/source-build/issues/3537 "src/Installers/Windows/AspNetCoreModule-Setup/**/*" ] From 4e901bb4f6222363bb9241a1d356109859509f51 Mon Sep 17 00:00:00 2001 From: ProductConstructionServiceProd Date: Sat, 20 Jun 2026 01:17:38 +0000 Subject: [PATCH 17/20] Merged PR 62266: [internal/release/9.0.1xx] Update dependencies from dnceng/internal/dotnet-aspnetcore This pull request updates the following dependencies [marker]: <> (Begin:7c429c14-b12b-40f6-ae9e-395f98f369df) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - **Subscription**: [7c429c14-b12b-40f6-ae9e-395f98f369df](https://maestro.dot.net/subscriptions?search=7c429c14-b12b-40f6-ae9e-395f98f369df) - **Build**: [20260619.8](https://dev.azure.com/dnceng/internal/_build/results?buildId=3004286) ([319500](https://maestro.dot.net/channel/5128/azdo:dnceng:internal:dotnet-aspnetcore/build/319500)) - **Date Produced**: June 20, 2026 12:08:52 AM UTC - **Commit**: [b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0](https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore?_a=history&version=GCb8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0) - **Branch**: [refs/heads/internal/release/9.0](https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore?version=GBrefs/heads/internal/release/9.0) [DependencyUpdate]: <> (Begin) - **Dependency Updates**: - From [9.0.18-servicing.26317.10 to 9.0.18-servicing.26319.8][1] - dotnet-dev-certs - dotnet-user-jwts - dotnet-user-secrets - Microsoft.AspNetCore.Analyzers - Microsoft.AspNetCore.App.Ref.Internal - Microsoft.AspNetCore.Components.SdkAnalyzers - Microsoft.AspNetCore.DeveloperCertificates.XPlat - Microsoft.AspNetCore.Mvc.Analyzers - Microsoft.AspNetCore.Mvc.Api.Analyzers - VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 - Microsoft.SourceBuild.Intermediate.aspnetcore - From [9.0.18 to 9.0.18][1] - Microsoft.AspNetCore.App.Ref - Microsoft.AspNetCore.App.Runtime.win-x64 - Microsoft.AspNetCore.Authorization - Microsoft.AspNetCore.Components.Web - Microsoft.AspNetCore.TestHost - Microsoft.Extensions.FileProviders.Embedded - Microsoft.Extensions.ObjectPool - Microsoft.JSInterop [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore/branches?baseVersion=GCc2c420608bf0e24d7df00021f48a686c70928871&targetVersion=GCb8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:7c429c14-b12b-40f6-ae9e-395f98f369df) --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 20 +++++++------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/NuGet.config b/NuGet.config index e220bb44f1c8..50e910fd0591 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -68,7 +68,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index beac02c89c36..b92fe6f6b045 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -135,13 +135,13 @@ https://github.com/dotnet/roslyn fc52718eccdb37693a40a518b1178b1e23114e68 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted @@ -277,52 +277,52 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 @@ -345,19 +345,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 https://github.com/dotnet/test-templates @@ -541,7 +541,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c2c420608bf0e24d7df00021f48a686c70928871 + b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 28628ea8cf50..cf478af00dfb 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -216,18 +216,18 @@ 9.0.18 - 9.0.18-servicing.26317.10 - 9.0.18-servicing.26317.10 - 9.0.18-servicing.26317.10 - 9.0.18-servicing.26317.10 - 9.0.18-servicing.26317.10 + 9.0.18-servicing.26319.8 + 9.0.18-servicing.26319.8 + 9.0.18-servicing.26319.8 + 9.0.18-servicing.26319.8 + 9.0.18-servicing.26319.8 9.0.18 9.0.18 - 9.0.18-servicing.26317.10 - 9.0.18-servicing.26317.10 - 9.0.18-servicing.26317.10 - 9.0.18-servicing.26317.10 - 9.0.18-servicing.26317.10 + 9.0.18-servicing.26319.8 + 9.0.18-servicing.26319.8 + 9.0.18-servicing.26319.8 + 9.0.18-servicing.26319.8 + 9.0.18-servicing.26319.8 From 91c25ca5d11380512965b86661d014eea30a9d63 Mon Sep 17 00:00:00 2001 From: Matt Thalman Date: Tue, 23 Jun 2026 21:14:11 +0000 Subject: [PATCH 18/20] Merged PR 62328: Exclude Microsoft.Bcl.Cryptography.dll from dotnet-user-jwts SDK diff Exclude Microsoft.Bcl.Cryptography.dll from dotnet-user-jwts SDK diff The MSFT SDK ships Microsoft.Bcl.Cryptography.dll with dotnet-user-jwts but the source-built SDK does not. SB rebuilds IdentityModel from older pinned source that lacks the transitive Microsoft.Bcl.Cryptography dependency added in the released package. On net10 the crypto types are in-box, so the facade is not needed. Exclude the file rather than baking it into MsftToSbSdkFiles.diff. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> ---- #### AI description (iteration 1) #### PR Classification Configuration update to exclude a transitive dependency from SDK content difference testing. #### PR Summary This pull request adds an exclusion rule for `Microsoft.Bcl.Cryptography.dll` in the dotnet-user-jwts tool to address a source build discrepancy where IdentityModel is rebuilt from older source that lacks this transitive dependency. - `SdkFileDiffExclusions.txt`: Added exclusion entry for `Microsoft.Bcl.Cryptography.dll` under the dotnet-user-jwts tool path to prevent false positives in SDK content diff tests --- .../assets/SdkContentTests/SdkFileDiffExclusions.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/SdkContentTests/SdkFileDiffExclusions.txt b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/SdkContentTests/SdkFileDiffExclusions.txt index 33a1265a0d38..fbee143561b1 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/SdkContentTests/SdkFileDiffExclusions.txt +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/SdkContentTests/SdkFileDiffExclusions.txt @@ -61,6 +61,9 @@ ./sdk/x.y.z/DotnetTools/dotnet-format/ ./sdk/x.y.z/DotnetTools/dotnet-watch/ +# SB rebuilds IdentityModel from older source lacking the transitive Microsoft.Bcl.Cryptography dependency +./sdk/x.y.z/DotnetTools/dotnet-user-jwts/x.y.z/tools/netx.y/any/Microsoft.Bcl.Cryptography.dll|msft + ./sdk/x.y.z/Extensions/cs/|msft ./sdk/x.y.z/Extensions/de/|msft ./sdk/x.y.z/Extensions/es/|msft From 0d7ae3db54f20f532a18b1525de5bbe0978e584f Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 23 Jun 2026 21:38:11 +0000 Subject: [PATCH 19/20] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20260623.11 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 , Microsoft.SourceBuild.Intermediate.aspnetcore From Version 9.0.18-servicing.26319.8 -> To Version 9.0.18-servicing.26323.11 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 9.0.18 -> To Version 9.0.18 --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 20 +++++++------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/NuGet.config b/NuGet.config index 50e910fd0591..24ecdf3345a5 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -68,7 +68,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b92fe6f6b045..6320655bf79d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -135,13 +135,13 @@ https://github.com/dotnet/roslyn fc52718eccdb37693a40a518b1178b1e23114e68 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted @@ -277,52 +277,52 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 @@ -345,19 +345,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 https://github.com/dotnet/test-templates @@ -541,7 +541,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b8520b5b3b90f00b2b4b2899af36e9fd1a19f9d0 + a95d6599f37762ec8394ba9ca01e8263b2e36a26 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index cf478af00dfb..e3c3a5dd4b13 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -216,18 +216,18 @@ 9.0.18 - 9.0.18-servicing.26319.8 - 9.0.18-servicing.26319.8 - 9.0.18-servicing.26319.8 - 9.0.18-servicing.26319.8 - 9.0.18-servicing.26319.8 + 9.0.18-servicing.26323.11 + 9.0.18-servicing.26323.11 + 9.0.18-servicing.26323.11 + 9.0.18-servicing.26323.11 + 9.0.18-servicing.26323.11 9.0.18 9.0.18 - 9.0.18-servicing.26319.8 - 9.0.18-servicing.26319.8 - 9.0.18-servicing.26319.8 - 9.0.18-servicing.26319.8 - 9.0.18-servicing.26319.8 + 9.0.18-servicing.26323.11 + 9.0.18-servicing.26323.11 + 9.0.18-servicing.26323.11 + 9.0.18-servicing.26323.11 + 9.0.18-servicing.26323.11 From 9b95745c32328649924f8826a6a617f9ec21fb47 Mon Sep 17 00:00:00 2001 From: Marc Paine Date: Tue, 14 Jul 2026 14:50:52 -0700 Subject: [PATCH 20/20] Fix DownloadBlobAsync retry tests failing in internal builds Two bugs fixed: 1. Registry constructor chain did not forward retryDelayProvider parameter through intermediate constructors, so it was always null at the private constructor (defaulting to 1-second delay instead of the caller's value). 2. Tests used invalid digest 'sha256:testdigest1234' (not valid 64-char hex). The internal branch has digest validation that rejects non-hex digests, causing exceptions inside the retry loop that exhaust all retries and throw UnableToDownloadFromRepositoryException. Each test now uses a unique valid SHA-256 digest to also avoid parallel test interference via the shared ContentStore. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Microsoft.NET.Build.Containers/Registry/Registry.cs | 4 ++-- .../RegistryTests.cs | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Containers/Microsoft.NET.Build.Containers/Registry/Registry.cs b/src/Containers/Microsoft.NET.Build.Containers/Registry/Registry.cs index a50093c70358..b1a11ffa8423 100644 --- a/src/Containers/Microsoft.NET.Build.Containers/Registry/Registry.cs +++ b/src/Containers/Microsoft.NET.Build.Containers/Registry/Registry.cs @@ -91,7 +91,7 @@ internal sealed class Registry public string RegistryName { get; } internal Registry(string registryName, ILogger logger, IRegistryAPI registryAPI, RegistrySettings? settings = null, Func? retryDelayProvider = null) : - this(new Uri($"https://{registryName}"), logger, registryAPI, settings) + this(new Uri($"https://{registryName}"), logger, registryAPI, settings, retryDelayProvider) { } internal Registry(string registryName, ILogger logger, RegistryMode mode, RegistrySettings? settings = null) : @@ -100,7 +100,7 @@ internal Registry(string registryName, ILogger logger, RegistryMode mode, Regist internal Registry(Uri baseUri, ILogger logger, IRegistryAPI registryAPI, RegistrySettings? settings = null, Func? retryDelayProvider = null) : - this(baseUri, logger, new RegistryApiFactory(registryAPI), settings) + this(baseUri, logger, new RegistryApiFactory(registryAPI), settings, retryDelayProvider) { } internal Registry(Uri baseUri, ILogger logger, RegistryMode mode, RegistrySettings? settings = null) : diff --git a/test/Microsoft.NET.Build.Containers.UnitTests/RegistryTests.cs b/test/Microsoft.NET.Build.Containers.UnitTests/RegistryTests.cs index 84025f239c0c..43bd4cc047d8 100644 --- a/test/Microsoft.NET.Build.Containers.UnitTests/RegistryTests.cs +++ b/test/Microsoft.NET.Build.Containers.UnitTests/RegistryTests.cs @@ -552,7 +552,10 @@ public async Task DownloadBlobAsync_RetriesOnFailure() var logger = _loggerFactory.CreateLogger(nameof(DownloadBlobAsync_RetriesOnFailure)); var repoName = "testRepo"; - var descriptor = new Descriptor(SchemaTypes.OciLayerGzipV1, "sha256:testdigest1234", 1234); + // The digest must be the actual SHA-256 of the response bytes so that the internal + // branch's CopyToAndVerifyAsync digest validation passes after the download succeeds. + var responseBytes = new byte[] { 1, 2, 3 }; + var descriptor = new Descriptor(SchemaTypes.OciLayerGzipV1, "sha256:039058c6f2c0cb492c533b0a4d14ef77cc0f78abccced5287d84a1a2011cfb81", 1234); var cancellationToken = CancellationToken.None; var mockRegistryAPI = new Mock(MockBehavior.Strict); @@ -560,7 +563,7 @@ public async Task DownloadBlobAsync_RetriesOnFailure() .SetupSequence(api => api.Blob.GetStreamAsync(repoName, descriptor.Digest, cancellationToken)) .ThrowsAsync(new Exception("Simulated failure 1")) // First attempt fails .ThrowsAsync(new Exception("Simulated failure 2")) // Second attempt fails - .ReturnsAsync(new MemoryStream(new byte[] { 1, 2, 3 })); // Third attempt succeeds + .ReturnsAsync(new MemoryStream(responseBytes)); // Third attempt succeeds Registry registry = new(repoName, logger, mockRegistryAPI.Object, null, () => TimeSpan.Zero); @@ -592,7 +595,7 @@ public async Task DownloadBlobAsync_ThrowsAfterMaxRetries() var logger = _loggerFactory.CreateLogger(nameof(DownloadBlobAsync_ThrowsAfterMaxRetries)); var repoName = "testRepo"; - var descriptor = new Descriptor(SchemaTypes.OciLayerGzipV1, "sha256:testdigest1234", 1234); + var descriptor = new Descriptor(SchemaTypes.OciLayerGzipV1, "sha256:a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2", 1234); var cancellationToken = CancellationToken.None; var mockRegistryAPI = new Mock(MockBehavior.Strict);