diff --git a/README.aspnet.md b/README.aspnet.md index a95d03a26..186d2769d 100644 --- a/README.aspnet.md +++ b/README.aspnet.md @@ -69,6 +69,13 @@ Version Tag | OS Version | Supported .NET Versions ## Full Tag Listing +### Windows Server Core 2025 amd64 Tags + +Tag | Dockerfile +---------| --------------- +4.8.1-20250106-windowsservercore-ltsc2025, 4.8.1-windowsservercore-ltsc2025, 4.8.1 | [Dockerfile](src/aspnet/4.8.1/windowsservercore-ltsc2025/Dockerfile) +3.5-20250106-windowsservercore-ltsc2025, 3.5-windowsservercore-ltsc2025, 3.5 | [Dockerfile](src/aspnet/3.5/windowsservercore-ltsc2025/Dockerfile) + ### Windows Server Core 2022 amd64 Tags Tag | Dockerfile diff --git a/README.runtime.md b/README.runtime.md index 3c345f744..d30a7cc94 100644 --- a/README.runtime.md +++ b/README.runtime.md @@ -60,6 +60,13 @@ Version Tag | OS Version | Supported .NET Versions ## Full Tag Listing +### Windows Server Core 2025 amd64 Tags + +Tag | Dockerfile +---------| --------------- +4.8.1-20250106-windowsservercore-ltsc2025, 4.8.1-windowsservercore-ltsc2025, 4.8.1 | [Dockerfile](src/runtime/4.8.1/windowsservercore-ltsc2025/Dockerfile) +3.5-20250106-windowsservercore-ltsc2025, 3.5-windowsservercore-ltsc2025, 3.5 | [Dockerfile](src/runtime/3.5/windowsservercore-ltsc2025/Dockerfile) + ### Windows Server Core 2022 amd64 Tags Tag | Dockerfile diff --git a/README.sdk.md b/README.sdk.md index 7defd0dbb..068fa11d3 100644 --- a/README.sdk.md +++ b/README.sdk.md @@ -68,6 +68,13 @@ Version Tag | OS Version | Supported .NET Versions ## Full Tag Listing +### Windows Server Core 2025 amd64 Tags + +Tag | Dockerfile +---------| --------------- +4.8.1-20250106-windowsservercore-ltsc2025, 4.8.1-windowsservercore-ltsc2025, 4.8.1 | [Dockerfile](src/sdk/4.8.1/windowsservercore-ltsc2025/Dockerfile) +3.5-20250106-windowsservercore-ltsc2025, 3.5-windowsservercore-ltsc2025, 3.5 | [Dockerfile](src/sdk/3.5/windowsservercore-ltsc2025/Dockerfile) + ### Windows Server Core 2022 amd64 Tags Tag | Dockerfile diff --git a/README.wcf.md b/README.wcf.md index 519c80ea9..fe4bec908 100644 --- a/README.wcf.md +++ b/README.wcf.md @@ -68,6 +68,12 @@ Version Tag | OS Version | Supported .NET Versions ## Full Tag Listing +### Windows Server Core 2025 amd64 Tags + +Tag | Dockerfile +---------| --------------- +4.8.1-20250106-windowsservercore-ltsc2025, 4.8.1-windowsservercore-ltsc2025, 4.8.1 | [Dockerfile](src/wcf/4.8.1/windowsservercore-ltsc2025/Dockerfile) + ### Windows Server Core 2022 amd64 Tags Tag | Dockerfile diff --git a/eng/dockerfile-templates/runtime/Dockerfile b/eng/dockerfile-templates/runtime/Dockerfile index b4e9b3758..9a629991e 100644 --- a/eng/dockerfile-templates/runtime/Dockerfile +++ b/eng/dockerfile-templates/runtime/Dockerfile @@ -1,6 +1,12 @@ {{ + set kbExists to VARIABLES[cat("kb|", OS_VERSION_NUMBER, "|", PRODUCT_VERSION)] != void ^ set is48SecurityRelease to (VARIABLES[cat("4.8-is-security-release|", OS_VERSION_NUMBER)] = "true") ^ - set apply35Patch to (VARIABLES[cat("kb|", OS_VERSION_NUMBER, "|", PRODUCT_VERSION)] != void && PRODUCT_VERSION = "3.5" && OS_VERSION_NUMBER != "ltsc2019") ^ + + set apply35Patch to kbExists + && PRODUCT_VERSION = "3.5" + && OS_VERSION_NUMBER != "ltsc2019" + && OS_VERSION_NUMBER != "ltsc2025" ^ + set applyPatch to VARIABLES[cat("kb|", OS_VERSION_NUMBER, "|", PRODUCT_VERSION)] != void && !( (OS_VERSION_NUMBER = "ltsc2019" && PRODUCT_VERSION = "4.7.2") || @@ -11,7 +17,15 @@ ) && is48SecurityRelease ) - ) + ) ^ + + set installNet35UsingWU to OS_VERSION_NUMBER = "ltsc2025" ^ + + set winver to when( + OS_VERSION_NUMBER = "ltsc2019" || OS_VERSION_NUMBER = "ltsc2022", + "windows10.0", + "windows11.0") + }}# escape=` FROM mcr.microsoft.com/windows/servercore:{{OS_VERSION_NUMBER}}-amd64 @@ -26,7 +40,11 @@ if OS_VERSION_NUMBER != "ltsc2019" || PRODUCT_VERSION = "4.8" || PRODUCT_VERSION }}COMPLUS_NGenProtectedProcess_FeatureEnabled=0 RUN ` -{{if PRODUCT_VERSION = "3.5" +{{if PRODUCT_VERSION = "3.5" && installNet35UsingWU +: # Install .NET Fx 3.5 + dism /Online /Add-Capability /CapabilityName:NetFx3 ` + ` +^elif PRODUCT_VERSION = "3.5" : # Install .NET Fx 3.5 curl -fSLo microsoft-windows-netfx3.zip https://dotnetbinaries.blob.core.windows.net/dockerassets/microsoft-windows-netfx3-{{OS_VERSION_NUMBER}}.zip ` && tar -zxf microsoft-windows-netfx3.zip ` @@ -35,7 +53,7 @@ RUN ` && del microsoft-windows-netfx3-ondemand-package~31bf3856ad364e35~amd64~~.cab ` && powershell Remove-Item -Force -Recurse ${Env:TEMP}\* ` ` -^elif (OS_VERSION_NUMBER = "ltsc2019" && PRODUCT_VERSION = "4.8") || PRODUCT_VERSION = "4.8.1" +^elif (OS_VERSION_NUMBER = "ltsc2019" && PRODUCT_VERSION = "4.8") || (OS_VERSION_NUMBER != "ltsc2025" && PRODUCT_VERSION = "4.8.1") : # Install .NET Fx {{PRODUCT_VERSION}} curl -fSLo dotnet-framework-installer.exe {{VARIABLES[cat(PRODUCT_VERSION, "|url")]}} ` && .\dotnet-framework-installer.exe /q ` @@ -48,7 +66,7 @@ RUN ` && mkdir patch ` && expand patch.msu patch -F:* ` && del /F /Q patch.msu ` - && dism /Online /Quiet /Add-Package /PackagePath:C:\patch\windows10.0-{{VARIABLES[cat("kb|", OS_VERSION_NUMBER, "|", PRODUCT_VERSION)]}}-x64{{if OS_VERSION_NUMBER = "ltsc2022":-ndp48}}.cab ` + && dism /Online /Quiet /Add-Package /PackagePath:C:\patch\{{winver}}-{{VARIABLES[cat("kb|", OS_VERSION_NUMBER, "|", PRODUCT_VERSION)]}}-x64{{if OS_VERSION_NUMBER = "ltsc2022":-ndp48}}.cab ` && rmdir /S /Q patch ` ` }}{{if applyPatch @@ -57,7 +75,7 @@ RUN ` && mkdir patch ` && expand patch.msu patch -F:* ` && del /F /Q patch.msu ` - && dism /Online /Quiet /Add-Package /PackagePath:C:\patch\windows10.0-{{VARIABLES[cat("kb|", OS_VERSION_NUMBER, "|", when(PRODUCT_VERSION = "3.5", "default", PRODUCT_VERSION))]}}-x64{{if OS_VERSION_NUMBER != "ltsc2019" || PRODUCT_VERSION = "4.8":-ndp48}}{{if PRODUCT_VERSION = "4.8.1":1}}.cab ` + && dism /Online /Quiet /Add-Package /PackagePath:C:\patch\{{winver}}-{{VARIABLES[cat("kb|", OS_VERSION_NUMBER, "|", when(PRODUCT_VERSION = "3.5", "default", PRODUCT_VERSION))]}}-x64{{if OS_VERSION_NUMBER != "ltsc2019" || PRODUCT_VERSION = "4.8":-ndp48}}{{if OS_VERSION_NUMBER = "ltsc2025" || PRODUCT_VERSION = "4.8.1":1}}.cab ` && rmdir /S /Q patch ` ` }}{{if OS_VERSION_NUMBER = "ltsc2019" && PRODUCT_VERSION = "3.5" diff --git a/eng/mcr-tags-metadata-templates/aspnet-tags.yml b/eng/mcr-tags-metadata-templates/aspnet-tags.yml index 60c2a33d1..afe087fc5 100644 --- a/eng/mcr-tags-metadata-templates/aspnet-tags.yml +++ b/eng/mcr-tags-metadata-templates/aspnet-tags.yml @@ -1,4 +1,6 @@ $(McrTagsYmlRepo:aspnet) +$(McrTagsYmlTagGroup:4.8.1-windowsservercore-ltsc2025) +$(McrTagsYmlTagGroup:3.5-windowsservercore-ltsc2025) $(McrTagsYmlTagGroup:4.8.1-windowsservercore-ltsc2022) $(McrTagsYmlTagGroup:4.8-windowsservercore-ltsc2022) $(McrTagsYmlTagGroup:3.5-windowsservercore-ltsc2022) diff --git a/eng/mcr-tags-metadata-templates/runtime-tags.yml b/eng/mcr-tags-metadata-templates/runtime-tags.yml index df405e39f..8772e706b 100644 --- a/eng/mcr-tags-metadata-templates/runtime-tags.yml +++ b/eng/mcr-tags-metadata-templates/runtime-tags.yml @@ -1,4 +1,6 @@ $(McrTagsYmlRepo:runtime) +$(McrTagsYmlTagGroup:4.8.1-windowsservercore-ltsc2025) +$(McrTagsYmlTagGroup:3.5-windowsservercore-ltsc2025) $(McrTagsYmlTagGroup:4.8.1-windowsservercore-ltsc2022) $(McrTagsYmlTagGroup:4.8-windowsservercore-ltsc2022) $(McrTagsYmlTagGroup:3.5-windowsservercore-ltsc2022) diff --git a/eng/mcr-tags-metadata-templates/sdk-tags.yml b/eng/mcr-tags-metadata-templates/sdk-tags.yml index 8dd4b6bb7..fa61ae216 100644 --- a/eng/mcr-tags-metadata-templates/sdk-tags.yml +++ b/eng/mcr-tags-metadata-templates/sdk-tags.yml @@ -1,4 +1,6 @@ $(McrTagsYmlRepo:sdk) +$(McrTagsYmlTagGroup:4.8.1-windowsservercore-ltsc2025) +$(McrTagsYmlTagGroup:3.5-windowsservercore-ltsc2025) $(McrTagsYmlTagGroup:4.8.1-windowsservercore-ltsc2022) $(McrTagsYmlTagGroup:4.8-windowsservercore-ltsc2022) $(McrTagsYmlTagGroup:3.5-windowsservercore-ltsc2022) diff --git a/eng/mcr-tags-metadata-templates/wcf-tags.yml b/eng/mcr-tags-metadata-templates/wcf-tags.yml index 1eeac03c8..ae6b0cf53 100644 --- a/eng/mcr-tags-metadata-templates/wcf-tags.yml +++ b/eng/mcr-tags-metadata-templates/wcf-tags.yml @@ -1,4 +1,5 @@ $(McrTagsYmlRepo:wcf) +$(McrTagsYmlTagGroup:4.8.1-windowsservercore-ltsc2025) $(McrTagsYmlTagGroup:4.8.1-windowsservercore-ltsc2022) $(McrTagsYmlTagGroup:4.8-windowsservercore-ltsc2022) $(McrTagsYmlTagGroup:4.8-windowsservercore-ltsc2019) diff --git a/manifest.datestamps.json b/manifest.datestamps.json index 78986d8f7..5b07672d1 100644 --- a/manifest.datestamps.json +++ b/manifest.datestamps.json @@ -2,6 +2,7 @@ "variables": { "CurrentReleaseDateStamp": "20241210", "11B-ReleaseDateStamp": "20241112", + "ltsc2025-DateStamp": "20250106", "RuntimeReleaseDateStamp": "$(11B-ReleaseDateStamp)", "AspnetReleaseDateStamp": "$(11B-ReleaseDateStamp)", @@ -11,6 +12,10 @@ "ltsc2016-AspnetReleaseDateStamp": "$(CurrentReleaseDateStamp)", "ltsc2016-WcfReleaseDateStamp": "$(CurrentReleaseDateStamp)", "ltsc2016-SdkReleaseDateStamp": "$(CurrentReleaseDateStamp)", + "ltsc2025-RuntimeReleaseDateStamp": "$(ltsc2025-DateStamp)", + "ltsc2025-AspnetReleaseDateStamp": "$(ltsc2025-DateStamp)", + "ltsc2025-WcfReleaseDateStamp": "$(ltsc2025-DateStamp)", + "ltsc2025-SdkReleaseDateStamp": "$(ltsc2025-DateStamp)", "3.5-ltsc2016-Runtime-DateStamp": "$(ltsc2016-RuntimeReleaseDateStamp)", "3.5-ltsc2016-Aspnet-DateStamp": "$(ltsc2016-AspnetReleaseDateStamp)", @@ -21,6 +26,9 @@ "3.5-ltsc2022-Runtime-DateStamp": "$(RuntimeReleaseDateStamp)", "3.5-ltsc2022-Aspnet-DateStamp": "$(AspnetReleaseDateStamp)", "3.5-ltsc2022-Sdk-DateStamp": "$(SdkReleaseDateStamp)", + "3.5-ltsc2025-Runtime-DateStamp": "$(ltsc2025-RuntimeReleaseDateStamp)", + "3.5-ltsc2025-Aspnet-DateStamp": "$(ltsc2025-AspnetReleaseDateStamp)", + "3.5-ltsc2025-Sdk-DateStamp": "$(ltsc2025-SdkReleaseDateStamp)", "4.6.2-ltsc2016-Runtime-DateStamp": "$(RuntimeReleaseDateStamp)", "4.6.2-ltsc2016-Aspnet-DateStamp": "$(AspnetReleaseDateStamp)", "4.6.2-ltsc2016-Wcf-DateStamp": "$(WcfReleaseDateStamp)", @@ -51,6 +59,10 @@ "4.8.1-ltsc2022-Runtime-DateStamp": "$(RuntimeReleaseDateStamp)", "4.8.1-ltsc2022-Aspnet-DateStamp": "$(AspnetReleaseDateStamp)", "4.8.1-ltsc2022-Wcf-DateStamp": "$(WcfReleaseDateStamp)", - "4.8.1-ltsc2022-Sdk-DateStamp": "$(SdkReleaseDateStamp)" + "4.8.1-ltsc2022-Sdk-DateStamp": "$(SdkReleaseDateStamp)", + "4.8.1-ltsc2025-Runtime-DateStamp": "$(ltsc2025-RuntimeReleaseDateStamp)", + "4.8.1-ltsc2025-Aspnet-DateStamp": "$(ltsc2025-AspnetReleaseDateStamp)", + "4.8.1-ltsc2025-Wcf-DateStamp": "$(ltsc2025-WcfReleaseDateStamp)", + "4.8.1-ltsc2025-Sdk-DateStamp": "$(ltsc2025-SdkReleaseDateStamp)" } } diff --git a/manifest.json b/manifest.json index 9e017091c..146023f5d 100644 --- a/manifest.json +++ b/manifest.json @@ -43,6 +43,16 @@ "4.8.1-$(4.8.1-ltsc2022-Runtime-DateStamp)-windowsservercore-ltsc2022": {}, "4.8.1-windowsservercore-ltsc2022": {} } + }, + { + "dockerfile": "src/runtime/4.8.1/windowsservercore-ltsc2025", + "dockerfileTemplate": "eng/dockerfile-templates/runtime/Dockerfile", + "os": "windows", + "osVersion": "windowsservercore-ltsc2025", + "tags": { + "4.8.1-$(4.8.1-ltsc2025-Runtime-DateStamp)-windowsservercore-ltsc2025": {}, + "4.8.1-windowsservercore-ltsc2025": {} + } } ] }, @@ -255,6 +265,16 @@ "3.5-$(3.5-ltsc2022-Runtime-DateStamp)-windowsservercore-ltsc2022": {}, "3.5-windowsservercore-ltsc2022": {} } + }, + { + "dockerfile": "src/runtime/3.5/windowsservercore-ltsc2025", + "dockerfileTemplate": "eng/dockerfile-templates/runtime/Dockerfile", + "os": "windows", + "osVersion": "windowsservercore-ltsc2025", + "tags": { + "3.5-$(3.5-ltsc2025-Runtime-DateStamp)-windowsservercore-ltsc2025": {}, + "3.5-windowsservercore-ltsc2025": {} + } } ] } @@ -297,6 +317,19 @@ "4.8.1-$(4.8.1-ltsc2022-Sdk-DateStamp)-windowsservercore-ltsc2022": {}, "4.8.1-windowsservercore-ltsc2022": {} } + }, + { + "buildArgs": { + "REPO": "$(Repo:runtime)" + }, + "dockerfile": "src/sdk/4.8.1/windowsservercore-ltsc2025", + "dockerfileTemplate": "eng/dockerfile-templates/sdk/Dockerfile", + "os": "windows", + "osVersion": "windowsservercore-ltsc2025", + "tags": { + "4.8.1-$(4.8.1-ltsc2025-Sdk-DateStamp)-windowsservercore-ltsc2025": {}, + "4.8.1-windowsservercore-ltsc2025": {} + } } ] }, @@ -395,6 +428,19 @@ "3.5-$(3.5-ltsc2022-Sdk-DateStamp)-windowsservercore-ltsc2022": {}, "3.5-windowsservercore-ltsc2022": {} } + }, + { + "buildArgs": { + "REPO": "$(Repo:runtime)" + }, + "dockerfile": "src/sdk/3.5/windowsservercore-ltsc2025", + "dockerfileTemplate": "eng/dockerfile-templates/sdk/Dockerfile", + "os": "windows", + "osVersion": "windowsservercore-ltsc2025", + "tags": { + "3.5-$(3.5-ltsc2025-Sdk-DateStamp)-windowsservercore-ltsc2025": {}, + "3.5-windowsservercore-ltsc2025": {} + } } ] } @@ -437,6 +483,19 @@ "4.8.1-$(4.8.1-ltsc2022-Aspnet-DateStamp)-windowsservercore-ltsc2022": {}, "4.8.1-windowsservercore-ltsc2022": {} } + }, + { + "buildArgs": { + "REPO": "$(Repo:runtime)" + }, + "dockerfile": "src/aspnet/4.8.1/windowsservercore-ltsc2025", + "dockerfileTemplate": "eng/dockerfile-templates/aspnet/Dockerfile", + "os": "windows", + "osVersion": "windowsservercore-ltsc2025", + "tags": { + "4.8.1-$(4.8.1-ltsc2025-Aspnet-DateStamp)-windowsservercore-ltsc2025": {}, + "4.8.1-windowsservercore-ltsc2025": {} + } } ] }, @@ -632,6 +691,19 @@ "3.5-$(3.5-ltsc2022-Aspnet-DateStamp)-windowsservercore-ltsc2022": {}, "3.5-windowsservercore-ltsc2022": {} } + }, + { + "buildArgs": { + "REPO": "$(Repo:runtime)" + }, + "dockerfile": "src/aspnet/3.5/windowsservercore-ltsc2025", + "dockerfileTemplate": "eng/dockerfile-templates/aspnet/Dockerfile", + "os": "windows", + "osVersion": "windowsservercore-ltsc2025", + "tags": { + "3.5-$(3.5-ltsc2025-Aspnet-DateStamp)-windowsservercore-ltsc2025": {}, + "3.5-windowsservercore-ltsc2025": {} + } } ] } @@ -674,6 +746,19 @@ "4.8.1-$(4.8.1-ltsc2022-Wcf-DateStamp)-windowsservercore-ltsc2022": {}, "4.8.1-windowsservercore-ltsc2022": {} } + }, + { + "buildArgs": { + "REPO": "$(Repo:aspnet)" + }, + "dockerfile": "src/wcf/4.8.1/windowsservercore-ltsc2025", + "dockerfileTemplate": "eng/dockerfile-templates/wcf/Dockerfile", + "os": "windows", + "osVersion": "windowsservercore-ltsc2025", + "tags": { + "4.8.1-$(4.8.1-ltsc2025-Wcf-DateStamp)-windowsservercore-ltsc2025": {}, + "4.8.1-windowsservercore-ltsc2025": {} + } } ] }, diff --git a/manifest.versions.json b/manifest.versions.json index 4ca86c6e3..1c050604e 100644 --- a/manifest.versions.json +++ b/manifest.versions.json @@ -6,16 +6,18 @@ "lcu|ltsc2019|3.5": "https://catalog.s.download.windowsupdate.com/d/msdownload/update/software/updt/2024/10/windows10.0-kb5046268-x64_cd2f14649df2343f1b4692c50644f22b863ed408.msu", "kb|ltsc2022|3.5": "KB5046265", "lcu|ltsc2022|3.5": "https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/updt/2024/10/windows10.0-kb5046265-x64-ndp48_cfcc472170dde9e73e2702f786f4f766864310e4.msu", + "kb|ltsc2025|3.5": "KB5045934", + "lcu|ltsc2025|3.5": "https://catalog.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/bbe78019-f312-48bc-9949-7392807d86c2/public/windows11.0-kb5045934-x64-ndp481_fa9c3adfb0532eb8f4e521f4fb92a179380184c5.msu", // All of these versions are patched by the same corresponding KB labeled as 3.5 above. - "kb|ltsc2019|4.7.2": "$(kb|ltsc2019|3.5)", - "lcu|ltsc2019|4.7.2": "$(lcu|ltsc2019|3.5)", "kb|ltsc2016|4.7.2": "$(kb|ltsc2016|3.5)", "lcu|ltsc2016|4.7.2": "$(lcu|ltsc2016|3.5)", "kb|ltsc2016|4.7.1": "$(kb|ltsc2016|3.5)", "lcu|ltsc2016|4.7.1": "$(lcu|ltsc2016|3.5)", "kb|ltsc2016|4.7": "$(kb|ltsc2016|3.5)", "lcu|ltsc2016|4.7": "$(lcu|ltsc2016|3.5)", + "kb|ltsc2019|4.7.2": "$(kb|ltsc2019|3.5)", + "lcu|ltsc2019|4.7.2": "$(lcu|ltsc2019|3.5)", "4.8-is-security-release": true, "4.8-is-security-release|ltsc2022": "$(4.8-is-security-release)", @@ -27,12 +29,16 @@ "lcu|ltsc2022|4.8": "$(lcu|ltsc2022|3.5)", "kb|ltsc2022|4.8.1": "kb5046264", "lcu|ltsc2022|4.8.1": "https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/updt/2024/10/windows10.0-kb5046264-x64-ndp481_1e80ccd86015f7fa036e2406579859e28beebdef.msu", + "kb|ltsc2025|4.8.1": "$(kb|ltsc2025|3.5)", + "lcu|ltsc2025|4.8.1": "$(lcu|ltsc2025|3.5)", // Defines the patch info for the default .NET Fx version installed in the OS - "kb|ltsc2022|default": "$(kb|ltsc2022|4.8)", - "lcu|ltsc2022|default": "$(lcu|ltsc2022|4.8)", "kb|ltsc2019|default": "$(kb|ltsc2019|4.7.2)", "lcu|ltsc2019|default": "$(lcu|ltsc2019|4.7.2)", + "kb|ltsc2022|default": "$(kb|ltsc2022|4.8)", + "lcu|ltsc2022|default": "$(lcu|ltsc2022|4.8)", + "kb|ltsc2025|default": "$(kb|ltsc2025|4.8.1)", + "lcu|ltsc2025|default": "$(lcu|ltsc2025|4.8.1)", "nuget|version": "6.11.1", diff --git a/src/aspnet/3.5/windowsservercore-ltsc2025/Dockerfile b/src/aspnet/3.5/windowsservercore-ltsc2025/Dockerfile new file mode 100644 index 000000000..dfc0133c6 --- /dev/null +++ b/src/aspnet/3.5/windowsservercore-ltsc2025/Dockerfile @@ -0,0 +1,17 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/framework/runtime +FROM $REPO:3.5-20250106-windowsservercore-ltsc2025 + +RUN dism /Online /Quiet /Enable-Feature /All /FeatureName:IIS-WebServerRole /FeatureName:IIS-ASPNET ` + && dism /Online /Quiet /Disable-Feature /FeatureName:IIS-WebServerManagementTools ` + && del /q "C:\inetpub\wwwroot\*" ` + && for /D %p IN ("C:\inetpub\wwwroot\*") DO rmdir "%p" /s /q ` + && curl -fSLo ServiceMonitor.exe https://dotnetbinaries.blob.core.windows.net/servicemonitor/2.0.1.10/ServiceMonitor.exe ` + && %windir%\System32\inetsrv\appcmd set apppool /apppool.name:DefaultAppPool /managedRuntimeVersion:v2.0 ` + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen update ` + && %windir%\Microsoft.NET\Framework\v4.0.30319\ngen update + +EXPOSE 80 + +ENTRYPOINT ["C:\\ServiceMonitor.exe", "w3svc"] diff --git a/src/aspnet/4.8.1/windowsservercore-ltsc2025/Dockerfile b/src/aspnet/4.8.1/windowsservercore-ltsc2025/Dockerfile new file mode 100644 index 000000000..7beb9068d --- /dev/null +++ b/src/aspnet/4.8.1/windowsservercore-ltsc2025/Dockerfile @@ -0,0 +1,36 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/framework/runtime +FROM $REPO:4.8.1-20250106-windowsservercore-ltsc2025 + +RUN dism /Online /Quiet /Enable-Feature /All /FeatureName:IIS-WebServerRole /FeatureName:NetFx4Extended-ASPNET45 /FeatureName:IIS-ASPNET45 ` + && dism /Online /Quiet /Disable-Feature /FeatureName:IIS-WebServerManagementTools ` + && del /q "C:\inetpub\wwwroot\*" ` + && for /D %p IN ("C:\inetpub\wwwroot\*") DO rmdir "%p" /s /q ` + && curl -fSLo ServiceMonitor.exe https://dotnetbinaries.blob.core.windows.net/servicemonitor/2.0.1.10/ServiceMonitor.exe ` + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen update ` + && %windir%\Microsoft.NET\Framework\v4.0.30319\ngen update + +# Install 2.9.0 Roslyn compilers +RUN curl -fSLo microsoft.net.compilers.2.9.0.zip https://api.nuget.org/packages/microsoft.net.compilers.2.9.0.nupkg ` + && mkdir C:\RoslynCompilers ` + && tar -C C:\RoslynCompilers -zxf microsoft.net.compilers.2.9.0.zip ` + && del microsoft.net.compilers.2.9.0.zip ` + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen install C:\RoslynCompilers\tools\csc.exe /ExeConfig:C:\RoslynCompilers\tools\csc.exe ` + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen install C:\RoslynCompilers\tools\vbc.exe /ExeConfig:C:\RoslynCompilers\tools\vbc.exe ` + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen install C:\RoslynCompilers\tools\VBCSCompiler.exe /ExeConfig:C:\RoslynCompilers\tools\VBCSCompiler.exe + +# Install 3.6.0 Roslyn compilers +RUN curl -fSLo microsoft.net.compilers.3.6.0.zip https://api.nuget.org/packages/microsoft.net.compilers.3.6.0.nupkg ` + && mkdir C:\RoslynCompilers-3.6.0 ` + && tar -C C:\RoslynCompilers-3.6.0 -zxf microsoft.net.compilers.3.6.0.zip ` + && del microsoft.net.compilers.3.6.0.zip ` + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen install C:\RoslynCompilers-3.6.0\tools\csc.exe /ExeConfig:C:\RoslynCompilers-3.6.0\tools\csc.exe ` + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen install C:\RoslynCompilers-3.6.0\tools\vbc.exe /ExeConfig:C:\RoslynCompilers-3.6.0\tools\vbc.exe ` + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen install C:\RoslynCompilers-3.6.0\tools\VBCSCompiler.exe /ExeConfig:C:\RoslynCompilers-3.6.0\tools\VBCSCompiler.exe + +ENV ROSLYN_COMPILER_LOCATION=C:\RoslynCompilers-3.6.0\tools + +EXPOSE 80 + +ENTRYPOINT ["C:\\ServiceMonitor.exe", "w3svc"] diff --git a/src/runtime/3.5/windowsservercore-ltsc2025/Dockerfile b/src/runtime/3.5/windowsservercore-ltsc2025/Dockerfile new file mode 100644 index 000000000..87a346228 --- /dev/null +++ b/src/runtime/3.5/windowsservercore-ltsc2025/Dockerfile @@ -0,0 +1,27 @@ +# escape=` + +FROM mcr.microsoft.com/windows/servercore:ltsc2025-amd64 + +ENV ` + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true ` + COMPLUS_NGenProtectedProcess_FeatureEnabled=0 + +RUN ` + # Install .NET Fx 3.5 + dism /Online /Add-Capability /CapabilityName:NetFx3 ` + ` + # Apply latest patch + && curl -fSLo patch.msu https://catalog.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/bbe78019-f312-48bc-9949-7392807d86c2/public/windows11.0-kb5045934-x64-ndp481_fa9c3adfb0532eb8f4e521f4fb92a179380184c5.msu ` + && mkdir patch ` + && expand patch.msu patch -F:* ` + && del /F /Q patch.msu ` + && dism /Online /Quiet /Add-Package /PackagePath:C:\patch\windows11.0-KB5045934-x64-ndp481.cab ` + && rmdir /S /Q patch ` + ` + # Ngen top of assembly graph to optimize a set of frequently used assemblies + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen install "Microsoft.PowerShell.Utility.Activities, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" ` + # To optimize 32-bit assemblies, uncomment the next line + # && %windir%\Microsoft.NET\Framework\v4.0.30319\ngen install "Microsoft.PowerShell.Utility.Activities, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" ` + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen update ` + && %windir%\Microsoft.NET\Framework\v4.0.30319\ngen update diff --git a/src/runtime/4.8.1/windowsservercore-ltsc2025/Dockerfile b/src/runtime/4.8.1/windowsservercore-ltsc2025/Dockerfile new file mode 100644 index 000000000..44eaf0650 --- /dev/null +++ b/src/runtime/4.8.1/windowsservercore-ltsc2025/Dockerfile @@ -0,0 +1,25 @@ +# escape=` + +FROM mcr.microsoft.com/windows/servercore:ltsc2025-amd64 + +ENV ` + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true ` + COMPLUS_RUNNING_IN_CONTAINER=1 ` + COMPLUS_NGenProtectedProcess_FeatureEnabled=0 + +RUN ` + # Apply latest patch + curl -fSLo patch.msu https://catalog.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/bbe78019-f312-48bc-9949-7392807d86c2/public/windows11.0-kb5045934-x64-ndp481_fa9c3adfb0532eb8f4e521f4fb92a179380184c5.msu ` + && mkdir patch ` + && expand patch.msu patch -F:* ` + && del /F /Q patch.msu ` + && dism /Online /Quiet /Add-Package /PackagePath:C:\patch\windows11.0-KB5045934-x64-ndp481.cab ` + && rmdir /S /Q patch ` + ` + # Ngen top of assembly graph to optimize a set of frequently used assemblies + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen install "Microsoft.PowerShell.Utility.Activities, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" ` + # To optimize 32-bit assemblies, uncomment the next line + # && %windir%\Microsoft.NET\Framework\v4.0.30319\ngen install "Microsoft.PowerShell.Utility.Activities, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" ` + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen update ` + && %windir%\Microsoft.NET\Framework\v4.0.30319\ngen update diff --git a/src/sdk/3.5/windowsservercore-ltsc2025/Dockerfile b/src/sdk/3.5/windowsservercore-ltsc2025/Dockerfile new file mode 100644 index 000000000..30355e278 --- /dev/null +++ b/src/sdk/3.5/windowsservercore-ltsc2025/Dockerfile @@ -0,0 +1,82 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/framework/runtime +FROM $REPO:3.5-20250106-windowsservercore-ltsc2025 + +ENV ` + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false ` + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true ` + # NuGet version to install + NUGET_VERSION=6.11.1 ` + # Install location of Roslyn + ROSLYN_COMPILER_LOCATION="C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\Roslyn" + +# Install NuGet CLI +RUN mkdir "%ProgramFiles%\NuGet\latest" ` + && curl -fSLo "%ProgramFiles%\NuGet\nuget.exe" https://dist.nuget.org/win-x86-commandline/v%NUGET_VERSION%/nuget.exe ` + && mklink "%ProgramFiles%\NuGet\latest\nuget.exe" "%ProgramFiles%\NuGet\nuget.exe" + +# Install VS components +RUN ` + # Install VS Test Agent + curl -fSLo vs_TestAgent.exe https://aka.ms/vs/17/release/vs_TestAgent.exe ` + && start /w vs_TestAgent --quiet --norestart --nocache --wait --installPath "%ProgramFiles(x86)%\Microsoft Visual Studio\2022\TestAgent" ` + && powershell -Command "if ($err = dir $Env:TEMP -Filter dd_setup_*_errors.log | where Length -gt 0 | Get-Content) { throw $err }" ` + && del vs_TestAgent.exe ` + ` + # Install VS Build Tools + && curl -fSLo vs_BuildTools.exe https://aka.ms/vs/17/release/vs_BuildTools.exe ` + && start /w vs_BuildTools ^ ` + --installPath "%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools" ^ ` + --add Microsoft.Component.ClickOnce.MSBuild ^ ` + --add Microsoft.Net.Component.4.8.SDK ^ ` + --add Microsoft.NetCore.Component.Runtime.8.0 ^ ` + --add Microsoft.NetCore.Component.Runtime.9.0 ^ ` + --add Microsoft.NetCore.Component.SDK ^ ` + --add Microsoft.VisualStudio.Component.NuGet.BuildTools ^ ` + --add Microsoft.VisualStudio.Component.WebDeploy ^ ` + --add Microsoft.VisualStudio.Web.BuildTools.ComponentGroup ^ ` + --add Microsoft.VisualStudio.Workload.MSBuildTools ^ ` + --quiet --norestart --nocache --wait ` + && powershell -Command "if ($err = dir $Env:TEMP -Filter dd_setup_*_errors.log | where Length -gt 0 | Get-Content) { throw $err }" ` + && del vs_BuildTools.exe ` + ` + # Trigger dotnet first run experience by running arbitrary cmd + && "%ProgramFiles%\dotnet\dotnet" help ` + ` + # Workaround for issues with 64-bit ngen + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen uninstall "%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\SecAnnotate.exe" ` + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen uninstall "%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\WinMDExp.exe" ` + ` + # ngen assemblies queued by VS installers + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen update ` + ` + # Cleanup + && (for /D %i in ("%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\*") do rmdir /S /Q "%i") ` + && (for %i in ("%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\*") do if not "%~nxi" == "vswhere.exe" del "%~i") ` + && powershell Remove-Item -Force -Recurse "%TEMP%\*" ` + && rmdir /S /Q "%ProgramData%\Package Cache" + +# Set PATH in one layer to keep image size down. +RUN powershell setx /M PATH $(${Env:PATH} ` + + \";${Env:ProgramFiles}\NuGet\" ` + + \";${Env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\TestAgent\Common7\IDE\CommonExtensions\Microsoft\TestWindow\" ` + + \";${Env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\amd64\" ` + + \";${Env:ProgramFiles(x86)}\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\" ` + + \";${Env:ProgramFiles(x86)}\Microsoft SDKs\ClickOnce\SignTool\") + +# Install Targeting Packs +RUN powershell " ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + @('4.0', '4.5.2', '4.6.2', '4.7.2', '4.8', '4.8.1') ` + | %{ ` + Invoke-WebRequest ` + -UseBasicParsing ` + -Uri https://dotnetbinaries.blob.core.windows.net/referenceassemblies/v${_}.zip ` + -OutFile referenceassemblies.zip; ` + Expand-Archive referenceassemblies.zip -DestinationPath \"${Env:ProgramFiles(x86)}\Reference Assemblies\Microsoft\Framework\.NETFramework\"; ` + Remove-Item -Force referenceassemblies.zip; ` + }" diff --git a/src/sdk/4.8.1/windowsservercore-ltsc2025/Dockerfile b/src/sdk/4.8.1/windowsservercore-ltsc2025/Dockerfile new file mode 100644 index 000000000..b80b3cfd2 --- /dev/null +++ b/src/sdk/4.8.1/windowsservercore-ltsc2025/Dockerfile @@ -0,0 +1,82 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/framework/runtime +FROM $REPO:4.8.1-20250106-windowsservercore-ltsc2025 + +ENV ` + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false ` + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true ` + # NuGet version to install + NUGET_VERSION=6.11.1 ` + # Install location of Roslyn + ROSLYN_COMPILER_LOCATION="C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\Roslyn" + +# Install NuGet CLI +RUN mkdir "%ProgramFiles%\NuGet\latest" ` + && curl -fSLo "%ProgramFiles%\NuGet\nuget.exe" https://dist.nuget.org/win-x86-commandline/v%NUGET_VERSION%/nuget.exe ` + && mklink "%ProgramFiles%\NuGet\latest\nuget.exe" "%ProgramFiles%\NuGet\nuget.exe" + +# Install VS components +RUN ` + # Install VS Test Agent + curl -fSLo vs_TestAgent.exe https://aka.ms/vs/17/release/vs_TestAgent.exe ` + && start /w vs_TestAgent --quiet --norestart --nocache --wait --installPath "%ProgramFiles(x86)%\Microsoft Visual Studio\2022\TestAgent" ` + && powershell -Command "if ($err = dir $Env:TEMP -Filter dd_setup_*_errors.log | where Length -gt 0 | Get-Content) { throw $err }" ` + && del vs_TestAgent.exe ` + ` + # Install VS Build Tools + && curl -fSLo vs_BuildTools.exe https://aka.ms/vs/17/release/vs_BuildTools.exe ` + && start /w vs_BuildTools ^ ` + --installPath "%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools" ^ ` + --add Microsoft.Component.ClickOnce.MSBuild ^ ` + --add Microsoft.Net.Component.4.8.1.SDK ^ ` + --add Microsoft.NetCore.Component.Runtime.8.0 ^ ` + --add Microsoft.NetCore.Component.Runtime.9.0 ^ ` + --add Microsoft.NetCore.Component.SDK ^ ` + --add Microsoft.VisualStudio.Component.NuGet.BuildTools ^ ` + --add Microsoft.VisualStudio.Component.WebDeploy ^ ` + --add Microsoft.VisualStudio.Web.BuildTools.ComponentGroup ^ ` + --add Microsoft.VisualStudio.Workload.MSBuildTools ^ ` + --quiet --norestart --nocache --wait ` + && powershell -Command "if ($err = dir $Env:TEMP -Filter dd_setup_*_errors.log | where Length -gt 0 | Get-Content) { throw $err }" ` + && del vs_BuildTools.exe ` + ` + # Trigger dotnet first run experience by running arbitrary cmd + && "%ProgramFiles%\dotnet\dotnet" help ` + ` + # Workaround for issues with 64-bit ngen + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen uninstall "%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8.1 Tools\SecAnnotate.exe" ` + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen uninstall "%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8.1 Tools\WinMDExp.exe" ` + ` + # ngen assemblies queued by VS installers + && %windir%\Microsoft.NET\Framework64\v4.0.30319\ngen update ` + ` + # Cleanup + && (for /D %i in ("%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\*") do rmdir /S /Q "%i") ` + && (for %i in ("%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\*") do if not "%~nxi" == "vswhere.exe" del "%~i") ` + && powershell Remove-Item -Force -Recurse "%TEMP%\*" ` + && rmdir /S /Q "%ProgramData%\Package Cache" + +# Set PATH in one layer to keep image size down. +RUN powershell setx /M PATH $(${Env:PATH} ` + + \";${Env:ProgramFiles}\NuGet\" ` + + \";${Env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\TestAgent\Common7\IDE\CommonExtensions\Microsoft\TestWindow\" ` + + \";${Env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\amd64\" ` + + \";${Env:ProgramFiles(x86)}\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8.1 Tools\" ` + + \";${Env:ProgramFiles(x86)}\Microsoft SDKs\ClickOnce\SignTool\") + +# Install Targeting Packs +RUN powershell " ` + $ErrorActionPreference = 'Stop'; ` + $ProgressPreference = 'SilentlyContinue'; ` + @('4.0', '4.5.2', '4.6.2', '4.7.2', '4.8', '4.8.1') ` + | %{ ` + Invoke-WebRequest ` + -UseBasicParsing ` + -Uri https://dotnetbinaries.blob.core.windows.net/referenceassemblies/v${_}.zip ` + -OutFile referenceassemblies.zip; ` + Expand-Archive referenceassemblies.zip -DestinationPath \"${Env:ProgramFiles(x86)}\Reference Assemblies\Microsoft\Framework\.NETFramework\"; ` + Remove-Item -Force referenceassemblies.zip; ` + }" diff --git a/src/wcf/4.8.1/windowsservercore-ltsc2025/Dockerfile b/src/wcf/4.8.1/windowsservercore-ltsc2025/Dockerfile new file mode 100644 index 000000000..cd61f3732 --- /dev/null +++ b/src/wcf/4.8.1/windowsservercore-ltsc2025/Dockerfile @@ -0,0 +1,11 @@ +# escape=` + +ARG REPO=mcr.microsoft.com/dotnet/framework/aspnet +FROM $REPO:4.8.1-20250106-windowsservercore-ltsc2025 + +# Install Windows components required for WCF service hosted on IIS +RUN dism /Online /Quiet /Enable-Feature /All /FeatureName:WCF-HTTP-Activation45 /FeatureName:WCF-TCP-Activation45 /FeatureName:IIS-WebSockets + +# Enable net.tcp protocol for default web site on IIS +RUN %windir%\system32\inetsrv\appcmd set app "Default Web Site/" /enabledProtocols:"http,net.tcp" +EXPOSE 808 diff --git a/tests/Microsoft.DotNet.Framework.Docker.Tests/OsVersion.cs b/tests/Microsoft.DotNet.Framework.Docker.Tests/OsVersion.cs index 51d6a56ea..08608d16f 100644 --- a/tests/Microsoft.DotNet.Framework.Docker.Tests/OsVersion.cs +++ b/tests/Microsoft.DotNet.Framework.Docker.Tests/OsVersion.cs @@ -9,5 +9,6 @@ public static class OsVersion public const string WSC_LTSC2016 = "windowsservercore-ltsc2016"; public const string WSC_LTSC2019 = "windowsservercore-ltsc2019"; public const string WSC_LTSC2022 = "windowsservercore-ltsc2022"; + public const string WSC_LTSC2025 = "windowsservercore-ltsc2025"; } } diff --git a/tests/Microsoft.DotNet.Framework.Docker.Tests/RuntimeSdkImageTests.cs b/tests/Microsoft.DotNet.Framework.Docker.Tests/RuntimeSdkImageTests.cs index 5434a7ff4..02ee0fa37 100644 --- a/tests/Microsoft.DotNet.Framework.Docker.Tests/RuntimeSdkImageTests.cs +++ b/tests/Microsoft.DotNet.Framework.Docker.Tests/RuntimeSdkImageTests.cs @@ -44,10 +44,8 @@ public void VerifyImagesWithWebApps(ImageDescriptor imageDescriptor) [MemberData(nameof(GetImageData))] public void ContainerLimits(ImageDescriptor imageDescriptor) { - // Container limits are only supported on 4.8 for Server 2019 and 2022. - if (imageDescriptor.Version != "4.8" || - (imageDescriptor.OsVariant != OsVersion.WSC_LTSC2019 && - imageDescriptor.OsVariant != OsVersion.WSC_LTSC2022)) + // Container limits are only supported on 4.8 and Server 2019 and later + if (imageDescriptor.Version != "4.8" || imageDescriptor.OsVariant == OsVersion.WSC_LTSC2016) { _imageTestHelper.OutputHelper.WriteLine("Test skipped due to unsupported version."); return; diff --git a/tests/Microsoft.DotNet.Framework.Docker.Tests/TestData.cs b/tests/Microsoft.DotNet.Framework.Docker.Tests/TestData.cs index 818443f5b..1d030ec66 100644 --- a/tests/Microsoft.DotNet.Framework.Docker.Tests/TestData.cs +++ b/tests/Microsoft.DotNet.Framework.Docker.Tests/TestData.cs @@ -12,6 +12,7 @@ internal static class TestData new ImageDescriptor { Version = "3.5", SdkVersion = "3.5", OsVariant = OsVersion.WSC_LTSC2016 }, new ImageDescriptor { Version = "3.5", SdkVersion = "3.5", OsVariant = OsVersion.WSC_LTSC2019 }, new ImageDescriptor { Version = "3.5", SdkVersion = "3.5", OsVariant = OsVersion.WSC_LTSC2022 }, + new ImageDescriptor { Version = "3.5", SdkVersion = "3.5", OsVariant = OsVersion.WSC_LTSC2025 }, new ImageDescriptor { Version = "4.6.2", SdkVersion = "4.8", OsVariant = OsVersion.WSC_LTSC2016 }, new ImageDescriptor { Version = "4.7", SdkVersion = "4.8", OsVariant = OsVersion.WSC_LTSC2016 }, new ImageDescriptor { Version = "4.7.1", SdkVersion = "4.8", OsVariant = OsVersion.WSC_LTSC2016 }, @@ -21,6 +22,7 @@ internal static class TestData new ImageDescriptor { Version = "4.8", SdkVersion = "4.8", OsVariant = OsVersion.WSC_LTSC2019 }, new ImageDescriptor { Version = "4.8", SdkVersion = "4.8", OsVariant = OsVersion.WSC_LTSC2022 }, new ImageDescriptor { Version = "4.8.1", SdkVersion = "4.8.1", OsVariant = OsVersion.WSC_LTSC2022 }, + new ImageDescriptor { Version = "4.8.1", SdkVersion = "4.8.1", OsVariant = OsVersion.WSC_LTSC2025 }, }; public static IEnumerable GetImageData() => s_imageData;