Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从一个Docker映像定位多个.NET核心版本?_Docker_.net Core - Fatal编程技术网

如何从一个Docker映像定位多个.NET核心版本?

如何从一个Docker映像定位多个.NET核心版本?,docker,.net-core,Docker,.net Core,我有一个目标库。为了验证兼容性,我想使用.NETCore的当前和长期支持(LTS)版本运行单元测试。在撰写这一问题时,这些问题是: 目标框架 目标框架名字对象(TFM) .NET 5.0(当前版本) net5.0 .NET核心3.1(LTS) netcoreapp3.1 .NET核心2.1(LTS) netcoreapp2.1 只需将Docker映像用于最新的.NET版本(当前为mcr.microsoft.com/dotnet/sdk:5.0)。它能够构建针对不同版本的项目。这与在开发人员机器上

我有一个目标库。为了验证兼容性,我想使用.NETCore的当前和长期支持(LTS)版本运行单元测试。在撰写这一问题时,这些问题是:

目标框架 目标框架名字对象(TFM) .NET 5.0(当前版本) net5.0 .NET核心3.1(LTS) netcoreapp3.1 .NET核心2.1(LTS) netcoreapp2.1
只需将Docker映像用于最新的.NET版本(当前为
mcr.microsoft.com/dotnet/sdk:5.0
)。它能够构建针对不同版本的项目。这与在开发人员机器上本地执行此操作的方式相同。您可以在您的计算机上安装5.0SDK,并构建以2.1、3.1或5.0为目标的项目

如果您希望在同一个容器中运行单元测试,则需要为5.0以外的每个版本安装额外的运行时。这将根据您的目标操作系统的不同而有所不同,但您可以在上找到有关安装的详细信息。例如,在Debian上,您可以通过以下方式安装ASP.NET 3.1运行时:

wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && \
dpkg -i packages-microsoft-prod.deb && \
apt-get update && \
apt-get install -y apt-transport-https && \
apt-get update && \
apt-get install -y aspnetcore-runtime-3.1

我试图避免构建自定义映像和编写额外的运行时脚本,因此我的变体是在多个容器上运行构建/测试(
sdk:2.1
sdk:3.1

有趣的是,有多个目标:

<PropertyGroup>
  <TargetFrameworks>netcoreapp2.1;netcoreapp3.1</TargetFrameworks>
</PropertyGroup>
我可以在
sdk:2.1
上构建/测试它:

dotnet test ./test/Tests --configuration Release /p:TestTargetFramework=netcoreapp2.1
dotnet test ./test/Tests --configuration Release /p:TestTargetFramework=netcoreapp3.1
sdk:3.1

dotnet test ./test/Tests --configuration Release /p:TestTargetFramework=netcoreapp2.1
dotnet test ./test/Tests --configuration Release /p:TestTargetFramework=netcoreapp3.1