Во-первых, важный момент:
Версии .NET Core, установленные в Windows, не имеют значения, когда дело доходит до док-контейнера.Все, что dotnet --version
говорит в Windows, не имеет значения.Docker-контейнер - это отдельная среда из среды Windows.На самом деле он работает в другом пользовательском пространстве (Linux, а не Windows).На нем может быть установлен совершенно другой набор программ и версий.
Теперь, возвращаясь назад, ошибка говорит:
error : The current .NET SDK does not support targeting .NET Core 2.2. Either target .NET Core 2.0 or lower, or use a version of the .NET SDK that supports .NET Core 2.2
Последняя часть этого сообщения об ошибке действительно важна.Это говорит вам о проблеме: вы используете .NET Core SDK (внутри контейнера Docker), который не может нацелиться на 2.2.
(Помните, что версия .NET Core SDK, обычно устанавливаемая в Windows, не имеет значения дляdocker?)
Так какую версию SDK вы используете внутри контейнера Docker?Посмотрите на Dockerfile
еще раз:
FROM microsoft/aspnetcore-build:2.0 AS build
Вы используете .NET Core SDK, который поддерживает ASP.NET Core 2.0.Другими словами, вы используете .NET Core SDK 2.0, и он поддерживает только целевой .NET Core 2.0.Вам нужно переключиться на SDK, который поддерживает .NET Core 2.2.
Измените FROM microsoft/aspnetcore:2.0 AS base
на FROM microsoft/aspnetcore:2.2 AS base
и FROM microsoft/aspnetcore-build:2.0 AS build
на FROM microsoft/aspnetcore-build:2.2 AS build
.
, который даст вам SDK, которыйпозволяет нацеливаться на .NET Core 2.2.
Редактировать: Ах, верно.Я что-то пропустил.
Образы контейнеров Microsoft описаны здесь .Вам нужно использовать microsoft/dotnet:2.2-sdk
для сборки (FROM microsoft/dotnet:2.2-sdk AS build
) и microsoft/dotnet:2.2-aspnetcore-runtime
для запуска (FROM microsoft/dotnet:2.2-aspnetcore-runtime as base
).