运行测试时.net sdk和.net核心之间的不兼容性

时间:2018-08-23 15:43:48

标签: .net .net-core sonarqube-scan

我们使用msbuild-sonar-scanner图像在.net应用程序上运行一些测试。

在构建Dockerfile图像的sonar-scanner内,有时我们执行:

  && echo "deb http://download.mono-project.com/repo/debian stretch main" | tee /etc/apt/sources.list.d/mono-official.list \
    && curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg \
    && mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg \
    && sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/dotnetdev.list' \
    && apt-get update \
    && apt-get install -y --no-install-recommends \
    dotnet-sdk-2.1.4 \

但是,测试执行会产生以下错误

/usr/share/dotnet/sdk/2.1.4/Sdks/Microsoft.NET.Sdk/build/Microsoft.NET.TargetFrameworkInference.targets(135,5): error : The current .NET SDK does not support targeting .NET Core 2.1.  Either target .NET Core 2.0 or lower, or use a version of the .NET SDK that supports .NET Core 2.1. [/builds/enorasys-ss/essapi/src/socstreamsAPI/EssApi.csproj]

鉴于我们使用2.1.4的{​​{1}}版本,并且这是debian存储库中提供的最新版本,因此这是怎么可能的:

dotnet-sdk

1 个答案:

答案 0 :(得分:1)

TLDR:apt-get install dotnet-sdk-2.1.401,而不是dotnet-sdk-2.1.4

版本号与十进制数字不同。例如,2.1.4的版本比2.1.300的版本低得多。

您正在使用.NET Core 2.1.4 SDK,它实际上是仅支持.NET Core Runtime 2.0或更早版本的旧版本。您要使用.NET Core 2.1.300或更高版本(例如2.1.301或2.1.400或2.1.401)。 2.1.300之后的任何版本都可以定位.NET Core Runtime 2.1。

.NET Core SDK和运行时版本不完全以“显而易见”的方式匹配。据我了解,这是这些版本:

  • .NET Core SDK 2.0可以针对.NET Core Runtime 2.0或更早版本
  • .NET Core SDK 2.1.0(直到2.1.200)也仅针对.NET Core Runtime 2.0或更早版本
  • .NET Core SDK 2.1.300及更高版本(包括2.1.301、2.1.400和2.1.401)可以定位.NET Core 2.1以及较早版本。

您还可以在https://www.microsoft.com/net/download/dotnet-core/2.1上看到此内容,它将向您显示所有可以针对.NET Core运行时2.1的SDK下载。最早的版本是2.1.300,最新的是2.1.401。另一方面,您可以在https://www.microsoft.com/net/download/dotnet-core/2.0上看到仅针对运行时2.0的SDK。您可以看到SDK 2.1.4仅针对Runtime 2.0。