在docker中安装.net framework 4.7.2

问题描述 投票:1回答:3

我是.Net环境的新手,我正在尝试在这里为我的公司实施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

请帮我一样。我真的被卡住了,在互联网上找不到任何东西。

asp.net docker dockerfile .net-framework-version .net-4.7.2
3个回答
1
投票

您可以使用,而不是自己安装.NET-Framework

来自microsoft / aspnet

要么

FROM microsoft / dotnet-framework:4.7.2

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

或者你需要的任何版本。

有关docker hub上的所有图像,请参阅https://hub.docker.com/u/microsoft/


1
投票

所以我在网上搜索了一些东西,我发现有一个解决方案,如果我提到在我的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文件中,现在一切正常并且很好。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.