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