【问题标题】:Incompatibility between .net sdk and .net core when running tests运行测试时 .net sdk 和 .net core 之间不兼容
【发布时间】:2018-08-23 15:43:48
【问题描述】:

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

在构建sonar-scanner 图像的Dockerfile 中,我们在某些时候执行:

  && 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]

这怎么可能,因为我们使用的是 dotnet-sdk2.1.4 版本,并且这是 debian repos 提供的最新版本:

$ sudo apt-cache search dotnet  | grep dotnet-sdk
dotnet-sdk-2.0.0 - Microsoft .NET Core SDK - 2.0.0
dotnet-sdk-2.0.2 - Microsoft .NET Core SDK - 2.0.2
dotnet-sdk-2.0.3 - Microsoft .NET Core SDK - 2.0.3
dotnet-sdk-2.1 - Microsoft .NET Core SDK 2.1.401
dotnet-sdk-2.1.101 - Microsoft .NET Core SDK - 2.1.101
dotnet-sdk-2.1.103 - Microsoft .NET Core SDK - 2.1.103
dotnet-sdk-2.1.104 - Microsoft .NET Core SDK - 2.1.104
dotnet-sdk-2.1.105 - Microsoft .NET Core SDK - 2.1.105
dotnet-sdk-2.1.2 - Microsoft .NET Core SDK - 2.1.2
dotnet-sdk-2.1.200 - Microsoft .NET Core SDK - 2.1.200
dotnet-sdk-2.1.201 - Microsoft .NET Core SDK - 2.1.201
dotnet-sdk-2.1.202 - Microsoft .NET Core SDK - 2.1.202
dotnet-sdk-2.1.3 - Microsoft .NET Core SDK - 2.1.3
dotnet-sdk-2.1.300-preview2-008533 - Microsoft .NET Core SDK 2.1.300 - Preview
dotnet-sdk-2.1.300-rc1-008673 - Microsoft .NET Core SDK 2.1.300 - rc1
dotnet-sdk-2.1.4 - Microsoft .NET Core SDK - 2.1.4

【问题讨论】:

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


【解决方案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。另一方面,您可以在此处查看只能针对运行时 2.0 的 SDK:https://www.microsoft.com/net/download/dotnet-core/2.0。您可以看到 SDK 2.1.4 仅针对 Runtime 2.0。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-16
    • 2012-03-08
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    相关资源
    最近更新 更多