首页 > 解决方案 > .NET Core - Docker 构建在 global.json 中找不到 SDK 版本

问题描述

我有一个带有 global.json 的 .NET (Core) 5.0 解决方案,因为我想保留一个特定的 SDK 版本:

{
    "sdk": {
        "version": "5.0.302"
    }
}

5.0.302 安装在我的机器上,解决方案在 Visual Studio (for Mac) 中打开并且构建得很好,但是当我尝试从命令行使用 Docker 构建时,我得到:

A compatible installed .NET SDK for global.json version [5.0.302] from [/src/global.json] was not found.

我的 Dockerfile 中使用的图像是:

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build

我认为我不了解 global.json 文档。我尝试将全局版本更改为 5.0.0 并添加rollforward: latestFeature. 现在 Docker 将构建,但当我打开项目时 Visual Studio 不会构建:

.NET Core 5.0.0 SDK is required to build this application, and is not installed.

在这种情况下,我希望 VS 使用已安装的 5.0.302,但事实并非如此。

标签: docker.net-core

解决方案


虽然 5.0.302 SDK 未在 Microsoft 注册表中列出,但当我尝试提取它时它是可用的。

尝试将您的 Dockerfile 更改为

FROM mcr.microsoft.com/dotnet/sdk:5.0.302 AS build

我不知道微软多久清理一次他们的注册表,但你可能应该准备好让图像在某个时候消失。

如果可以,我建议您不要依赖特定版本的 SDK。


推荐阅读