在 docker 中安装 .net Framework 4.7.2

install .net framework 4.7.2 in docker

我是 .Net 环境的新手,我正在尝试在这里为我的公司实施 docker。他们之前使用的是 4.5,所以我在 docker 文件中使用了以下语句:

RUN Install-WindowsFeature NET-Framework-45-ASPNET ; \
Install-WindowsFeature Web-Asp-Net45

现在,我想对框架 4.7.2 做同样的事情 - 我认为如果我 运行 这样的语句就可以了:

RUN Install-WindowsFeature NET-Framework-472-ASPNET ; \
Install-WindowsFeature Web-Asp-Net472

但它不是这样工作的,而是显示以下错误:

Install-WindowsFeature : ArgumentNotValid: The role, role service, or feature
name is not valid: 'NET-Framework-472-ASPNET'. The name was not found.
At line:1 char:1
+ Install-WindowsFeature NET-Framework-472-ASPNET ; Install-WindowsFeat ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (NET-Framework-472-ASPNET:Strin
   g) [Install-WindowsFeature], Exception
    + FullyQualifiedErrorId : NameDoesNotExist,Microsoft.Windows.ServerManager
   .Commands.AddWindowsFeatureCommand

请帮我做同样的事情。我真的卡住了,在互联网上找不到任何东西。

您可以使用

代替自己安装 NET-Framework

FROM microsoft/aspnet

FROM microsoft/dotnet-framework:4.7.2

使用已安装 dotnet 框架的图像。

或您需要的任何版本。

https://hub.docker.com/u/microsoft/ 对于 docker hub

上的所有图片

所以我在网上搜索了一些东西,我发现有一个解决方案,如果我提到在我的 docker 文件中的 powershell 上安装 chocolatey。这个参考,我从 anothony chu 的 this post 那里收到:

所以我用了:

# Install Chocolatey
RUN @powershell -NoProfile -ExecutionPolicy Bypass -Command "$env:ChocolateyUseWindowsCompression='false'; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
RUN powershell add-windowsfeature web-asp-net45 \
&& choco install dotnet4.7 --allow-empty-checksums -y \

在我的 docker 文件中,现在一切正常。