在Docker中安装.net Framework 4.7.2

时间:2019-01-11 11:10:29

标签: asp.net docker dockerfile .net-framework-version .net-4.7.2

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

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

请帮助我。我真的很困,无法在互联网上找到任何东西。

3 个答案:

答案 0 :(得分:1)

您可以使用

来代替自己安装NET Framework。
  

FROM microsoft / aspnet

  

FROM microsoft / dotnet-framework:4.7.2

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

或您需要的任何版本。

请参见https://hub.docker.com/u/microsoft/ 对于docker hub上的所有图像

答案 1 :(得分:1)

因此,我在网上搜索了一些东西,然后发现有一种解决方案,如果我提到要在docker文件中的powershell上安装Chocolatey。我已经从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文件中,现在一切正常。

答案 2 :(得分:0)

我没有为您提供答案,但是建议您找到与您公司使用的源代码和库兼容的.net核心版本; 我认为使用linux容器而不是Windows会更容易