From f5ccbafe42bb9d4094275fdea9bb87b0d2e7aa2f Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Fri, 31 Jul 2026 17:01:04 -0700 Subject: [PATCH] Update projects to .NET 10 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6769d1b6-94fb-4dcf-aea0-d20968641efa --- .devcontainer/devcontainer.json | 2 +- .../steps/bootstrap-imagebuilder.yml | 2 +- global.json | 3 +-- src/Dockerfile.linux | 4 +-- src/Dockerfile.windows | 2 +- ...icrosoft.DotNet.GitAutomation.Tests.csproj | 4 +-- .../Microsoft.DotNet.GitAutomation.csproj | 8 +++--- ...icrosoft.DotNet.ImageBuilder.Models.csproj | 2 +- ...Microsoft.DotNet.ImageBuilder.Tests.csproj | 2 +- .../ImageBuilder.Updater.csproj | 4 +-- .../Commands/CleanAcrImagesCommand.cs | 6 ++--- .../Microsoft.DotNet.ImageBuilder.csproj | 27 +++++++++---------- .../Content/Install-DotNetSdk.ps1 | 2 +- .../templates/jobs/cg-build-projects.yml | 2 +- ...t.DotNet.DockerTools.Infrastructure.csproj | 2 +- src/manifest.json | 9 ++++--- 16 files changed, 40 insertions(+), 41 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 515d699f9..eaf404754 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,5 +1,5 @@ { - "image": "mcr.microsoft.com/dotnet/sdk:9.0-noble", + "image": "mcr.microsoft.com/dotnet/sdk:10.0-noble", "features": { "ghcr.io/devcontainers/features/common-utils": { "username": "app", diff --git a/eng/pipelines/templates/steps/bootstrap-imagebuilder.yml b/eng/pipelines/templates/steps/bootstrap-imagebuilder.yml index 4dfef7865..21782a041 100644 --- a/eng/pipelines/templates/steps/bootstrap-imagebuilder.yml +++ b/eng/pipelines/templates/steps/bootstrap-imagebuilder.yml @@ -19,7 +19,7 @@ steps: displayName: Bootstrap ImageBuilder from source (Linux) condition: eq(variables['Agent.OS'], 'Linux') -- powershell: $(engDockerToolsPath)/Install-DotNetSdk.ps1 -InstallPath "$(Build.SourcesDirectory)/.dotnet" +- powershell: $(engDockerToolsPath)/Install-DotNetSdk.ps1 -Channel "10.0" -InstallPath "$(Build.SourcesDirectory)/.dotnet" displayName: Install .NET SDK (Windows) condition: eq(variables['Agent.OS'], 'Windows_NT') diff --git a/global.json b/global.json index 073ff96a9..9481be954 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,7 @@ "dotnet": "11.0.100-preview.5.26227.104", "runtimes": { "dotnet": [ - "9.0.11", - "10.0.1" + "10.0.10" ] } }, diff --git a/src/Dockerfile.linux b/src/Dockerfile.linux index 59fb4c978..571c7e8f5 100644 --- a/src/Dockerfile.linux +++ b/src/Dockerfile.linux @@ -3,7 +3,7 @@ # docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v :/repo -w /repo image-builder # build Microsoft.DotNet.ImageBuilder -FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0-azurelinux3.0 AS build-env +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0-azurelinux3.0 AS build-env ARG TARGETARCH # download root CA certificates for signature verification @@ -31,7 +31,7 @@ RUN dotnet publish -r linux-$TARGETARCH ./ImageBuilder/Microsoft.DotNet.ImageBui # build runtime image -FROM mcr.microsoft.com/dotnet/runtime:9.0-azurelinux3.0 +FROM mcr.microsoft.com/dotnet/runtime:10.0-azurelinux3.0 # install tooling RUN tdnf install -y \ diff --git a/src/Dockerfile.windows b/src/Dockerfile.windows index ff19a2ec8..2640cbd77 100644 --- a/src/Dockerfile.windows +++ b/src/Dockerfile.windows @@ -4,7 +4,7 @@ ARG WINDOWS_BASE ARG WINDOWS_SDK # build Microsoft.DotNet.ImageBuilder -FROM mcr.microsoft.com/dotnet/sdk:9.0-$WINDOWS_SDK AS build-env +FROM mcr.microsoft.com/dotnet/sdk:10.0-$WINDOWS_SDK AS build-env WORKDIR /image-builder # Work around Windows path length limitations by moving NuGet package cache to diff --git a/src/GitAutomation.Tests/Microsoft.DotNet.GitAutomation.Tests.csproj b/src/GitAutomation.Tests/Microsoft.DotNet.GitAutomation.Tests.csproj index dbc090e54..1b48767c0 100644 --- a/src/GitAutomation.Tests/Microsoft.DotNet.GitAutomation.Tests.csproj +++ b/src/GitAutomation.Tests/Microsoft.DotNet.GitAutomation.Tests.csproj @@ -1,7 +1,7 @@ - net9.0 + net10.0 false true true @@ -17,7 +17,7 @@ - + diff --git a/src/GitAutomation/Microsoft.DotNet.GitAutomation.csproj b/src/GitAutomation/Microsoft.DotNet.GitAutomation.csproj index b37081e1e..e4e374e5d 100644 --- a/src/GitAutomation/Microsoft.DotNet.GitAutomation.csproj +++ b/src/GitAutomation/Microsoft.DotNet.GitAutomation.csproj @@ -1,7 +1,7 @@ - net9.0 + net10.0 enable true true @@ -28,10 +28,10 @@ - - + + - + diff --git a/src/ImageBuilder.Models/Microsoft.DotNet.ImageBuilder.Models.csproj b/src/ImageBuilder.Models/Microsoft.DotNet.ImageBuilder.Models.csproj index 8736e01da..7cdee55be 100644 --- a/src/ImageBuilder.Models/Microsoft.DotNet.ImageBuilder.Models.csproj +++ b/src/ImageBuilder.Models/Microsoft.DotNet.ImageBuilder.Models.csproj @@ -1,7 +1,7 @@  - net9.0 + net10.0 enable diff --git a/src/ImageBuilder.Tests/Microsoft.DotNet.ImageBuilder.Tests.csproj b/src/ImageBuilder.Tests/Microsoft.DotNet.ImageBuilder.Tests.csproj index 488853e22..58effdc11 100644 --- a/src/ImageBuilder.Tests/Microsoft.DotNet.ImageBuilder.Tests.csproj +++ b/src/ImageBuilder.Tests/Microsoft.DotNet.ImageBuilder.Tests.csproj @@ -1,7 +1,7 @@ - net9.0 + net10.0 false true true diff --git a/src/ImageBuilder.Updater/ImageBuilder.Updater.csproj b/src/ImageBuilder.Updater/ImageBuilder.Updater.csproj index 7e532e49b..742aa6764 100644 --- a/src/ImageBuilder.Updater/ImageBuilder.Updater.csproj +++ b/src/ImageBuilder.Updater/ImageBuilder.Updater.csproj @@ -2,14 +2,14 @@ Exe - net9.0 + net10.0 enable enable - + diff --git a/src/ImageBuilder/Commands/CleanAcrImagesCommand.cs b/src/ImageBuilder/Commands/CleanAcrImagesCommand.cs index 6f2adb474..4c9d685f6 100644 --- a/src/ImageBuilder/Commands/CleanAcrImagesCommand.cs +++ b/src/ImageBuilder/Commands/CleanAcrImagesCommand.cs @@ -193,12 +193,12 @@ private async Task ProcessManifestsAsync( int manifestCount = 0; int batchNumber = 0; - var batches = manifests.Buffer(ManifestBatchSize).WithCancellation(cancellationToken); + var batches = manifests.Chunk(ManifestBatchSize).WithCancellation(cancellationToken); await foreach (var batch in batches) { long batchStartTimestamp = Stopwatch.GetTimestamp(); batchNumber++; - manifestCount += batch.Count; + manifestCount += batch.Length; ConcurrentBag digestsToDelete = await FindManifestsToDeleteAsync(batch, canDeleteManifest, cancellationToken); await DeleteManifestsAsync(acrContentClient, repository, digestsToDelete); @@ -208,7 +208,7 @@ private async Task ProcessManifestsAsync( + " {ManifestCount} manifests, {DeletionCount} deleted, Duration={Duration}. DryRun={DryRun}", batchNumber, repository.Name, - batch.Count, + batch.Length, digestsToDelete.Count, Stopwatch.GetElapsedTime(batchStartTimestamp), Options.IsDryRun); diff --git a/src/ImageBuilder/Microsoft.DotNet.ImageBuilder.csproj b/src/ImageBuilder/Microsoft.DotNet.ImageBuilder.csproj index c33de5fb7..42860046e 100644 --- a/src/ImageBuilder/Microsoft.DotNet.ImageBuilder.csproj +++ b/src/ImageBuilder/Microsoft.DotNet.ImageBuilder.csproj @@ -3,7 +3,7 @@ Exe False - net9.0 + net10.0 Microsoft.DotNet.ImageBuilder true true @@ -32,11 +32,11 @@ - - - - - + + + + + @@ -45,21 +45,18 @@ - - - - - + + + + - + - + - - diff --git a/src/Infrastructure/Content/Install-DotNetSdk.ps1 b/src/Infrastructure/Content/Install-DotNetSdk.ps1 index 35f6516e4..07206c09c 100644 --- a/src/Infrastructure/Content/Install-DotNetSdk.ps1 +++ b/src/Infrastructure/Content/Install-DotNetSdk.ps1 @@ -20,7 +20,7 @@ param( [string] $InstallPath, [string] - $Channel = "9.0" + $Channel = "10.0" ) Set-StrictMode -Version Latest diff --git a/src/Infrastructure/Content/templates/jobs/cg-build-projects.yml b/src/Infrastructure/Content/templates/jobs/cg-build-projects.yml index 10d50689f..ade54b50d 100644 --- a/src/Infrastructure/Content/templates/jobs/cg-build-projects.yml +++ b/src/Infrastructure/Content/templates/jobs/cg-build-projects.yml @@ -15,7 +15,7 @@ parameters: # See https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script#options for possible Channel values - name: dotnetVersionChannel type: string - default: '9.0' + default: '10.0' displayName: .NET Version # Additional steps to run before building projects (e.g. custom SDK installation). - name: initSteps diff --git a/src/Infrastructure/Microsoft.DotNet.DockerTools.Infrastructure.csproj b/src/Infrastructure/Microsoft.DotNet.DockerTools.Infrastructure.csproj index 2cf0fb2b0..1751d755d 100644 --- a/src/Infrastructure/Microsoft.DotNet.DockerTools.Infrastructure.csproj +++ b/src/Infrastructure/Microsoft.DotNet.DockerTools.Infrastructure.csproj @@ -1,7 +1,7 @@ - net9.0 + net10.0 Microsoft.DotNet.DockerTools.Infrastructure true diff --git a/src/manifest.json b/src/manifest.json index 563b488ac..25ef9ba66 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -38,8 +38,9 @@ { "buildArgs": { "WINDOWS_BASE": "servercore:ltsc2016-amd64", - "WINDOWS_SDK": "nanoserver-1809" + "WINDOWS_SDK": "nanoserver-ltsc2025" }, + "buildOsVersion": "windowsservercore-ltsc2025", "dockerfile": "Dockerfile.windows", "os": "windows", "osVersion": "windowsservercore-ltsc2019", @@ -51,8 +52,9 @@ { "buildArgs": { "WINDOWS_BASE": "nanoserver:1809-amd64", - "WINDOWS_SDK": "nanoserver-1809" + "WINDOWS_SDK": "nanoserver-ltsc2025" }, + "buildOsVersion": "windowsservercore-ltsc2025", "dockerfile": "Dockerfile.windows", "os": "windows", "osVersion": "nanoserver-1809", @@ -64,8 +66,9 @@ { "buildArgs": { "WINDOWS_BASE": "nanoserver:ltsc2022-amd64", - "WINDOWS_SDK": "nanoserver-ltsc2022" + "WINDOWS_SDK": "nanoserver-ltsc2025" }, + "buildOsVersion": "windowsservercore-ltsc2025", "dockerfile": "Dockerfile.windows", "os": "windows", "osVersion": "nanoserver-ltsc2022",