似乎找不到有关如何将两个.NET版本3.5和4.8安装到Docker容器中的任何资源。
我当前正在使用:
FROM mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2019
作为我的基本图片。但也希望.NET 3.5具有向后兼容性。我尝试使用他们的.NET 3.5 dockerfile进行构建,但具有上述基础映像的尝试失败了。这是出于CICD的目的,创建了一个构建环境。
答案 0 :(得分:0)
sdk:3.5-windowsservercore-ltsc2019
image确实包含3.5和4.8。你尝试过吗?
这对于构建应用程序是有用的,但是如果您想在Windows Server 2019的运行时相关映像中同时运行3.5和4.8,则没有这样的官方映像。如果您特别需要Windows Server 2019映像,则需要自己安装3.5。没有2019年的官方图像同时包含3.5和4.8。其他较新版本的Windows(1903+)默认情况下安装了4.8,因此在这种情况下,您可以使用其相应的3.5映像,同时安装3.5和4.8。
这是一个Dockerfile示例,说明了如何在Windows Server 2019的4.8运行时映像上安装3.5。
# escape=`
FROM mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019
SHELL ["cmd", "/S", "/C"]
# Install .NET Fx 3.5
RUN curl -fSLo microsoft-windows-netfx3.zip https://dotnetbinaries.blob.core.windows.net/dockerassets/microsoft-windows-netfx3-1809.zip `
&& tar -zxf microsoft-windows-netfx3.zip `
&& del /F /Q microsoft-windows-netfx3.zip `
&& DISM /Online /Quiet /Add-Package /PackagePath:.\microsoft-windows-netfx3-ondemand-package~31bf3856ad364e35~amd64~~.cab `
&& del microsoft-windows-netfx3-ondemand-package~31bf3856ad364e35~amd64~~.cab `
&& powershell Remove-Item -Force -Recurse ${Env:TEMP}\*
# Apply latest patch
# This content will need to change each month as new security fixes are released for Windows. You can find the latest content that should be placed here by looking at the official Dockerfile: https://github.com/microsoft/dotnet-framework-docker/blob/master/src/runtime/3.5/windowsservercore-ltsc2019/Dockerfile#L13
# ngen .NET Fx
ENV COMPLUS_NGenProtectedProcess_FeatureEnabled 0
RUN \Windows\Microsoft.NET\Framework64\v2.0.50727\ngen uninstall "Microsoft.Tpm.Commands, Version=10.0.0.0, Culture=Neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=amd64" `
&& \Windows\Microsoft.NET\Framework64\v2.0.50727\ngen update `
&& \Windows\Microsoft.NET\Framework\v2.0.50727\ngen update